382
385
.agc_analog_digital_select_gpio = 0x0c,
383
386
.gpio_pin_status_mask = 0x4001000,
384
387
.norm = V4L2_STD_NTSC,
386
.type = CX231XX_VMUX_COMPOSITE1,
387
.vmux = CX231XX_VIN_2_1,
388
.amux = CX231XX_AMUX_LINE_IN,
391
.type = CX231XX_VMUX_SVIDEO,
392
.vmux = CX231XX_VIN_1_1 |
393
(CX231XX_VIN_1_2 << 8) |
395
.amux = CX231XX_AMUX_LINE_IN,
391
.type = CX231XX_VMUX_COMPOSITE1,
392
.vmux = CX231XX_VIN_2_1,
393
.amux = CX231XX_AMUX_LINE_IN,
396
.type = CX231XX_VMUX_SVIDEO,
397
.vmux = CX231XX_VIN_1_1 |
398
(CX231XX_VIN_1_2 << 8) |
400
.amux = CX231XX_AMUX_LINE_IN,
404
[CX231XX_BOARD_KWORLD_UB430_USB_HYBRID] = {
405
.name = "Kworld UB430 USB Hybrid",
406
.tuner_type = TUNER_NXP_TDA18271,
408
.decoder = CX231XX_AVDECODER,
409
.output_mode = OUT_MODE_VIP11,
410
.demod_xfer_mode = 0,
411
.ctl_pin_status_mask = 0xFFFFFFC4,
412
.agc_analog_digital_select_gpio = 0x11, /* According with PV cxPolaris.inf file */
413
.tuner_sif_gpio = -1,
414
.tuner_scl_gpio = -1,
415
.tuner_sda_gpio = -1,
416
.gpio_pin_status_mask = 0x4001000,
417
.tuner_i2c_master = 2,
418
.demod_i2c_master = 1,
422
.norm = V4L2_STD_PAL_M,
424
.type = CX231XX_VMUX_TELEVISION,
425
.vmux = CX231XX_VIN_3_1,
426
.amux = CX231XX_AMUX_VIDEO,
429
.type = CX231XX_VMUX_COMPOSITE1,
430
.vmux = CX231XX_VIN_2_1,
431
.amux = CX231XX_AMUX_LINE_IN,
434
.type = CX231XX_VMUX_SVIDEO,
435
.vmux = CX231XX_VIN_1_1 |
436
(CX231XX_VIN_1_2 << 8) |
438
.amux = CX231XX_AMUX_LINE_IN,
399
442
[CX231XX_BOARD_PV_PLAYTV_USB_HYBRID] = {
420
463
.type = CX231XX_VMUX_TELEVISION,
421
464
.vmux = CX231XX_VIN_3_1,
422
465
.amux = CX231XX_AMUX_VIDEO,
425
.type = CX231XX_VMUX_COMPOSITE1,
426
.vmux = CX231XX_VIN_2_1,
427
.amux = CX231XX_AMUX_LINE_IN,
430
.type = CX231XX_VMUX_SVIDEO,
431
.vmux = CX231XX_VIN_1_1 |
432
(CX231XX_VIN_1_2 << 8) |
434
.amux = CX231XX_AMUX_LINE_IN,
468
.type = CX231XX_VMUX_COMPOSITE1,
469
.vmux = CX231XX_VIN_2_1,
470
.amux = CX231XX_AMUX_LINE_IN,
473
.type = CX231XX_VMUX_SVIDEO,
474
.vmux = CX231XX_VIN_1_1 |
475
(CX231XX_VIN_1_2 << 8) |
477
.amux = CX231XX_AMUX_LINE_IN,
481
[CX231XX_BOARD_PV_XCAPTURE_USB] = {
482
.name = "Pixelview Xcapture USB",
483
.tuner_type = TUNER_ABSENT,
484
.decoder = CX231XX_AVDECODER,
485
.output_mode = OUT_MODE_VIP11,
486
.demod_xfer_mode = 0,
487
.ctl_pin_status_mask = 0xFFFFFFC4,
488
.agc_analog_digital_select_gpio = 0x0c,
489
.gpio_pin_status_mask = 0x4001000,
490
.norm = V4L2_STD_NTSC,
493
.dont_use_port_3 = 1,
496
.type = CX231XX_VMUX_COMPOSITE1,
497
.vmux = CX231XX_VIN_2_1,
498
.amux = CX231XX_AMUX_LINE_IN,
501
.type = CX231XX_VMUX_SVIDEO,
502
.vmux = CX231XX_VIN_1_1 |
503
(CX231XX_VIN_1_2 << 8) |
505
.amux = CX231XX_AMUX_LINE_IN,
511
[CX231XX_BOARD_ICONBIT_U100] = {
512
.name = "Iconbit Analog Stick U100 FM",
513
.tuner_type = TUNER_ABSENT,
514
.decoder = CX231XX_AVDECODER,
515
.output_mode = OUT_MODE_VIP11,
516
.demod_xfer_mode = 0,
517
.ctl_pin_status_mask = 0xFFFFFFC4,
518
.agc_analog_digital_select_gpio = 0x1C,
519
.gpio_pin_status_mask = 0x4001000,
522
.type = CX231XX_VMUX_COMPOSITE1,
523
.vmux = CX231XX_VIN_2_1,
524
.amux = CX231XX_AMUX_LINE_IN,
527
.type = CX231XX_VMUX_SVIDEO,
528
.vmux = CX231XX_VIN_1_1 |
529
(CX231XX_VIN_1_2 << 8) |
531
.amux = CX231XX_AMUX_LINE_IN,
844
947
udev = usb_get_dev(interface_to_usbdev(interface));
845
948
ifnum = interface->altsetting[0].desc.bInterfaceNumber;
849
* Interface number 0 - IR interface
851
/* Check to see next free device and mark as used */
852
nr = find_first_zero_bit(&cx231xx_devused, CX231XX_MAXBOARDS);
853
cx231xx_devused |= 1 << nr;
855
if (nr >= CX231XX_MAXBOARDS) {
856
cx231xx_err(DRIVER_NAME
951
* Interface number 0 - IR interface (handled by mceusb driver)
952
* Interface number 1 - AV interface (handled by this driver)
957
/* Check to see next free device and mark as used */
958
nr = find_first_zero_bit(&cx231xx_devused, CX231XX_MAXBOARDS);
959
cx231xx_devused |= 1 << nr;
961
if (nr >= CX231XX_MAXBOARDS) {
962
cx231xx_err(DRIVER_NAME
857
963
": Supports only %i cx231xx boards.\n", CX231XX_MAXBOARDS);
858
cx231xx_devused &= ~(1 << nr);
862
/* allocate memory for our device state and initialize it */
863
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
865
cx231xx_err(DRIVER_NAME ": out of memory!\n");
866
cx231xx_devused &= ~(1 << nr);
870
snprintf(dev->name, 29, "cx231xx #%d", nr);
872
dev->model = id->driver_info;
873
dev->video_mode.alt = -1;
874
dev->interface_count++;
876
/* reset gpio dir and value */
879
dev->xc_fw_load_done = 0;
880
dev->has_alsa_audio = 1;
881
dev->power_mode = -1;
882
atomic_set(&dev->devlist_count, 0);
884
/* 0 - vbi ; 1 -sliced cc mode */
885
dev->vbi_or_sliced_cc_mode = 0;
887
/* get maximum no.of IAD interfaces */
888
assoc_desc = udev->actconfig->intf_assoc[0];
889
dev->max_iad_interface_count = assoc_desc->bInterfaceCount;
891
/* init CIR module TBD */
893
/* store the current interface */
896
/*mode_tv: digital=1 or analog=0*/
899
dev->USE_ISO = transfer_mode;
901
switch (udev->speed) {
905
case USB_SPEED_UNKNOWN:
916
if (udev->manufacturer)
917
strlcpy(descr, udev->manufacturer, sizeof(descr));
921
strlcat(descr, " ", sizeof(descr));
922
strlcat(descr, udev->product, sizeof(descr));
964
cx231xx_devused &= ~(1 << nr);
968
/* allocate memory for our device state and initialize it */
969
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
971
cx231xx_err(DRIVER_NAME ": out of memory!\n");
972
cx231xx_devused &= ~(1 << nr);
976
snprintf(dev->name, 29, "cx231xx #%d", nr);
978
dev->model = id->driver_info;
979
dev->video_mode.alt = -1;
981
dev->interface_count++;
982
/* reset gpio dir and value */
985
dev->xc_fw_load_done = 0;
986
dev->has_alsa_audio = 1;
987
dev->power_mode = -1;
988
atomic_set(&dev->devlist_count, 0);
990
/* 0 - vbi ; 1 -sliced cc mode */
991
dev->vbi_or_sliced_cc_mode = 0;
993
/* get maximum no.of IAD interfaces */
994
assoc_desc = udev->actconfig->intf_assoc[0];
995
dev->max_iad_interface_count = assoc_desc->bInterfaceCount;
997
/* init CIR module TBD */
999
/* store the current interface */
1002
/*mode_tv: digital=1 or analog=0*/
1005
dev->USE_ISO = transfer_mode;
1007
switch (udev->speed) {
1011
case USB_SPEED_UNKNOWN:
1012
case USB_SPEED_FULL:
1015
case USB_SPEED_HIGH:
1022
if (udev->manufacturer)
1023
strlcpy(descr, udev->manufacturer, sizeof(descr));
1025
if (udev->product) {
925
1027
strlcat(descr, " ", sizeof(descr));
927
cx231xx_info("New device %s@ %s Mbps "
928
"(%04x:%04x) with %d interfaces\n",
931
le16_to_cpu(udev->descriptor.idVendor),
932
le16_to_cpu(udev->descriptor.idProduct),
933
dev->max_iad_interface_count);
935
/* store the interface 0 back */
936
lif = udev->actconfig->interface[0];
938
/* increment interface count */
939
dev->interface_count++;
941
/* get device number */
944
assoc_desc = udev->actconfig->intf_assoc[0];
945
if (assoc_desc->bFirstInterface != ifnum) {
946
cx231xx_err(DRIVER_NAME ": Not found "
947
"matching IAD interface\n");
1028
strlcat(descr, udev->product, sizeof(descr));
1031
strlcat(descr, " ", sizeof(descr));
1033
cx231xx_info("New device %s@ %s Mbps "
1034
"(%04x:%04x) with %d interfaces\n",
1037
le16_to_cpu(udev->descriptor.idVendor),
1038
le16_to_cpu(udev->descriptor.idProduct),
1039
dev->max_iad_interface_count);
1041
/* store the interface 0 back */
1042
lif = udev->actconfig->interface[0];
1044
/* increment interface count */
1045
dev->interface_count++;
1047
/* get device number */
1050
assoc_desc = udev->actconfig->intf_assoc[0];
1051
if (assoc_desc->bFirstInterface != ifnum) {
1052
cx231xx_err(DRIVER_NAME ": Not found "
1053
"matching IAD interface\n");