aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-cards.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/cx88/cx88-cards.c')
-rw-r--r--drivers/media/video/cx88/cx88-cards.c37
1 files changed, 28 insertions, 9 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 65e9d8096b74..e61102dc8ad7 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -885,6 +885,12 @@ struct cx88_board cx88_boards[] = {
885 .input = {{ 885 .input = {{
886 .type = CX88_VMUX_DVB, 886 .type = CX88_VMUX_DVB,
887 .vmux = 0, 887 .vmux = 0,
888 },{
889 .type = CX88_VMUX_COMPOSITE1,
890 .vmux = 1,
891 },{
892 .type = CX88_VMUX_SVIDEO,
893 .vmux = 2,
888 }}, 894 }},
889 .mpeg = CX88_MPEG_DVB, 895 .mpeg = CX88_MPEG_DVB,
890 }, 896 },
@@ -1537,10 +1543,10 @@ struct cx88_subid cx88_subids[] = {
1537 },{ 1543 },{
1538 .subvendor = 0x17de, 1544 .subvendor = 0x17de,
1539 .subdevice = 0x0840, 1545 .subdevice = 0x0840,
1540 .card = CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT, 1546 .card = CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT,
1541 },{ 1547 },{
1542 .subvendor = 0x1421, 1548 .subvendor = 0x1421,
1543 .subdevice = 0x0305, 1549 .subdevice = 0x0305,
1544 .card = CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT, 1550 .card = CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT,
1545 },{ 1551 },{
1546 .subvendor = 0x18ac, 1552 .subvendor = 0x18ac,
@@ -1631,6 +1637,10 @@ struct cx88_subid cx88_subids[] = {
1631 .subvendor = 0x0070, 1637 .subvendor = 0x0070,
1632 .subdevice = 0x1402, 1638 .subdevice = 0x1402,
1633 .card = CX88_BOARD_HAUPPAUGE_HVR3000, 1639 .card = CX88_BOARD_HAUPPAUGE_HVR3000,
1640 },{
1641 .subvendor = 0x1421,
1642 .subdevice = 0x0341, /* ADS Tech InstantTV DVB-S */
1643 .card = CX88_BOARD_KWORLD_DVBS_100,
1634 }, 1644 },
1635}; 1645};
1636const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); 1646const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
@@ -1786,7 +1796,7 @@ static void dvico_fusionhdtv_hybrid_init(struct cx88_core *core)
1786 { 0x03, 0x0C }, 1796 { 0x03, 0x0C },
1787 }; 1797 };
1788 1798
1789 for (i = 0; i < 13; i++) { 1799 for (i = 0; i < ARRAY_SIZE(init_bufs); i++) {
1790 msg.buf = init_bufs[i]; 1800 msg.buf = init_bufs[i];
1791 msg.len = (i != 12 ? 5 : 2); 1801 msg.len = (i != 12 ? 5 : 2);
1792 err = i2c_transfer(&core->i2c_adap, &msg, 1); 1802 err = i2c_transfer(&core->i2c_adap, &msg, 1);
@@ -1913,12 +1923,21 @@ void cx88_card_setup(struct cx88_core *core)
1913 if (0 == core->i2c_rc) { 1923 if (0 == core->i2c_rc) {
1914 /* enable tuner */ 1924 /* enable tuner */
1915 int i; 1925 int i;
1916 static const u8 buffer [] = { 0x10,0x12,0x13,0x04,0x16,0x00,0x14,0x04,0x017,0x00 }; 1926 static const u8 buffer [][2] = {
1927 {0x10,0x12},
1928 {0x13,0x04},
1929 {0x16,0x00},
1930 {0x14,0x04},
1931 {0x17,0x00}
1932 };
1917 core->i2c_client.addr = 0x0a; 1933 core->i2c_client.addr = 0x0a;
1918 1934
1919 for (i = 0; i < 5; i++) 1935 for (i = 0; i < ARRAY_SIZE(buffer); i++)
1920 if (2 != i2c_master_send(&core->i2c_client,&buffer[i*2],2)) 1936 if (2 != i2c_master_send(&core->i2c_client,
1921 printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n", 1937 buffer[i],2))
1938 printk(KERN_WARNING
1939 "%s: Unable to enable "
1940 "tuner(%i).\n",
1922 core->name, i); 1941 core->name, i);
1923 } 1942 }
1924 break; 1943 break;