On Sat, 2010-10-30 at 22:25 +0400, Alexey Chernov wrote:
> Hi, Andy,
> 
> On Saturday 30 October 2010 20:46:26 Andy Walls wrote:
 
> > Does this card have an EEPROM?  I couldn't tell from pictures on the
> > internet.  (Maybe one of the chips designated U2, SU3, or SU1 is an
> > EEPROM.)

> > Do you happen to know the part number of the EEPROM chip?
> > Does the current EEPROM dump, when initializing the GoTView card,
> > output anything interesting, or is it all "0xff"?
> 
> yes, it does. I've got full EEPROM dump of it from support and also it
> is printed during initialization. Here's the output of dmesg
> concerning the card:

OK.  Thanks.  I don't think you need to bother GoTView about a part
number if things are working and the EERPOM didn't get erased yet. ;)

I've even managed to decode some of the EEPROM data:

> cx18:  Start initialization, version 1.4.0
> cx18-0: Initializing card 0
> cx18-0: Autodetected GoTView PCI DVD3 Hybrid card
> cx18-0: cx23418 revision 01010000 (B)
> cx18-0: eeprom dump:
> cx18-0: eeprom 00: 56 54 58 43 33 ff ff ff ff ff ff ff ff ff ff ff
                        ^^^^^^^^^^^
PCI Subsystem Vendor/Device ID (just like the MPC-718)

> cx18-0: eeprom 10: 5a 00 55 aa 9a a9 60 03 00 1b 88 10 00 00 00 00
> cx18-0: eeprom 20: 02 00 00 01 00 00 00 00 ff ff ff ff ff ff ff ff
> cx18-0: eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom 80: 47 4f 54 56 49 45 57 20 50 52 4f 20 44 56 44 33
                     G  O  T  V  I  E  W     P  R  O     D  V  D  3   

> cx18-0: eeprom 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom a0: 79 02 95 20 25 80 79 03 95 20 55 80 83 82 26 69
> cx18-0: eeprom b0: 30 80 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> cx18-0: eeprom e0: 45 45 50 52 4f 4d 20 47 6f 54 56 69 65 77 20 50
                     E  E  P  R  O  M     G  o  T  V  i  e  w     P

> cx18-0: eeprom f0: 52 4f 00 76 34 2e 30 ff ff ff ff ff ff ff ff ff
                     R  O     v  4  .  0

> cx18-0: eeprom PCI ID: 5854:3343

> The EEPROM dump seems to match one that I received from Gotview
> support so it appears to be correct. As for part number, I think I can
> ask Gotview support for it on Monday.

I agree, the EEPROM data appears to be correct.  We probably don't need
to know the part number.




> Ok, thank you for suggestion, did it (new patch below).


> Several comments on the patch:
> 1. Both users on the official Gotview forum and support said that PCI DVD3 is 
> very similar to Yuan MPC718 card so the main part of code is taken from Yuan 
> configuration. Some users reported it to work properly.
> 2. Everything is being initialized correctly including analog, dvb, radio and 
> alsa parts. Analogue part and alsa virtual card is tested by myself using 
> original Gotview card.
> 3. Thanks to GoTView for providing information about the card.
> 
> Signed-off-by: Alexey Chernov <[email protected]>

Looks good.

Tested-by: Alexey Chernov <[email protected]>
Reviewed-by: Andy Walls <[email protected]>
Signed-off-by: Andy Walls <[email protected]>

Regards,
Andy

