V4L/DVB (11253): saa7134: fix RTD Embedded Technologies VFG7350 support.
Hans Verkuil [Sat, 28 Mar 2009 12:27:02 +0000 (09:27 -0300)]
This card has the saa6752hs on 7-bit address 0x21 instead of 0x20. Add
support in the card definition struct to select which address to use and
update the definitions accordingly.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

drivers/media/video/saa7134/saa7134-cards.c
drivers/media/video/saa7134/saa7134-core.c
drivers/media/video/saa7134/saa7134-empress.c
drivers/media/video/saa7134/saa7134.h

index 265a52f..3a03813 100644 (file)
@@ -273,6 +273,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
 
                .inputs         = {{
                        .name = name_comp1,
@@ -409,6 +410,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
                .tda9887_conf   = TDA9887_PRESENT,
                .gpiomask       = 0x820000,
                .inputs         = {{
@@ -819,6 +821,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
                .inputs         = {{
                        .name = name_comp1,
                        .vmux = 4,
@@ -978,6 +981,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
                .inputs         = {{
                        .name = name_comp1,
                        .vmux = 1,
@@ -2365,6 +2369,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x21,
                .inputs         = {{
                        .name   = "Composite 0",
                        .vmux   = 0,
@@ -4133,6 +4138,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
                .tda9887_conf   = TDA9887_PRESENT,
                .inputs         = { {
                        .name = name_tv,
@@ -4169,6 +4175,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
                .tda9887_conf   = TDA9887_PRESENT,
                .inputs         = { {
                        .name = name_tv,
@@ -4206,6 +4213,7 @@ struct saa7134_board saa7134_boards[] = {
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
+               .empress_addr   = 0x20,
                .tda9887_conf   = TDA9887_PRESENT,
                .inputs         = { {
                        .name = name_tv,
index 321f0d7..4c24c9c 100644 (file)
@@ -982,8 +982,9 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
        /* load i2c helpers */
        if (card_is_empress(dev)) {
                struct v4l2_subdev *sd =
-                       v4l2_i2c_new_subdev(&dev->i2c_adap, "saa6752hs",
-                               "saa6752hs", 0x20);
+                       v4l2_i2c_new_subdev(&dev->i2c_adap,
+                               "saa6752hs", "saa6752hs",
+                               saa7134_boards[dev->board].empress_addr);
 
                if (sd)
                        sd->grp_id = GRP_EMPRESS;
index c6cfe0f..9db3472 100644 (file)
@@ -416,8 +416,7 @@ static int empress_g_chip_ident(struct file *file, void *fh,
        if (chip->match.type == V4L2_CHIP_MATCH_I2C_DRIVER &&
            !strcmp(chip->match.name, "saa6752hs"))
                return saa_call_empress(dev, core, g_chip_ident, chip);
-       if (chip->match.type == V4L2_CHIP_MATCH_I2C_ADDR &&
-           chip->match.addr == 0x20)
+       if (chip->match.type == V4L2_CHIP_MATCH_I2C_ADDR)
                return saa_call_empress(dev, core, g_chip_ident, chip);
        return -EINVAL;
 }
index d1498e5..1139668 100644 (file)
@@ -332,6 +332,7 @@ struct saa7134_board {
        unsigned int            radio_type;
        unsigned char           tuner_addr;
        unsigned char           radio_addr;
+       unsigned char           empress_addr;
 
        unsigned int            tda9887_conf;
        unsigned int            tuner_config;