Hans,

If you read the mail to Oliver Neukum on the linux-usb list, then you know that I found a cure for the mysterious problem that the MR97310a CIF "type 1" cameras have been freezing up and refusing to stream if hooked up to a machine with a UHCI controller.

Namely, the cure is that if the camera is an mr97310a CIF type 1 camera, you have to send it 0xa0, 0x00. Somehow, this is a timing reset command, or such. It un-blocks whatever was previously stopping the CIF type 1 cameras from working on the UHCI-based machines.

I have made a patch from your tree, which is below. I think that you should use all efforts to get your version of mr97310a.c with this patch applied to it, into upstream immediately. For, it fixes the rather nasty problem that the CIF type 1 cameras refuse to stream on a machine with a UHCI-based controller.

Fixing that problem is on top of the fact that the code which is at present in 2.6.32-rc6 uses the old detection scheme for the sensor type of the camera and is inferior in several other aspects, too. Therefore, I strongly support the idea of replacing the file gspca/mr97310a.c in 2.6.32-rc6 with the patched version of the file from your tree.

As I said, the patch is based upon the code in your tree, not upon the version which is in 2.6.32-rc6. But the resulting version of mr97310a.c has been tested here on several machines, including one running 2.6.32-rc6 which has a UHCI controller inside. And it works nicely on all of them.

Theodore Kilgore

Signed off by: Theodore Kilgore <kilg...@auburn.edu>
-------------------------------------------------------------------------

diff -r 577440e8b8df linux/drivers/media/video/gspca/mr97310a.c
--- a/linux/drivers/media/video/gspca/mr97310a.c Sun Nov 01 17:09:15 2009 +0100 +++ b/linux/drivers/media/video/gspca/mr97310a.c Sat Nov 14 16:32:18 2009 -0600
@@ -697,6 +697,11 @@
                        {0x13, 0x00, {0x01}, 1},
                        {0, 0, {0}, 0}
                };
+ /* Without this command the cam won't work with USB-UHCI */
+               gspca_dev->usb_buf[0] = 0x0a;
+               gspca_dev->usb_buf[1] = 0x00;
+               if (mr_write(gspca_dev, 2) < 0)
+                       PDEBUG(D_ERR, "start_cif_cam fails");
err_code = sensor_write_regs(gspca_dev, cif_sensor1_init_data,

ARRAY_SIZE(cif_sensor1_init_data));
        }


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

Reply via email to