> diff -uprB v4l-dvb.orig/drivers/media/video/cx18/cx18-cards.c 
> v4l-dvb/drivers/media/video/cx18/cx18-cards.c
> --- v4l-dvb.orig/drivers/media/video/cx18/cx18-cards.c        2010-10-28 
> 22:04:11.000000000 +0400
> +++ v4l-dvb/drivers/media/video/cx18/cx18-cards.c     2010-10-30 
> 22:12:50.000000000 +0400
> @@ -251,6 +251,66 @@ static const struct cx18_card cx18_card_
>  
>  /* ------------------------------------------------------------------------- 
> */
>  
> +/* GoTView PCI */
> +
> +static const struct cx18_card_pci_info cx18_pci_gotview_dvd3[] = {
> +     { PCI_DEVICE_ID_CX23418, CX18_PCI_ID_GOTVIEW, 0x3343 },
> +     { 0, 0, 0 }
> +};
> +
> +static const struct cx18_card cx18_card_gotview_dvd3 = {
> +     .type = CX18_CARD_GOTVIEW_PCI_DVD3,
> +     .name = "GoTView PCI DVD3 Hybrid",
> +     .comment = "Experimenters needed for device to work well.\n"
> +               "\tTo help, mail the ivtv-devel list (www.ivtvdriver.org).\n",
> +     .v4l2_capabilities = CX18_CAP_ENCODER,
> +     .hw_audio_ctrl = CX18_HW_418_AV,
> +     .hw_muxer = CX18_HW_GPIO_MUX,
> +     .hw_all = CX18_HW_TVEEPROM | CX18_HW_418_AV | CX18_HW_TUNER |
> +               CX18_HW_GPIO_MUX | CX18_HW_DVB | CX18_HW_GPIO_RESET_CTRL,
> +     .video_inputs = {
> +             { CX18_CARD_INPUT_VID_TUNER,  0, CX18_AV_COMPOSITE2 },
> +             { CX18_CARD_INPUT_SVIDEO1,    1,
> +                             CX18_AV_SVIDEO_LUMA3 | CX18_AV_SVIDEO_CHROMA4 },
> +             { CX18_CARD_INPUT_COMPOSITE1, 1, CX18_AV_COMPOSITE1 },
> +             { CX18_CARD_INPUT_SVIDEO2,    2,
> +                             CX18_AV_SVIDEO_LUMA7 | CX18_AV_SVIDEO_CHROMA8 },
> +             { CX18_CARD_INPUT_COMPOSITE2, 2, CX18_AV_COMPOSITE6 },
> +     },
> +     .audio_inputs = {
> +             { CX18_CARD_INPUT_AUD_TUNER, CX18_AV_AUDIO5,        0 },
> +             { CX18_CARD_INPUT_LINE_IN1,  CX18_AV_AUDIO_SERIAL1, 1 },
> +             { CX18_CARD_INPUT_LINE_IN2,  CX18_AV_AUDIO_SERIAL2, 1 },
> +     },
> +     .tuners = {
> +             /* XC3028 tuner */
> +             { .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
> +     },
> +     /* FIXME - the FM radio is just a guess and driver doesn't use SIF */
> +     .radio_input = { CX18_CARD_INPUT_AUD_TUNER, CX18_AV_AUDIO5, 2 },
> +     .ddr = {
> +             /* Hynix HY5DU283222B DDR RAM */
> +             .chip_config = 0x303,
> +             .refresh = 0x3bd,
> +             .timing1 = 0x36320966,
> +             .timing2 = 0x1f,
> +             .tune_lane = 0,
> +             .initial_emrs = 2,
> +     },
> +     .gpio_init.initial_value = 0x1,
> +     .gpio_init.direction = 0x3,
> +     
> +     .gpio_audio_input = { .mask   = 0x3,
> +                           .tuner  = 0x1,
> +                           .linein = 0x2,
> +                           .radio  = 0x1 },
> +     .xceive_pin = 0,
> +     .pci_list = cx18_pci_gotview_dvd3,
> +     .i2c = &cx18_i2c_std,
> +};
> +
> +/* ------------------------------------------------------------------------- 
> */
> +
>  /* Conexant Raptor PAL/SECAM: note that this card is analog only! */
>  
>  static const struct cx18_card_pci_info cx18_pci_cnxt_raptor_pal[] = {
> @@ -463,6 +523,7 @@ static const struct cx18_card *cx18_card
>       &cx18_card_toshiba_qosmio_dvbt,
>       &cx18_card_leadtek_pvr2100,
>       &cx18_card_leadtek_dvr3100h,
> +     &cx18_card_gotview_dvd3
>  };
>  
>  const struct cx18_card *cx18_get_card(u16 index)
> diff -uprB v4l-dvb.orig/drivers/media/video/cx18/cx18-driver.c 
> v4l-dvb/drivers/media/video/cx18/cx18-driver.c
> --- v4l-dvb.orig/drivers/media/video/cx18/cx18-driver.c       2010-10-28 
> 22:04:11.000000000 +0400
> +++ v4l-dvb/drivers/media/video/cx18/cx18-driver.c    2010-10-30 
> 22:14:03.000000000 +0400
> @@ -156,6 +156,7 @@ MODULE_PARM_DESC(cardtype,
>                "\t\t\t 6 = Toshiba Qosmio DVB-T/Analog\n"
>                "\t\t\t 7 = Leadtek WinFast PVR2100\n"
>                "\t\t\t 8 = Leadtek WinFast DVR3100 H\n"
> +              "\t\t\t 9 = GoTView PCI DVD3 Hybrid\n"
>                "\t\t\t 0 = Autodetect (default)\n"
>                "\t\t\t-1 = Ignore this card\n\t\t");
>  MODULE_PARM_DESC(pal, "Set PAL standard: B, G, H, D, K, I, M, N, Nc, 60");
> @@ -338,6 +339,12 @@ void cx18_read_eeprom(struct cx18 *cx, s
>               CX18_INFO("eeprom PCI ID: %02x%02x:%02x%02x\n",
>                         eedata[2], eedata[1], eedata[4], eedata[3]);
>               break;
> +     case CX18_CARD_GOTVIEW_PCI_DVD3:
> +             tv->model = 0x3343;
> +             cx18_eeprom_dump(cx, eedata, sizeof(eedata));
> +             CX18_INFO("eeprom PCI ID: %02x%02x:%02x%02x\n",
> +                       eedata[2], eedata[1], eedata[4], eedata[3]);
> +             break;
>       default:
>               tv->model = 0xffffffff;
>               cx18_eeprom_dump(cx, eedata, sizeof(eedata));
> @@ -362,6 +369,8 @@ static void cx18_process_eeprom(struct c
>               break;
>       case 0x718:
>               return;
> +     case 0x3343:
> +             return;
>       case 0xffffffff:
>               CX18_INFO("Unknown EEPROM encoding\n");
>               return;
> diff -uprB v4l-dvb.orig/drivers/media/video/cx18/cx18-driver.h 
> v4l-dvb/drivers/media/video/cx18/cx18-driver.h
> --- v4l-dvb.orig/drivers/media/video/cx18/cx18-driver.h       2010-10-28 
> 22:04:11.000000000 +0400
> +++ v4l-dvb/drivers/media/video/cx18/cx18-driver.h    2010-10-30 
> 22:12:50.000000000 +0400
> @@ -84,7 +84,8 @@
>  #define CX18_CARD_TOSHIBA_QOSMIO_DVBT 5 /* Toshiba Qosmio Interal 
> DVB-T/Analog*/
>  #define CX18_CARD_LEADTEK_PVR2100     6 /* Leadtek WinFast PVR2100 */
>  #define CX18_CARD_LEADTEK_DVR3100H    7 /* Leadtek WinFast DVR3100 H */
> -#define CX18_CARD_LAST                     7
> +#define CX18_CARD_GOTVIEW_PCI_DVD3    8 /* GoTView PCI DVD3 Hybrid */
> +#define CX18_CARD_LAST                     8
>  
>  #define CX18_ENC_STREAM_TYPE_MPG  0
>  #define CX18_ENC_STREAM_TYPE_TS   1
> @@ -106,6 +107,7 @@
>  #define CX18_PCI_ID_CONEXANT         0x14f1
>  #define CX18_PCI_ID_TOSHIBA          0x1179
>  #define CX18_PCI_ID_LEADTEK          0x107D
> +#define CX18_PCI_ID_GOTVIEW          0x5854
>  
>  /* ======================================================================== 
> */
>  /* ========================== START USER SETTABLE DMA VARIABLES =========== 
> */
> diff -uprB v4l-dvb.orig/drivers/media/video/cx18/cx18-dvb.c 
> v4l-dvb/drivers/media/video/cx18/cx18-dvb.c
> --- v4l-dvb.orig/drivers/media/video/cx18/cx18-dvb.c  2010-10-28 
> 22:04:11.000000000 +0400
> +++ v4l-dvb/drivers/media/video/cx18/cx18-dvb.c       2010-10-30 
> 22:18:45.000000000 +0400
> @@ -203,6 +203,14 @@ static struct zl10353_config yuan_mpc718
>       .disable_i2c_gate_ctrl = 1,         /* Disable the I2C gate */
>  };
>  
> +static struct zl10353_config gotview_dvd3_zl10353_demod = {
> +     .demod_address         = 0x1e >> 1, /* Datasheet suggested straps */
> +     .if2                   = 45600,     /* 4.560 MHz IF from the XC3028 */
> +     .parallel_ts           = 1,         /* Not a serial TS */
> +     .no_tuner              = 1,         /* XC3028 is not behind the gate */
> +     .disable_i2c_gate_ctrl = 1,         /* Disable the I2C gate */
> +};
> +
>  static int dvb_register(struct cx18_stream *stream);
>  
>  /* Kernel DVB framework calls this when the feed needs to start.
> @@ -247,6 +255,7 @@ static int cx18_dvb_start_feed(struct dv
>  
>       case CX18_CARD_LEADTEK_DVR3100H:
>       case CX18_CARD_YUAN_MPC718:
> +     case CX18_CARD_GOTVIEW_PCI_DVD3:
>       default:
>               /* Assumption - Parallel transport - Signalling
>                * undefined or default.
> @@ -495,6 +504,29 @@ static int dvb_register(struct cx18_stre
>                               fe->ops.tuner_ops.set_config(fe, &ctrl);
>               }
>               break;
> +     case CX18_CARD_GOTVIEW_PCI_DVD3:
> +             dvb->fe = dvb_attach(zl10353_attach,
> +                                  &gotview_dvd3_zl10353_demod,
> +                                  &cx->i2c_adap[1]);
> +             if (dvb->fe != NULL) {
> +                     struct dvb_frontend *fe;
> +                     struct xc2028_config cfg = {
> +                             .i2c_adap = &cx->i2c_adap[1],
> +                             .i2c_addr = 0xc2 >> 1,
> +                             .ctrl = NULL,
> +                     };
> +                     static struct xc2028_ctrl ctrl = {
> +                             .fname   = XC2028_DEFAULT_FIRMWARE,
> +                             .max_len = 64,
> +                             .demod   = XC3028_FE_ZARLINK456,
> +                             .type    = XC2028_AUTO,
> +                     };
> +
> +                     fe = dvb_attach(xc2028_attach, dvb->fe, &cfg);
> +                     if (fe != NULL && fe->ops.tuner_ops.set_config != NULL)
> +                             fe->ops.tuner_ops.set_config(fe, &ctrl);
> +             }
> +             break;
>       default:
>               /* No Digital Tv Support */
>               break;
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to