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 <froooozen@xxxxxxxxx> Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> --- 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(+) --- patchwork.orig/drivers/media/video/cx231xx/cx231xx-cards.c +++ patchwork/drivers/media/video/cx231xx/cx231xx-cards.c @@ -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}, {}, }; --- patchwork.orig/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +++ patchwork/drivers/media/dvb/dvb-usb/dvb-usb-ids.h @@ -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 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html