Skip to contentSkip to conversation

Add support for KWorld UB435-Q V2

PATCH In review Jean-Francois Thibert 2 participants 5 messages Sep 30, 2013 – Oct 10, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Add support for KWorld UB435-Q V2

This adds support for the UB435-Q V2. It seems that you might need to use the device once with the official driver to reprogram the device descriptors. Thanks to Jarod Wilson for the initial attempt at adding support for this device.

Jean-Francois Thibert (1):
Add support for KWorld UB435-Q V2

 drivers/media/usb/em28xx/em28xx-cards.c |   14 +++++++++++++-
 drivers/media/usb/em28xx/em28xx-dvb.c   |   27 +++++++++++++++++++++++++++
 drivers/media/usb/em28xx/em28xx.h       |    1 +
 3 files changed, 41 insertions(+), 1 deletions(-)
Signature · 1 line
1.7.5.4
#1 lore raw

PATCH 1/1 Add support for KWorld UB435-Q V2

---
 drivers/media/usb/em28xx/em28xx-cards.c |   14 +++++++++++++-
 drivers/media/usb/em28xx/em28xx-dvb.c   |   27 +++++++++++++++++++++++++++
 drivers/media/usb/em28xx/em28xx.h       |    1 +
 3 files changed, 41 insertions(+), 1 deletions(-)
drivers/media/usb/em28xx/em28xx-cards.c +13 -1
index dc65742..a512909 100644
@@ -174,7 +174,7 @@ static struct em28xx_reg_seq evga_indtube_digital[] = {
 };
 
 /*
- * KWorld PlusTV 340U and UB435-Q (ATSC) GPIOs map:
+ * KWorld PlusTV 340U, UB435-Q and UB435-Q V2 (ATSC) GPIOs map:
  * EM_GPIO_0 - currently unknown
  * EM_GPIO_1 - LED disable/enable (1 = off, 0 = on)
  * EM_GPIO_2 - currently unknown
@@ -2030,6 +2030,16 @@ struct em28xx_board em28xx_boards[] = {
 		.i2c_speed     = EM28XX_I2C_CLK_WAIT_ENABLE |
 				EM28XX_I2C_FREQ_400_KHZ,
 	},
+	/* 1b80:e346 KWorld USB ATSC TV Stick UB435-Q V2
+	 * Empia EM2874B + LG DT3305 + NXP TDA18271HDC2 */
+	[EM2874_BOARD_KWORLD_UB435Q_V2] = {
+		.name       = "KWorld USB ATSC TV Stick UB435-Q V2",
+		.tuner_type = TUNER_ABSENT,
+		.has_dvb    = 1,
+		.dvb_gpio   = kworld_a340_digital,
+		.tuner_gpio = default_tuner_gpio,
+		.def_i2c_bus  = 1,
+	},
 };
 const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
 
@@ -2173,6 +2183,8 @@ struct usb_device_id em28xx_id_table[] = {
 			.driver_info = EM2860_BOARD_GADMEI_UTV330 },
 	{ USB_DEVICE(0x1b80, 0xa340),
 			.driver_info = EM2870_BOARD_KWORLD_A340 },
+	{ USB_DEVICE(0x1b80, 0xe346),
+			.driver_info = EM2874_BOARD_KWORLD_UB435Q_V2 },
 	{ USB_DEVICE(0x2013, 0x024f),
 			.driver_info = EM28174_BOARD_PCTV_290E },
 	{ USB_DEVICE(0x2013, 0x024c),
drivers/media/usb/em28xx/em28xx-dvb.c +27 -0
index bb1e8dc..547eea6 100644
@@ -298,6 +298,18 @@ static struct lgdt3305_config em2870_lgdt3304_dev = {
 	.qam_if_khz         = 4000,
 };
 
+static struct lgdt3305_config em2874_lgdt3305_dev = {
+	.i2c_addr           = 0x0e,
+	.demod_chip         = LGDT3305,
+	.spectral_inversion = 1,
+	.deny_i2c_rptr      = 0,
+	.mpeg_mode          = LGDT3305_MPEG_SERIAL,
+	.tpclk_edge         = LGDT3305_TPCLK_FALLING_EDGE,
+	.tpvalid_polarity   = LGDT3305_TP_VALID_HIGH,
+	.vsb_if_khz         = 3250,
+	.qam_if_khz         = 4000,
+};
+
 static struct s921_config sharp_isdbt = {
 	.demod_address = 0x30 >> 1
 };
@@ -329,6 +341,12 @@ static struct tda18271_config kworld_a340_config = {
 	.std_map           = &kworld_a340_std_map,
 };
 
+static struct tda18271_config kworld_ub435q_v2_config = {
+	.std_map           = &kworld_a340_std_map,
+	.gate              = TDA18271_GATE_DIGITAL,
+};
+
+
 static struct zl10353_config em28xx_zl10353_xc3028_no_i2c_gate = {
 	.demod_address = (0x1e >> 1),
 	.no_tuner = 1,
@@ -1297,6 +1315,15 @@ static int em28xx_dvb_init(struct em28xx *dev)
 			goto out_free;
 		}
 		break;
+	case EM2874_BOARD_KWORLD_UB435Q_V2:
+		dvb->fe[0] = dvb_attach(lgdt3305_attach,
+					   &em2874_lgdt3305_dev,
+					   &dev->i2c_adap[dev->def_i2c_bus]);
+		if (dvb->fe[0] != NULL)
+			dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
+				   &dev->i2c_adap[dev->def_i2c_bus], &kworld_ub435q_v2_config);
+
+		break;
 	default:
 		em28xx_errdev("/2: The frontend of your DVB/ATSC card"
 				" isn't supported yet\n");
