[V4L] Old DC10: Patch for 0.6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hello,

I have received a patch from Brian Flachs <flachs@xxxxxxxxxxxxxxxxxxxx>
which may fix this problem with older ZR36057 chips. The patch is
available here. It must be applied against version 0.6 of the driver. 

If you have the problem with older DC10 cards, please, try this patch
and send me a note whether this workaround works on your system. Also,
please, test it thoroughly and check if it breaks something that works
with out-of-the-box version 0.6. If everything is OK, this patch will
be included in the next driver release.

Best regards,
Serguei Miridonov.

------ Original message --------
  Date: Tue, 17 Oct 2000 06:46:36 -0700
  From: Brian Flachs <flachs@xxxxxxxxxxxxxxxxxxxx>
  Message-Id: <200010171346.GAA29153@xxxxxxxxxxxxxxxxxxxx>
  To: mirsev@xxxxxxxxx
  Subject: Re: version 0.6


hi,

so looking at what parameters are set when xawtv runs,
i think i have a reasonable starting point.  i can 
atleast start xawtv, lavrec, lavrec, lavrec successfully.

i have not made this conditional on what kind of board
is there.  since other boards already work, i guess some 
thing needs to be figured out there.

--- dc10.c~     Fri Oct 13 10:08:22 2000
+++ dc10.c      Tue Oct 17 08:50:56 2000
@@ -1,4 +1,4 @@
-#define DEBUGLEVEL 0
+#define DEBUGLEVEL 3
 #define MAX_KMALLOC_MEM (128*1024)
 /*
    Miro/Pinnacle Systems Inc. DC10/DC10plus and
@@ -3106,6 +3106,77 @@
 }
 
 /*
+ * this seems to be neccessary for 36057's
+ */
+
+static void zoran_reinit(struct zoran *zr)
+  {
+  int overlay_on;
+  int input;
+  
+  /* reset the chip completely */
+  btwrite(0, ZR36057_SPGPPCR);
+  mdelay(1);
+  btwrite(ZR36057_SPGPPCR_SoftReset, ZR36057_SPGPPCR);
+  mdelay(1);
+
+  /* assert P_Reset */
+  btwrite(0, ZR36057_JPC);
+
+  /* set up GPIO direction - all output */
+  btwrite(ZR36057_SPGPPCR_SoftReset | 0, ZR36057_SPGPPCR);
+  btwrite((0x81 << 24) | 0x8888, ZR36057_GPPGCR1);
+
+  /* reset JPEG codec */
+  zr36060_sleep(zr, 1);
+  zr36060_reset(zr);
+
+  /* now we shall reload the chip */
+
+  /* overlay */
+  zr36057_overlay(zr, 0);
+  set_videobus_enable(zr, 0);
+
+  switch (zr->params.input)
+    {
+    case 0:
+      input = 0;
+
+  set_input:
+      i2c_control_device(&zr->i2c, I2C_DRIVERID_VIDEODECODER, DECODER_SET_INPUT, &input);
+      break;
+
+    case 1:
+      input = 7;
+      goto set_input;
+      
+    case 2:
+      if(zr->card == DC10 || zr->card == DC10plus)
+        {
+        input = 5;
+        goto set_input;
+        }
+    }
+
+  i2c_control_device(&zr->i2c, I2C_DRIVERID_VIDEODECODER, DECODER_SET_NORM, &zr->params.norm);
+  i2c_control_device(&zr->i2c, I2C_DRIVERID_VIDEOENCODER, ENCODER_SET_NORM, &zr->params.norm);
+  set_videobus_enable(zr, 1);
+
+  overlay_on = zr->v4l_overlay_active && !zr->v4l_memgrab_active;
+  if (overlay_on) zr36057_overlay(zr, 1);
+
+  /* Make sure the changes come into effect */
+  wait_grab_pending(zr);
+
+  /* brightness hue and color... */
+  i2c_control_device(&zr->i2c,I2C_DRIVERID_VIDEODECODER,DECODER_SET_PICTURE,&zr->picture);
+
+  /* zr36057_set_memgrab(zr, 1) ??? */
+
+  
+  }
+
+/*
  *   Open a zoran card. Right now the flags stuff is just playing
  */
 
@@ -3132,6 +3203,9 @@
                }
 
                /* default setup */
+#if 1
+                zoran_reinit(zr);
+#endif                
 
                if (zr->user == 1) {    /* First device open */
                        zoran_open_init_params(zr);







[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux