V4L/DVB (12260): em28xx: make support work for the Pinnacle Hybrid Pro (eb1a:2881)
Setup the GPIOs properly and enable support for the DVB side of the Pinnacle Hybrid Pro USB stick. Thanks to Andreas Lunderhage for testing patches and providing a remote debug environment. Cc: Andreas Lunderhage <lunderhage@home.se> Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
ff69786b4c
commit
d5b3ba9cb3
|
@ -157,6 +157,20 @@ static struct em28xx_reg_seq evga_indtube_digital[] = {
|
||||||
{ -1, -1, -1, -1},
|
{ -1, -1, -1, -1},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Pinnacle Hybrid Pro eb1a:2881 */
|
||||||
|
static struct em28xx_reg_seq pinnacle_hybrid_pro_analog[] = {
|
||||||
|
{EM28XX_R08_GPIO, 0x6f, ~EM_GPIO_4, 10},
|
||||||
|
{ -1, -1, -1, -1},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct em28xx_reg_seq pinnacle_hybrid_pro_digital[] = {
|
||||||
|
{EM28XX_R08_GPIO, 0x6e, ~EM_GPIO_4, 10},
|
||||||
|
{EM2880_R04_GPO, 0x04, 0xff, 100},/* zl10353 reset */
|
||||||
|
{EM2880_R04_GPO, 0x0c, 0xff, 1},
|
||||||
|
{ -1, -1, -1, -1},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Callback for the most boards */
|
/* Callback for the most boards */
|
||||||
static struct em28xx_reg_seq default_tuner_gpio[] = {
|
static struct em28xx_reg_seq default_tuner_gpio[] = {
|
||||||
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
|
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
|
||||||
|
@ -1253,25 +1267,26 @@ struct em28xx_board em28xx_boards[] = {
|
||||||
},
|
},
|
||||||
[EM2881_BOARD_PINNACLE_HYBRID_PRO] = {
|
[EM2881_BOARD_PINNACLE_HYBRID_PRO] = {
|
||||||
.name = "Pinnacle Hybrid Pro",
|
.name = "Pinnacle Hybrid Pro",
|
||||||
.valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
||||||
.tuner_type = TUNER_XC2028,
|
.tuner_type = TUNER_XC2028,
|
||||||
.tuner_gpio = default_tuner_gpio,
|
.tuner_gpio = default_tuner_gpio,
|
||||||
.decoder = EM28XX_TVP5150,
|
.decoder = EM28XX_TVP5150,
|
||||||
|
.has_dvb = 1,
|
||||||
|
.dvb_gpio = pinnacle_hybrid_pro_digital,
|
||||||
.input = { {
|
.input = { {
|
||||||
.type = EM28XX_VMUX_TELEVISION,
|
.type = EM28XX_VMUX_TELEVISION,
|
||||||
.vmux = TVP5150_COMPOSITE0,
|
.vmux = TVP5150_COMPOSITE0,
|
||||||
.amux = EM28XX_AMUX_VIDEO,
|
.amux = EM28XX_AMUX_VIDEO,
|
||||||
.gpio = default_analog,
|
.gpio = pinnacle_hybrid_pro_analog,
|
||||||
}, {
|
}, {
|
||||||
.type = EM28XX_VMUX_COMPOSITE1,
|
.type = EM28XX_VMUX_COMPOSITE1,
|
||||||
.vmux = TVP5150_COMPOSITE1,
|
.vmux = TVP5150_COMPOSITE1,
|
||||||
.amux = EM28XX_AMUX_LINE_IN,
|
.amux = EM28XX_AMUX_LINE_IN,
|
||||||
.gpio = default_analog,
|
.gpio = pinnacle_hybrid_pro_analog,
|
||||||
}, {
|
}, {
|
||||||
.type = EM28XX_VMUX_SVIDEO,
|
.type = EM28XX_VMUX_SVIDEO,
|
||||||
.vmux = TVP5150_SVIDEO,
|
.vmux = TVP5150_SVIDEO,
|
||||||
.amux = EM28XX_AMUX_LINE_IN,
|
.amux = EM28XX_AMUX_LINE_IN,
|
||||||
.gpio = default_analog,
|
.gpio = pinnacle_hybrid_pro_analog,
|
||||||
} },
|
} },
|
||||||
},
|
},
|
||||||
[EM2882_BOARD_PINNACLE_HYBRID_PRO] = {
|
[EM2882_BOARD_PINNACLE_HYBRID_PRO] = {
|
||||||
|
@ -1641,6 +1656,7 @@ static struct em28xx_hash_table em28xx_eeprom_hash[] = {
|
||||||
{0x966a0441, EM2880_BOARD_KWORLD_DVB_310U, TUNER_XC2028},
|
{0x966a0441, EM2880_BOARD_KWORLD_DVB_310U, TUNER_XC2028},
|
||||||
{0x9567eb1a, EM2880_BOARD_EMPIRE_DUAL_TV, TUNER_XC2028},
|
{0x9567eb1a, EM2880_BOARD_EMPIRE_DUAL_TV, TUNER_XC2028},
|
||||||
{0xcee44a99, EM2882_BOARD_EVGA_INDTUBE, TUNER_XC2028},
|
{0xcee44a99, EM2882_BOARD_EVGA_INDTUBE, TUNER_XC2028},
|
||||||
|
{0xb8846b20, EM2881_BOARD_PINNACLE_HYBRID_PRO, TUNER_XC2028},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* I2C devicelist hash table for devices with generic USB IDs */
|
/* I2C devicelist hash table for devices with generic USB IDs */
|
||||||
|
|
|
@ -489,6 +489,7 @@ static int dvb_init(struct em28xx *dev)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EM2880_BOARD_TERRATEC_HYBRID_XS:
|
case EM2880_BOARD_TERRATEC_HYBRID_XS:
|
||||||
|
case EM2881_BOARD_PINNACLE_HYBRID_PRO:
|
||||||
dvb->frontend = dvb_attach(zl10353_attach,
|
dvb->frontend = dvb_attach(zl10353_attach,
|
||||||
&em28xx_terratec_xs_zl10353_xc3028,
|
&em28xx_terratec_xs_zl10353_xc3028,
|
||||||
&dev->i2c_adap);
|
&dev->i2c_adap);
|
||||||
|
|
Loading…
Reference in New Issue