drivers/media/usb/em28xx/em28xx.h +1 -0
index 205e903..6d988ad 100644
@@ -131,6 +131,7 @@
 #define EM2884_BOARD_TERRATEC_HTC_USB_XS	  87
 #define EM2884_BOARD_C3TECH_DIGITAL_DUO		  88
 #define EM2874_BOARD_DELOCK_61959		  89
+#define EM2874_BOARD_KWORLD_UB435Q_V2		  90
 
 /* Limits minimum and default number of buffers */
 #define EM28XX_MIN_BUF 4
Signature · 1 line
1.7.5.4
#2 lore raw
In reply to Jean-Francois Thibert

Am 30.09.2013 02:45, schrieb Jean-Francois Thibert:

Quoted 4 lines

This adds support for the UB435-Q V2. It seems that you might need to use the device once with the official driver to reprogram the device descriptors. Thanks to Jarod Wilson for the initial attempt at adding support for this device.

Could you please elaborate on this ?
What's the "official" driver and what changes after using it ? Are these changes permanent ?

The commit message should be included in the patch and not be sent as a separate message.
Can you fix the patch and resend it ?

Regards,
Frank Schäfer

Quoted 8 lines

Jean-Francois Thibert (1):
Add support for KWorld UB435-Q V2

 drivers/media/usb/em28xx/em28xx-cards.c |   14 +++++++++++++-
 drivers/media/usb/em28xx/em28xx-dvb.c   |   27 +++++++++++++++++++++++++++
 drivers/media/usb/em28xx/em28xx.h       |    1 +
 3 files changed, 41 insertions(+), 1 deletions(-)
#3 lore raw
Quoted 9 lines · Frank Schäfer
Quoted 4 lines

This adds support for the UB435-Q V2. It seems that you might need to use the device once with the official driver to reprogram the device descriptors. Thanks to Jarod Wilson for the initial attempt at adding support for this device.

Could you please elaborate on this ?
What's the "official" driver and what changes after using it ? Are these changes permanent ?

From what I understand the Windows driver provided by KWorld will reprogram

the eeprom so that the device descriptors are properly describing an Isochronous endpoint instead of Bulk. This only needs to be done once since it is permanent. I don't know if this is required since I don't have a device in the other state.

Quoted 3 lines

The commit message should be included in the patch and not be sent as a separate message.
Can you fix the patch and resend it ?

Sure, I will resend the patch with the message included.

Regards
Jean-Francois

#4 lore raw

Am 09.10.2013 15:48, schrieb Jean-Francois Thibert:

Quoted 6 lines
Quoted 4 lines · Frank Schäfer
Quoted 4 lines

This adds support for the UB435-Q V2. It seems that you might need to use the device once with the official driver to reprogram the device descriptors. Thanks to Jarod Wilson for the initial attempt at adding support for this device.

Quoted 7 lines
Quoted 3 lines

Could you please elaborate on this ?
What's the "official" driver and what changes after using it ? Are these changes permanent ?

From what I understand the Windows driver provided by KWorld will reprogram the eeprom so that the device descriptors are properly describing an Isochronous endpoint instead of Bulk. This only needs to be done once since it is permanent. I don't know if this is required since I don't have a device in the other state.

What do you mean with "properly describing an Isoc endpoint" ? Did the Windows driver reprogram the device to provide an isoc instead of a bulk video endpoint ?
Or did the device have no video endpoint and the bulk endpoint was used for something different (likely device programming) ?
Any chance to get lsusb outputs ?

If you don't have a device in the other state and didn't test the bulk endpoint's, how did you notice this issue ?

Regards,
Frank

Quoted 8 lines
Quoted 4 lines

The commit message should be included in the patch and not be sent as a separate message.
Can you fix the patch and resend it ?

Sure, I will resend the patch with the message included.

Regards
Jean-Francois