diff options
Diffstat (limited to 'linux-2.6-v4l-dvb-add-kworld-a340-support.patch')
-rw-r--r-- | linux-2.6-v4l-dvb-add-kworld-a340-support.patch | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/linux-2.6-v4l-dvb-add-kworld-a340-support.patch b/linux-2.6-v4l-dvb-add-kworld-a340-support.patch deleted file mode 100644 index f1ac30793..000000000 --- a/linux-2.6-v4l-dvb-add-kworld-a340-support.patch +++ /dev/null @@ -1,165 +0,0 @@ -commit 611225f5e7f9d11c4b119fac224f1bd6903b0150 -Author: Jarod Wilson <jarod@redhat.com> -Date: Sun Mar 7 17:55:43 2010 -0300 - - V4L/DVB: dvb: add support for kworld 340u and ub435-q to em28xx-dvb - - This adds support for the KWorld PlusTV 340U and KWorld UB345-Q ATSC - sticks, which are really the same device. The sticks have an eMPIA - em2870 usb bridge chipset, an LG Electronics LGDT3304 ATSC/QAM - demodulator and an NXP TDA18271HD tuner -- early versions of the 340U - have a a TDA18271HD/C1, later models and the UB435-Q have a C2. - - The stick has been tested succesfully with both VSB_8 and QAM_256 signals. - Its using lgdt3304 support added to the lgdt3305 driver by a prior patch, - rather than the current lgdt3304 driver, as its severely lacking in - functionality by comparison (see said patch for details). - - Signed-off-by: Jarod Wilson <jarod@redhat.com> - Signed-off-by: Michael Krufky <mkrufky@kernellabs.com> - Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> - -diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx -index 3a623aa..5c56875 100644 ---- a/Documentation/video4linux/CARDLIST.em28xx -+++ b/Documentation/video4linux/CARDLIST.em28xx -@@ -72,3 +72,4 @@ - 73 -> Reddo DVB-C USB TV Box (em2870) - 74 -> Actionmaster/LinXcel/Digitus VC211A (em2800) - 75 -> Dikom DK300 (em2882) -+ 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] -diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c -index 3a4fd85..ffbe544 100644 ---- a/drivers/media/video/em28xx/em28xx-cards.c -+++ b/drivers/media/video/em28xx/em28xx-cards.c -@@ -158,6 +158,22 @@ static struct em28xx_reg_seq evga_indtube_digital[] = { - { -1, -1, -1, -1}, - }; - -+/* -+ * KWorld PlusTV 340U and UB435-Q (ATSC) GPIOs map: -+ * EM_GPIO_0 - currently unknown -+ * EM_GPIO_1 - LED disable/enable (1 = off, 0 = on) -+ * EM_GPIO_2 - currently unknown -+ * EM_GPIO_3 - currently unknown -+ * EM_GPIO_4 - TDA18271HD/C1 tuner (1 = active, 0 = in reset) -+ * EM_GPIO_5 - LGDT3304 ATSC/QAM demod (1 = active, 0 = in reset) -+ * EM_GPIO_6 - currently unknown -+ * EM_GPIO_7 - currently unknown -+ */ -+static struct em28xx_reg_seq kworld_a340_digital[] = { -+ {EM28XX_R08_GPIO, 0x6d, ~EM_GPIO_4, 10}, -+ { -1, -1, -1, -1}, -+}; -+ - /* Pinnacle Hybrid Pro eb1a:2881 */ - static struct em28xx_reg_seq pinnacle_hybrid_pro_analog[] = { - {EM28XX_R08_GPIO, 0xfd, ~EM_GPIO_4, 10}, -@@ -1667,6 +1683,16 @@ struct em28xx_board em28xx_boards[] = { - .tuner_gpio = reddo_dvb_c_usb_box, - .has_dvb = 1, - }, -+ /* 1b80:a340 - Empia EM2870, NXP TDA18271HD and LG DT3304, sold -+ * initially as the KWorld PlusTV 340U, then as the UB435-Q. -+ * Early variants have a TDA18271HD/C1, later ones a TDA18271HD/C2 */ -+ [EM2870_BOARD_KWORLD_A340] = { -+ .name = "KWorld PlusTV 340U or UB435-Q (ATSC)", -+ .tuner_type = TUNER_ABSENT, /* Digital-only TDA18271HD */ -+ .has_dvb = 1, -+ .dvb_gpio = kworld_a340_digital, -+ .tuner_gpio = default_tuner_gpio, -+ }, - }; - const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); - -@@ -1788,6 +1814,8 @@ struct usb_device_id em28xx_id_table[] = { - .driver_info = EM2820_BOARD_IODATA_GVMVP_SZ }, - { USB_DEVICE(0xeb1a, 0x50a6), - .driver_info = EM2860_BOARD_GADMEI_UTV330 }, -+ { USB_DEVICE(0x1b80, 0xa340), -+ .driver_info = EM2870_BOARD_KWORLD_A340 }, - { }, - }; - MODULE_DEVICE_TABLE(usb, em28xx_id_table); -diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c -index cf1d8c3..3ac8d30 100644 ---- a/drivers/media/video/em28xx/em28xx-dvb.c -+++ b/drivers/media/video/em28xx/em28xx-dvb.c -@@ -30,11 +30,13 @@ - #include "tuner-simple.h" - - #include "lgdt330x.h" -+#include "lgdt3305.h" - #include "zl10353.h" - #include "s5h1409.h" - #include "mt352.h" - #include "mt352_priv.h" /* FIXME */ - #include "tda1002x.h" -+#include "tda18271.h" - - MODULE_DESCRIPTION("driver for em28xx based DVB cards"); - MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); -@@ -231,6 +233,18 @@ static struct lgdt330x_config em2880_lgdt3303_dev = { - .demod_chip = LGDT3303, - }; - -+static struct lgdt3305_config em2870_lgdt3304_dev = { -+ .i2c_addr = 0x0e, -+ .demod_chip = LGDT3304, -+ .spectral_inversion = 1, -+ .deny_i2c_rptr = 1, -+ .mpeg_mode = LGDT3305_MPEG_PARALLEL, -+ .tpclk_edge = LGDT3305_TPCLK_FALLING_EDGE, -+ .tpvalid_polarity = LGDT3305_TP_VALID_HIGH, -+ .vsb_if_khz = 3250, -+ .qam_if_khz = 4000, -+}; -+ - static struct zl10353_config em28xx_zl10353_with_xc3028 = { - .demod_address = (0x1e >> 1), - .no_tuner = 1, -@@ -247,6 +261,17 @@ static struct s5h1409_config em28xx_s5h1409_with_xc3028 = { - .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK - }; - -+static struct tda18271_std_map kworld_a340_std_map = { -+ .atsc_6 = { .if_freq = 3250, .agc_mode = 3, .std = 0, -+ .if_lvl = 1, .rfagc_top = 0x37, }, -+ .qam_6 = { .if_freq = 4000, .agc_mode = 3, .std = 1, -+ .if_lvl = 1, .rfagc_top = 0x37, }, -+}; -+ -+static struct tda18271_config kworld_a340_config = { -+ .std_map = &kworld_a340_std_map, -+}; -+ - static struct zl10353_config em28xx_zl10353_xc3028_no_i2c_gate = { - .demod_address = (0x1e >> 1), - .no_tuner = 1, -@@ -572,6 +597,14 @@ static int dvb_init(struct em28xx *dev) - } - } - break; -+ case EM2870_BOARD_KWORLD_A340: -+ dvb->frontend = dvb_attach(lgdt3305_attach, -+ &em2870_lgdt3304_dev, -+ &dev->i2c_adap); -+ if (dvb->frontend != NULL) -+ dvb_attach(tda18271_attach, dvb->frontend, 0x60, -+ &dev->i2c_adap, &kworld_a340_config); -+ break; - default: - em28xx_errdev("/2: The frontend of your DVB/ATSC card" - " isn't supported yet\n"); -diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h -index 6216786..1c61a6b 100644 ---- a/drivers/media/video/em28xx/em28xx.h -+++ b/drivers/media/video/em28xx/em28xx.h -@@ -114,6 +114,7 @@ - #define EM2870_BOARD_REDDO_DVB_C_USB_BOX 73 - #define EM2800_BOARD_VC211A 74 - #define EM2882_BOARD_DIKOM_DK300 75 -+#define EM2870_BOARD_KWORLD_A340 76 - - /* Limits minimum and default number of buffers */ - #define EM28XX_MIN_BUF 4 |