aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorGianluca Gennari <gennarone@gmail.com>2012-04-02 16:25:14 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-04-09 13:52:34 -0400
commitce1fe3799c0e92b9219ab123002d0383c5c3cc07 (patch)
treecb42b3ae6650197cf3a7f24d3155c5e5d1bed2cd /drivers/media/dvb
parent728827b8d32319a2989f89b656e2d9fc6d7a3ab3 (diff)
[media] af9035: add support for the tda18218 tuner
Add basic support for the tda18218 tuner and the AVerMedia A835 devices. Signed-off-by: Gianluca Gennari <gennarone@gmail.com> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-usb/Kconfig1
-rw-r--r--drivers/media/dvb/dvb-usb/af9035.c26
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-ids.h2
-rw-r--r--drivers/media/dvb/frontends/af9033.c4
-rw-r--r--drivers/media/dvb/frontends/af9033.h1
-rw-r--r--drivers/media/dvb/frontends/af9033_priv.h34
6 files changed, 67 insertions, 1 deletions
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
index f53fb3c8530e..be1db75091ff 100644
--- a/drivers/media/dvb/dvb-usb/Kconfig
+++ b/drivers/media/dvb/dvb-usb/Kconfig
@@ -430,6 +430,7 @@ config DVB_USB_AF9035
430 select MEDIA_TUNER_TUA9001 if !MEDIA_TUNER_CUSTOMISE 430 select MEDIA_TUNER_TUA9001 if !MEDIA_TUNER_CUSTOMISE
431 select MEDIA_TUNER_FC0011 if !MEDIA_TUNER_CUSTOMISE 431 select MEDIA_TUNER_FC0011 if !MEDIA_TUNER_CUSTOMISE
432 select MEDIA_TUNER_MXL5007T if !MEDIA_TUNER_CUSTOMISE 432 select MEDIA_TUNER_MXL5007T if !MEDIA_TUNER_CUSTOMISE
433 select MEDIA_TUNER_TDA18218 if !MEDIA_TUNER_CUSTOMISE
433 help 434 help
434 Say Y here to support the Afatech AF9035 based DVB USB receiver. 435 Say Y here to support the Afatech AF9035 based DVB USB receiver.
435 436
diff --git a/drivers/media/dvb/dvb-usb/af9035.c b/drivers/media/dvb/dvb-usb/af9035.c
index 9ac3b4174d22..970bdb6bb60a 100644
--- a/drivers/media/dvb/dvb-usb/af9035.c
+++ b/drivers/media/dvb/dvb-usb/af9035.c
@@ -24,6 +24,7 @@
24#include "tua9001.h" 24#include "tua9001.h"
25#include "fc0011.h" 25#include "fc0011.h"
26#include "mxl5007t.h" 26#include "mxl5007t.h"
27#include "tda18218.h"
27 28
28DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); 29DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
29static DEFINE_MUTEX(af9035_usb_mutex); 30static DEFINE_MUTEX(af9035_usb_mutex);
@@ -502,6 +503,7 @@ static int af9035_read_mac_address(struct dvb_usb_device *d, u8 mac[6])
502 case AF9033_TUNER_TUA9001: 503 case AF9033_TUNER_TUA9001:
503 case AF9033_TUNER_FC0011: 504 case AF9033_TUNER_FC0011:
504 case AF9033_TUNER_MXL5007T: 505 case AF9033_TUNER_MXL5007T:
506 case AF9033_TUNER_TDA18218:
505 af9035_af9033_config[i].spec_inv = 1; 507 af9035_af9033_config[i].spec_inv = 1;
506 break; 508 break;
507 default: 509 default:
@@ -678,6 +680,11 @@ static struct mxl5007t_config af9035_mxl5007t_config = {
678 .clk_out_amp = MxL_CLKOUT_AMP_0_94V, 680 .clk_out_amp = MxL_CLKOUT_AMP_0_94V,
679}; 681};
680 682
683static struct tda18218_config af9035_tda18218_config = {
684 .i2c_address = 0x60,
685 .i2c_wr_max = 21,
686};
687
681static int af9035_tuner_attach(struct dvb_usb_adapter *adap) 688static int af9035_tuner_attach(struct dvb_usb_adapter *adap)
682{ 689{
683 int ret; 690 int ret;
@@ -772,6 +779,11 @@ static int af9035_tuner_attach(struct dvb_usb_adapter *adap)
772 fe = dvb_attach(mxl5007t_attach, adap->fe_adap[0].fe, 779 fe = dvb_attach(mxl5007t_attach, adap->fe_adap[0].fe,
773 &adap->dev->i2c_adap, 0x60, &af9035_mxl5007t_config); 780 &adap->dev->i2c_adap, 0x60, &af9035_mxl5007t_config);
774 break; 781 break;
782 case AF9033_TUNER_TDA18218:
783 /* attach tuner */
784 fe = dvb_attach(tda18218_attach, adap->fe_adap[0].fe,
785 &adap->dev->i2c_adap, &af9035_tda18218_config);
786 break;
775 default: 787 default:
776 fe = NULL; 788 fe = NULL;
777 } 789 }
@@ -793,6 +805,8 @@ enum af9035_id_entry {
793 AF9035_0CCD_0093, 805 AF9035_0CCD_0093,
794 AF9035_15A4_9035, 806 AF9035_15A4_9035,
795 AF9035_15A4_1001, 807 AF9035_15A4_1001,
808 AF9035_07CA_A835,
809 AF9035_07CA_B835,
796 AF9035_07CA_1867, 810 AF9035_07CA_1867,
797 AF9035_07CA_A867, 811 AF9035_07CA_A867,
798}; 812};
@@ -804,6 +818,10 @@ static struct usb_device_id af9035_id[] = {
804 USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035)}, 818 USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035)},
805 [AF9035_15A4_1001] = { 819 [AF9035_15A4_1001] = {
806 USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_2)}, 820 USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_2)},
821 [AF9035_07CA_A835] = {
822 USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A835)},
823 [AF9035_07CA_B835] = {
824 USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_B835)},
807 [AF9035_07CA_1867] = { 825 [AF9035_07CA_1867] = {
808 USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_1867)}, 826 USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_1867)},
809 [AF9035_07CA_A867] = { 827 [AF9035_07CA_A867] = {
@@ -850,7 +868,7 @@ static struct dvb_usb_device_properties af9035_properties[] = {
850 868
851 .i2c_algo = &af9035_i2c_algo, 869 .i2c_algo = &af9035_i2c_algo,
852 870
853 .num_device_descs = 3, 871 .num_device_descs = 4,
854 .devices = { 872 .devices = {
855 { 873 {
856 .name = "TerraTec Cinergy T Stick", 874 .name = "TerraTec Cinergy T Stick",
@@ -864,6 +882,12 @@ static struct dvb_usb_device_properties af9035_properties[] = {
864 &af9035_id[AF9035_15A4_1001], 882 &af9035_id[AF9035_15A4_1001],
865 }, 883 },
866 }, { 884 }, {
885 .name = "AVerMedia AVerTV Volar HD/PRO (A835)",
886 .cold_ids = {
887 &af9035_id[AF9035_07CA_A835],
888 &af9035_id[AF9035_07CA_B835],
889 },
890 }, {
867 .name = "AVerMedia HD Volar (A867)", 891 .name = "AVerMedia HD Volar (A867)",
868 .cold_ids = { 892 .cold_ids = {
869 &af9035_id[AF9035_07CA_1867], 893 &af9035_id[AF9035_07CA_1867],
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
index 3cf002b423f7..6a761c546a98 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
@@ -224,6 +224,8 @@
224#define USB_PID_AVERMEDIA_A850T 0x850b 224#define USB_PID_AVERMEDIA_A850T 0x850b
225#define USB_PID_AVERMEDIA_A805 0xa805 225#define USB_PID_AVERMEDIA_A805 0xa805
226#define USB_PID_AVERMEDIA_A815M 0x815a 226#define USB_PID_AVERMEDIA_A815M 0x815a
227#define USB_PID_AVERMEDIA_A835 0xa835
228#define USB_PID_AVERMEDIA_B835 0xb835
227#define USB_PID_AVERMEDIA_1867 0x1867 229#define USB_PID_AVERMEDIA_1867 0x1867
228#define USB_PID_AVERMEDIA_A867 0xa867 230#define USB_PID_AVERMEDIA_A867 0xa867
229#define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 231#define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006
diff --git a/drivers/media/dvb/frontends/af9033.c b/drivers/media/dvb/frontends/af9033.c
index 8c0f4a3ef0f0..5fadee79b325 100644
--- a/drivers/media/dvb/frontends/af9033.c
+++ b/drivers/media/dvb/frontends/af9033.c
@@ -305,6 +305,10 @@ static int af9033_init(struct dvb_frontend *fe)
305 len = ARRAY_SIZE(tuner_init_mxl5007t); 305 len = ARRAY_SIZE(tuner_init_mxl5007t);
306 init = tuner_init_mxl5007t; 306 init = tuner_init_mxl5007t;
307 break; 307 break;
308 case AF9033_TUNER_TDA18218:
309 len = ARRAY_SIZE(tuner_init_tda18218);
310 init = tuner_init_tda18218;
311 break;
308 default: 312 default:
309 pr_debug("%s: unsupported tuner ID=%d\n", __func__, 313 pr_debug("%s: unsupported tuner ID=%d\n", __func__,
310 state->cfg.tuner); 314 state->cfg.tuner);
diff --git a/drivers/media/dvb/frontends/af9033.h b/drivers/media/dvb/frontends/af9033.h
index dcf7e290b6fe..9e302c3f0f7d 100644
--- a/drivers/media/dvb/frontends/af9033.h
+++ b/drivers/media/dvb/frontends/af9033.h
@@ -41,6 +41,7 @@ struct af9033_config {
41#define AF9033_TUNER_TUA9001 0x27 /* Infineon TUA 9001 */ 41#define AF9033_TUNER_TUA9001 0x27 /* Infineon TUA 9001 */
42#define AF9033_TUNER_FC0011 0x28 /* Fitipower FC0011 */ 42#define AF9033_TUNER_FC0011 0x28 /* Fitipower FC0011 */
43#define AF9033_TUNER_MXL5007T 0xa0 /* MaxLinear MxL5007T */ 43#define AF9033_TUNER_MXL5007T 0xa0 /* MaxLinear MxL5007T */
44#define AF9033_TUNER_TDA18218 0xa1 /* NXP TDA 18218HN */
44 u8 tuner; 45 u8 tuner;
45 46
46 /* 47 /*
diff --git a/drivers/media/dvb/frontends/af9033_priv.h b/drivers/media/dvb/frontends/af9033_priv.h
index e6041bc7c2fc..0b783b9ed75e 100644
--- a/drivers/media/dvb/frontends/af9033_priv.h
+++ b/drivers/media/dvb/frontends/af9033_priv.h
@@ -432,5 +432,39 @@ static const struct reg_val tuner_init_mxl5007t[] = {
432 { 0x80f1e6, 0x00 }, 432 { 0x80f1e6, 0x00 },
433}; 433};
434 434
435/* NXP TDA 18218HN tuner init
436 AF9033_TUNER_TDA18218 = 0xa1 */
437static const struct reg_val tuner_init_tda18218[] = {
438 {0x800046, 0xa1},
439 {0x800057, 0x01},
440 {0x800058, 0x01},
441 {0x80005f, 0x00},
442 {0x800060, 0x00},
443 {0x800071, 0x05},
444 {0x800072, 0x02},
445 {0x800074, 0x01},
446 {0x800079, 0x01},
447 {0x800093, 0x00},
448 {0x800094, 0x00},
449 {0x800095, 0x00},
450 {0x800096, 0x00},
451 {0x8000b3, 0x01},
452 {0x8000c3, 0x01},
453 {0x8000c4, 0x00},
454 {0x80f007, 0x00},
455 {0x80f00c, 0x19},
456 {0x80f00d, 0x1a},
457 {0x80f012, 0xda},
458 {0x80f013, 0x00},
459 {0x80f014, 0x00},
460 {0x80f015, 0x02},
461 {0x80f01f, 0x82},
462 {0x80f020, 0x00},
463 {0x80f029, 0x82},
464 {0x80f02a, 0x00},
465 {0x80f077, 0x02},
466 {0x80f1e6, 0x00},
467};
468
435#endif /* AF9033_PRIV_H */ 469#endif /* AF9033_PRIV_H */
436 470