Commit 5d9aa9e5e8eb25585367caa034bba3cdc4f59f34

Authored by Matthias Schwarzott
Committed by Greg Kroah-Hartman
1 parent a2d8617dff

cx23885: Split Hauppauge WinTV Starburst from HVR4400 card entry

commit 721f3223f26bbe81c7e55f84188e74d99df50a16 upstream.

Unconditionally attaching Si2161/Si2165 demod driver
breaks Hauppauge WinTV Starburst.
So create own card entry for this.

Add card name comments to the subsystem ids.

This fixes a regression introduced in 3.17 by
36efec48e2e6016e05364906720a0ec350a5d768 ([media] cx23885: Add si2165 support for HVR-5500)

Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
Tested-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Showing 3 changed files with 29 additions and 6 deletions Side-by-side Diff

drivers/media/pci/cx23885/cx23885-cards.c
... ... @@ -614,7 +614,7 @@
614 614 .portb = CX23885_MPEG_DVB,
615 615 },
616 616 [CX23885_BOARD_HAUPPAUGE_HVR4400] = {
617   - .name = "Hauppauge WinTV-HVR4400",
  617 + .name = "Hauppauge WinTV-HVR4400/HVR5500",
618 618 .porta = CX23885_ANALOG_VIDEO,
619 619 .portb = CX23885_MPEG_DVB,
620 620 .portc = CX23885_MPEG_DVB,
... ... @@ -622,6 +622,10 @@
622 622 .tuner_addr = 0x60, /* 0xc0 >> 1 */
623 623 .tuner_bus = 1,
624 624 },
  625 + [CX23885_BOARD_HAUPPAUGE_STARBURST] = {
  626 + .name = "Hauppauge WinTV Starburst",
  627 + .portb = CX23885_MPEG_DVB,
  628 + },
625 629 [CX23885_BOARD_AVERMEDIA_HC81R] = {
626 630 .name = "AVerTV Hybrid Express Slim HC81R",
627 631 .tuner_type = TUNER_XC2028,
628 632  
629 633  
630 634  
... ... @@ -910,19 +914,19 @@
910 914 }, {
911 915 .subvendor = 0x0070,
912 916 .subdevice = 0xc108,
913   - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
  917 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-4400 (Model 121xxx, Hybrid DVB-T/S2, IR) */
914 918 }, {
915 919 .subvendor = 0x0070,
916 920 .subdevice = 0xc138,
917   - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
  921 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */
918 922 }, {
919 923 .subvendor = 0x0070,
920 924 .subdevice = 0xc12a,
921   - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
  925 + .card = CX23885_BOARD_HAUPPAUGE_STARBURST, /* Hauppauge WinTV Starburst (Model 121x00, DVB-S2, IR) */
922 926 }, {
923 927 .subvendor = 0x0070,
924 928 .subdevice = 0xc1f8,
925   - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
  929 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */
926 930 }, {
927 931 .subvendor = 0x1461,
928 932 .subdevice = 0xd939,
929 933  
... ... @@ -1495,8 +1499,9 @@
1495 1499 cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
1496 1500 break;
1497 1501 case CX23885_BOARD_HAUPPAUGE_HVR4400:
  1502 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
1498 1503 /* GPIO-8 tda10071 demod reset */
1499   - /* GPIO-9 si2165 demod reset */
  1504 + /* GPIO-9 si2165 demod reset (only HVR4400/HVR5500)*/
1500 1505  
1501 1506 /* Put the parts into reset and back */
1502 1507 cx23885_gpio_enable(dev, GPIO_8 | GPIO_9, 1);
... ... @@ -1760,6 +1765,7 @@
1760 1765 case CX23885_BOARD_HAUPPAUGE_HVR1850:
1761 1766 case CX23885_BOARD_HAUPPAUGE_HVR1290:
1762 1767 case CX23885_BOARD_HAUPPAUGE_HVR4400:
  1768 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
1763 1769 case CX23885_BOARD_HAUPPAUGE_IMPACTVCBE:
1764 1770 if (dev->i2c_bus[0].i2c_rc == 0)
1765 1771 hauppauge_eeprom(dev, eeprom+0xc0);
... ... @@ -1863,6 +1869,11 @@
1863 1869 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
1864 1870 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
1865 1871 ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
  1872 + break;
  1873 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
  1874 + ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
  1875 + ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
  1876 + ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
1866 1877 break;
1867 1878 case CX23885_BOARD_DVBSKY_T9580:
1868 1879 ts1->gen_ctrl_val = 0x5; /* Parallel */
drivers/media/pci/cx23885/cx23885-dvb.c
... ... @@ -1586,6 +1586,17 @@
1586 1586 break;
1587 1587 }
1588 1588 break;
  1589 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
  1590 + i2c_bus = &dev->i2c_bus[0];
  1591 + fe0->dvb.frontend = dvb_attach(tda10071_attach,
  1592 + &hauppauge_tda10071_config,
  1593 + &i2c_bus->i2c_adap);
  1594 + if (fe0->dvb.frontend != NULL) {
  1595 + dvb_attach(a8293_attach, fe0->dvb.frontend,
  1596 + &i2c_bus->i2c_adap,
  1597 + &hauppauge_a8293_config);
  1598 + }
  1599 + break;
1589 1600 case CX23885_BOARD_DVBSKY_T9580:
1590 1601 i2c_bus = &dev->i2c_bus[0];
1591 1602 i2c_bus2 = &dev->i2c_bus[1];
drivers/media/pci/cx23885/cx23885.h
... ... @@ -93,6 +93,7 @@
93 93 #define CX23885_BOARD_HAUPPAUGE_IMPACTVCBE 43
94 94 #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2 44
95 95 #define CX23885_BOARD_DVBSKY_T9580 45
  96 +#define CX23885_BOARD_HAUPPAUGE_STARBURST 52
96 97  
97 98 #define GPIO_0 0x00000001
98 99 #define GPIO_1 0x00000002