Skip to contentSkip to conversation

cx231xx: Add support for Kworld UB430 AF

RFC PATCH New Mauro Carvalho Chehab 1 participant 1 message Nov 8, 2010 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 cx231xx: Add support for Kworld UB430 AF

This device seems to be close to Pixelview design. Probably, the remote controller is different.

Also, AGC selection doesn't seem to use any GPIO writing, at least from the logs I got from Márcio.

Reported by: Márcio Araújo Alves <[email protected]>

---

PS.: This patch is to be applied against staging/for_v2.6.38 branch at the main tree:

	http://git.linuxtv.org/media_tree.git?a=shortlog;h=refs/heads/staging/for_v2.6.38

Márcio,

Could you please test it? It would be wonderful if you could test the new IR support. You should uncomment the code bellow (commented with #if 0), and, eventually, you'll need to play with RC keymaps.

I'd appreciate if you could send me some parsed logs for both analog and digital modes. I've improved the cx231xx-specific parser at v4l-apps, in order to catch GPIO changes. So far, I didn't get any trial to change GPIO bits on your logs (nor on my logs with Pixelview).

When I have more time, I'll try to do more tests on it.

 drivers/media/dvb/dvb-usb/dvb-usb-ids.h     |    1 
 drivers/media/video/cx231xx/cx231xx-cards.c |   48 ++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)
drivers/media/video/cx231xx/cx231xx-cards.c +48 -0
@@ -435,6 +435,52 @@ struct cx231xx_board cx231xx_boards[] = 
 			.gpio = 0,
 		} },
 	},
+	[CX231XX_BOARD_KWORLD_U430_AF] = {
+		.name = "Kworld UB430-AF",
+		.tuner_type = TUNER_NXP_TDA18271,
+		.tuner_addr = 0x60,
+		.decoder = CX231XX_AVDECODER,
+		.output_mode = OUT_MODE_VIP11,
+		.demod_xfer_mode = 0,
+		.ctl_pin_status_mask = 0xFFFFFFC4,
+		.agc_analog_digital_select_gpio = 0xffff,
+		.tuner_sif_gpio = -1,
+		.tuner_scl_gpio = -1,
+		.tuner_sda_gpio = -1,
+		.gpio_pin_status_mask = 0x4001000,
+		.tuner_i2c_master = 2,
+		.demod_i2c_master = 1,
+#if 0
+		/*
+		 * FIXME: it is very likely that this device uses an I2C
+		 * remote controller. Not sure if it will use the same
+		 * i2c addr as Pixelview, or what's the keycode map.
+		 */
+		.ir_i2c_master = 2,
+		.rc_map = RC_MAP_KWORLD_315U,
+#endif
+		.has_dvb = 1,
+		.demod_addr = 0x10,
+		.norm = V4L2_STD_PAL_M,
+		.input = {{
+			.type = CX231XX_VMUX_TELEVISION,
+			.vmux = CX231XX_VIN_3_1,
+			.amux = CX231XX_AMUX_VIDEO,
+			.gpio = 0,
+		}, {
+			.type = CX231XX_VMUX_COMPOSITE1,
+			.vmux = CX231XX_VIN_2_1,
+			.amux = CX231XX_AMUX_LINE_IN,
+			.gpio = 0,
+		}, {
+			.type = CX231XX_VMUX_SVIDEO,
+			.vmux = CX231XX_VIN_1_1 |
+				(CX231XX_VIN_1_2 << 8) |
+				CX25840_SVIDEO_ON,
+			.amux = CX231XX_AMUX_LINE_IN,
+			.gpio = 0,
+		} },
+	},
 };
 const unsigned int cx231xx_bcount = ARRAY_SIZE(cx231xx_boards);
 
@@ -464,6 +510,8 @@ struct usb_device_id cx231xx_id_table[] 
 	 .driver_info = CX231XX_BOARD_HAUPPAUGE_USBLIVE2},
 	{USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x4000, 0x4001),
 	 .driver_info = CX231XX_BOARD_PV_PLAYTV_USB_HYBRID},
+	{USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_UB430_AF),
+	 .driver_info = CX231XX_BOARD_KWORLD_U430_AF},
 	{},
 };
 
drivers/media/dvb/dvb-usb/dvb-usb-ids.h +1 -0
@@ -130,6 +130,7 @@
 #define USB_PID_KWORLD_PC160_2T				0xc160
 #define USB_PID_KWORLD_PC160_T				0xc161
 #define USB_PID_KWORLD_UB383_T				0xe383
+#define USB_PID_KWORLD_UB430_AF				0xe424
 #define USB_PID_KWORLD_VSTREAM_COLD			0x17de
 #define USB_PID_KWORLD_VSTREAM_WARM			0x17df
 #define USB_PID_TERRATEC_CINERGY_T_USB_XE		0x0055