diff options
author | Gianluca Gennari <gennarone@gmail.com> | 2012-04-02 16:25:14 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-04-09 13:52:34 -0400 |
commit | ce1fe3799c0e92b9219ab123002d0383c5c3cc07 (patch) | |
tree | cb42b3ae6650197cf3a7f24d3155c5e5d1bed2cd /drivers/media/dvb | |
parent | 728827b8d32319a2989f89b656e2d9fc6d7a3ab3 (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/Kconfig | 1 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9035.c | 26 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/af9033.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/af9033.h | 1 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/af9033_priv.h | 34 |
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 | ||
28 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | 29 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); |
29 | static DEFINE_MUTEX(af9035_usb_mutex); | 30 | static 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 | ||
683 | static struct tda18218_config af9035_tda18218_config = { | ||
684 | .i2c_address = 0x60, | ||
685 | .i2c_wr_max = 21, | ||
686 | }; | ||
687 | |||
681 | static int af9035_tuner_attach(struct dvb_usb_adapter *adap) | 688 | static 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 */ | ||
437 | static 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 | ||