diff options
Diffstat (limited to 'drivers/media/video/cx23885/cx23885-dvb.c')
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c index 133e80290711..bf24e86293c6 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include "tda18271.h" | 38 | #include "tda18271.h" |
39 | #include "lgdt330x.h" | 39 | #include "lgdt330x.h" |
40 | #include "xc5000.h" | 40 | #include "xc5000.h" |
41 | #include "max2165.h" | ||
41 | #include "tda10048.h" | 42 | #include "tda10048.h" |
42 | #include "tuner-xc2028.h" | 43 | #include "tuner-xc2028.h" |
43 | #include "tuner-simple.h" | 44 | #include "tuner-simple.h" |
@@ -54,6 +55,7 @@ | |||
54 | #include "netup-eeprom.h" | 55 | #include "netup-eeprom.h" |
55 | #include "netup-init.h" | 56 | #include "netup-init.h" |
56 | #include "lgdt3305.h" | 57 | #include "lgdt3305.h" |
58 | #include "atbm8830.h" | ||
57 | 59 | ||
58 | static unsigned int debug; | 60 | static unsigned int debug; |
59 | 61 | ||
@@ -543,6 +545,38 @@ static struct xc5000_config magicpro_prohdtve2_xc5000_config = { | |||
543 | .if_khz = 6500, | 545 | .if_khz = 6500, |
544 | }; | 546 | }; |
545 | 547 | ||
548 | static struct atbm8830_config mygica_x8558pro_atbm8830_cfg1 = { | ||
549 | .prod = ATBM8830_PROD_8830, | ||
550 | .demod_address = 0x44, | ||
551 | .serial_ts = 0, | ||
552 | .ts_sampling_edge = 1, | ||
553 | .ts_clk_gated = 0, | ||
554 | .osc_clk_freq = 30400, /* in kHz */ | ||
555 | .if_freq = 0, /* zero IF */ | ||
556 | .zif_swap_iq = 1, | ||
557 | }; | ||
558 | |||
559 | static struct max2165_config mygic_x8558pro_max2165_cfg1 = { | ||
560 | .i2c_address = 0x60, | ||
561 | .osc_clk = 20 | ||
562 | }; | ||
563 | |||
564 | static struct atbm8830_config mygica_x8558pro_atbm8830_cfg2 = { | ||
565 | .prod = ATBM8830_PROD_8830, | ||
566 | .demod_address = 0x44, | ||
567 | .serial_ts = 1, | ||
568 | .ts_sampling_edge = 1, | ||
569 | .ts_clk_gated = 0, | ||
570 | .osc_clk_freq = 30400, /* in kHz */ | ||
571 | .if_freq = 0, /* zero IF */ | ||
572 | .zif_swap_iq = 1, | ||
573 | }; | ||
574 | |||
575 | static struct max2165_config mygic_x8558pro_max2165_cfg2 = { | ||
576 | .i2c_address = 0x60, | ||
577 | .osc_clk = 20 | ||
578 | }; | ||
579 | |||
546 | static int dvb_register(struct cx23885_tsport *port) | 580 | static int dvb_register(struct cx23885_tsport *port) |
547 | { | 581 | { |
548 | struct cx23885_dev *dev = port->dev; | 582 | struct cx23885_dev *dev = port->dev; |
@@ -908,6 +942,36 @@ static int dvb_register(struct cx23885_tsport *port) | |||
908 | 0x60, &dev->i2c_bus[0].i2c_adap, | 942 | 0x60, &dev->i2c_bus[0].i2c_adap, |
909 | &hauppauge_tda18271_config); | 943 | &hauppauge_tda18271_config); |
910 | break; | 944 | break; |
945 | case CX23885_BOARD_MYGICA_X8558PRO: | ||
946 | switch (port->nr) { | ||
947 | /* port B */ | ||
948 | case 1: | ||
949 | i2c_bus = &dev->i2c_bus[0]; | ||
950 | fe0->dvb.frontend = dvb_attach(atbm8830_attach, | ||
951 | &mygica_x8558pro_atbm8830_cfg1, | ||
952 | &i2c_bus->i2c_adap); | ||
953 | if (fe0->dvb.frontend != NULL) { | ||
954 | dvb_attach(max2165_attach, | ||
955 | fe0->dvb.frontend, | ||
956 | &i2c_bus->i2c_adap, | ||
957 | &mygic_x8558pro_max2165_cfg1); | ||
958 | } | ||
959 | break; | ||
960 | /* port C */ | ||
961 | case 2: | ||
962 | i2c_bus = &dev->i2c_bus[1]; | ||
963 | fe0->dvb.frontend = dvb_attach(atbm8830_attach, | ||
964 | &mygica_x8558pro_atbm8830_cfg2, | ||
965 | &i2c_bus->i2c_adap); | ||
966 | if (fe0->dvb.frontend != NULL) { | ||
967 | dvb_attach(max2165_attach, | ||
968 | fe0->dvb.frontend, | ||
969 | &i2c_bus->i2c_adap, | ||
970 | &mygic_x8558pro_max2165_cfg2); | ||
971 | } | ||
972 | break; | ||
973 | } | ||
974 | break; | ||
911 | 975 | ||
912 | default: | 976 | default: |
913 | printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " | 977 | printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " |