diff options
author | Olli Salonen <olli.salonen@iki.fi> | 2014-10-30 16:48:27 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2014-11-03 13:19:29 -0500 |
commit | 61b103e85a87a5106833fea7b9a21637d9ba2d47 (patch) | |
tree | 78c938fd15a4e1fc9ac6ae040bbdedd8f5b8e67a | |
parent | c4e7b893a59b8ec3c24c15ff2b73e334d13047d2 (diff) |
[media] cx23885: add support for TechnoTrend CT2-4500 CI
TechnoTrend CT2-4500 CI is a PCIe device with DVB-T2/C tuner. It is
similar to DVBSky T980C, just with different PCI ID and remote controller.
Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r-- | drivers/media/pci/cx23885/cx23885-cards.c | 14 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/cx23885-dvb.c | 8 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/cx23885-input.c | 8 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/cx23885.h | 1 |
4 files changed, 28 insertions, 3 deletions
diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c index d9ba48cfb41f..9c7e8ac31cce 100644 --- a/drivers/media/pci/cx23885/cx23885-cards.c +++ b/drivers/media/pci/cx23885/cx23885-cards.c | |||
@@ -688,6 +688,10 @@ struct cx23885_board cx23885_boards[] = { | |||
688 | .name = "DVBSky S950C", | 688 | .name = "DVBSky S950C", |
689 | .portb = CX23885_MPEG_DVB, | 689 | .portb = CX23885_MPEG_DVB, |
690 | }, | 690 | }, |
691 | [CX23885_BOARD_TT_CT2_4500_CI] = { | ||
692 | .name = "Technotrend TT-budget CT2-4500 CI", | ||
693 | .portb = CX23885_MPEG_DVB, | ||
694 | }, | ||
691 | }; | 695 | }; |
692 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 696 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
693 | 697 | ||
@@ -955,6 +959,10 @@ struct cx23885_subid cx23885_subids[] = { | |||
955 | .subvendor = 0x4254, | 959 | .subvendor = 0x4254, |
956 | .subdevice = 0x950c, | 960 | .subdevice = 0x950c, |
957 | .card = CX23885_BOARD_DVBSKY_S950C, | 961 | .card = CX23885_BOARD_DVBSKY_S950C, |
962 | }, { | ||
963 | .subvendor = 0x13c2, | ||
964 | .subdevice = 0x3013, | ||
965 | .card = CX23885_BOARD_TT_CT2_4500_CI, | ||
958 | }, | 966 | }, |
959 | }; | 967 | }; |
960 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 968 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -1559,6 +1567,7 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
1559 | break; | 1567 | break; |
1560 | case CX23885_BOARD_DVBSKY_T980C: | 1568 | case CX23885_BOARD_DVBSKY_T980C: |
1561 | case CX23885_BOARD_DVBSKY_S950C: | 1569 | case CX23885_BOARD_DVBSKY_S950C: |
1570 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1562 | /* | 1571 | /* |
1563 | * GPIO-0 INTA from CiMax, input | 1572 | * GPIO-0 INTA from CiMax, input |
1564 | * GPIO-1 reset CiMax, output, high active | 1573 | * GPIO-1 reset CiMax, output, high active |
@@ -1671,6 +1680,7 @@ int cx23885_ir_init(struct cx23885_dev *dev) | |||
1671 | case CX23885_BOARD_DVBSKY_T9580: | 1680 | case CX23885_BOARD_DVBSKY_T9580: |
1672 | case CX23885_BOARD_DVBSKY_T980C: | 1681 | case CX23885_BOARD_DVBSKY_T980C: |
1673 | case CX23885_BOARD_DVBSKY_S950C: | 1682 | case CX23885_BOARD_DVBSKY_S950C: |
1683 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1674 | if (!enable_885_ir) | 1684 | if (!enable_885_ir) |
1675 | break; | 1685 | break; |
1676 | dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE); | 1686 | dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE); |
@@ -1720,6 +1730,7 @@ void cx23885_ir_fini(struct cx23885_dev *dev) | |||
1720 | case CX23885_BOARD_DVBSKY_T9580: | 1730 | case CX23885_BOARD_DVBSKY_T9580: |
1721 | case CX23885_BOARD_DVBSKY_T980C: | 1731 | case CX23885_BOARD_DVBSKY_T980C: |
1722 | case CX23885_BOARD_DVBSKY_S950C: | 1732 | case CX23885_BOARD_DVBSKY_S950C: |
1733 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1723 | cx23885_irq_remove(dev, PCI_MSK_AV_CORE); | 1734 | cx23885_irq_remove(dev, PCI_MSK_AV_CORE); |
1724 | /* sd_ir is a duplicate pointer to the AV Core, just clear it */ | 1735 | /* sd_ir is a duplicate pointer to the AV Core, just clear it */ |
1725 | dev->sd_ir = NULL; | 1736 | dev->sd_ir = NULL; |
@@ -1770,6 +1781,7 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev) | |||
1770 | case CX23885_BOARD_DVBSKY_T9580: | 1781 | case CX23885_BOARD_DVBSKY_T9580: |
1771 | case CX23885_BOARD_DVBSKY_T980C: | 1782 | case CX23885_BOARD_DVBSKY_T980C: |
1772 | case CX23885_BOARD_DVBSKY_S950C: | 1783 | case CX23885_BOARD_DVBSKY_S950C: |
1784 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1773 | if (dev->sd_ir) | 1785 | if (dev->sd_ir) |
1774 | cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE); | 1786 | cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE); |
1775 | break; | 1787 | break; |
@@ -1875,6 +1887,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1875 | case CX23885_BOARD_PROF_8000: | 1887 | case CX23885_BOARD_PROF_8000: |
1876 | case CX23885_BOARD_DVBSKY_T980C: | 1888 | case CX23885_BOARD_DVBSKY_T980C: |
1877 | case CX23885_BOARD_DVBSKY_S950C: | 1889 | case CX23885_BOARD_DVBSKY_S950C: |
1890 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1878 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | 1891 | ts1->gen_ctrl_val = 0x5; /* Parallel */ |
1879 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 1892 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
1880 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 1893 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
@@ -1995,6 +2008,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1995 | case CX23885_BOARD_DVBSKY_T9580: | 2008 | case CX23885_BOARD_DVBSKY_T9580: |
1996 | case CX23885_BOARD_DVBSKY_T980C: | 2009 | case CX23885_BOARD_DVBSKY_T980C: |
1997 | case CX23885_BOARD_DVBSKY_S950C: | 2010 | case CX23885_BOARD_DVBSKY_S950C: |
2011 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1998 | dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, | 2012 | dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, |
1999 | &dev->i2c_bus[2].i2c_adap, | 2013 | &dev->i2c_bus[2].i2c_adap, |
2000 | "cx25840", 0x88 >> 1, NULL); | 2014 | "cx25840", 0x88 >> 1, NULL); |
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c index f82eb1881ac2..5e6caed6e389 100644 --- a/drivers/media/pci/cx23885/cx23885-dvb.c +++ b/drivers/media/pci/cx23885/cx23885-dvb.c | |||
@@ -1766,6 +1766,7 @@ static int dvb_register(struct cx23885_tsport *port) | |||
1766 | } | 1766 | } |
1767 | break; | 1767 | break; |
1768 | case CX23885_BOARD_DVBSKY_T980C: | 1768 | case CX23885_BOARD_DVBSKY_T980C: |
1769 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1769 | i2c_bus = &dev->i2c_bus[1]; | 1770 | i2c_bus = &dev->i2c_bus[1]; |
1770 | i2c_bus2 = &dev->i2c_bus[0]; | 1771 | i2c_bus2 = &dev->i2c_bus[0]; |
1771 | 1772 | ||
@@ -1938,7 +1939,8 @@ static int dvb_register(struct cx23885_tsport *port) | |||
1938 | break; | 1939 | break; |
1939 | } | 1940 | } |
1940 | case CX23885_BOARD_DVBSKY_S950C: | 1941 | case CX23885_BOARD_DVBSKY_S950C: |
1941 | case CX23885_BOARD_DVBSKY_T980C: { | 1942 | case CX23885_BOARD_DVBSKY_T980C: |
1943 | case CX23885_BOARD_TT_CT2_4500_CI: { | ||
1942 | u8 eeprom[256]; /* 24C02 i2c eeprom */ | 1944 | u8 eeprom[256]; /* 24C02 i2c eeprom */ |
1943 | 1945 | ||
1944 | /* attach CI */ | 1946 | /* attach CI */ |
@@ -1985,8 +1987,8 @@ static int dvb_register(struct cx23885_tsport *port) | |||
1985 | dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1; | 1987 | dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1; |
1986 | tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, | 1988 | tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, |
1987 | sizeof(eeprom)); | 1989 | sizeof(eeprom)); |
1988 | printk(KERN_INFO "DVBSky T980C/S950C MAC address: %pM\n", | 1990 | printk(KERN_INFO "%s MAC address: %pM\n", |
1989 | eeprom + 0xc0); | 1991 | cx23885_boards[dev->board].name, eeprom + 0xc0); |
1990 | memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0, 6); | 1992 | memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0, 6); |
1991 | break; | 1993 | break; |
1992 | } | 1994 | } |
diff --git a/drivers/media/pci/cx23885/cx23885-input.c b/drivers/media/pci/cx23885/cx23885-input.c index 0bf6839cb04d..12d8a3de7df4 100644 --- a/drivers/media/pci/cx23885/cx23885-input.c +++ b/drivers/media/pci/cx23885/cx23885-input.c | |||
@@ -90,6 +90,7 @@ void cx23885_input_rx_work_handler(struct cx23885_dev *dev, u32 events) | |||
90 | case CX23885_BOARD_DVBSKY_T9580: | 90 | case CX23885_BOARD_DVBSKY_T9580: |
91 | case CX23885_BOARD_DVBSKY_T980C: | 91 | case CX23885_BOARD_DVBSKY_T980C: |
92 | case CX23885_BOARD_DVBSKY_S950C: | 92 | case CX23885_BOARD_DVBSKY_S950C: |
93 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
93 | /* | 94 | /* |
94 | * The only boards we handle right now. However other boards | 95 | * The only boards we handle right now. However other boards |
95 | * using the CX2388x integrated IR controller should be similar | 96 | * using the CX2388x integrated IR controller should be similar |
@@ -145,6 +146,7 @@ static int cx23885_input_ir_start(struct cx23885_dev *dev) | |||
145 | case CX23885_BOARD_DVBSKY_T9580: | 146 | case CX23885_BOARD_DVBSKY_T9580: |
146 | case CX23885_BOARD_DVBSKY_T980C: | 147 | case CX23885_BOARD_DVBSKY_T980C: |
147 | case CX23885_BOARD_DVBSKY_S950C: | 148 | case CX23885_BOARD_DVBSKY_S950C: |
149 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
148 | /* | 150 | /* |
149 | * The IR controller on this board only returns pulse widths. | 151 | * The IR controller on this board only returns pulse widths. |
150 | * Any other mode setting will fail to set up the device. | 152 | * Any other mode setting will fail to set up the device. |
@@ -319,6 +321,12 @@ int cx23885_input_init(struct cx23885_dev *dev) | |||
319 | allowed_protos = RC_BIT_ALL; | 321 | allowed_protos = RC_BIT_ALL; |
320 | rc_map = RC_MAP_DVBSKY; | 322 | rc_map = RC_MAP_DVBSKY; |
321 | break; | 323 | break; |
324 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
325 | /* Integrated CX23885 IR controller */ | ||
326 | driver_type = RC_DRIVER_IR_RAW; | ||
327 | allowed_protos = RC_BIT_ALL; | ||
328 | rc_map = RC_MAP_TT_1500; | ||
329 | break; | ||
322 | default: | 330 | default: |
323 | return -ENODEV; | 331 | return -ENODEV; |
324 | } | 332 | } |
diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h index f6f6974ee824..7eee2ea18ede 100644 --- a/drivers/media/pci/cx23885/cx23885.h +++ b/drivers/media/pci/cx23885/cx23885.h | |||
@@ -95,6 +95,7 @@ | |||
95 | #define CX23885_BOARD_DVBSKY_T9580 45 | 95 | #define CX23885_BOARD_DVBSKY_T9580 45 |
96 | #define CX23885_BOARD_DVBSKY_T980C 46 | 96 | #define CX23885_BOARD_DVBSKY_T980C 46 |
97 | #define CX23885_BOARD_DVBSKY_S950C 47 | 97 | #define CX23885_BOARD_DVBSKY_S950C 47 |
98 | #define CX23885_BOARD_TT_CT2_4500_CI 48 | ||
98 | 99 | ||
99 | #define GPIO_0 0x00000001 | 100 | #define GPIO_0 0x00000001 |
100 | #define GPIO_1 0x00000002 | 101 | #define GPIO_1 0x00000002 |