Hi,

based on the information from installing the Windows driver the
Genius iSlim 310 is a potential candidate that the gspca_pac7302 driver under
Linux may handle, see
http://linuxtv.org/wiki/index.php/PixArt_PAC7301/PAC7302#Identification .

If you have access to Genius iSlim 310 and would like to give a try please
apply the patch in this email, compile and install the patched kernel,
check "dmesg" for messages and try whether the webcam is working for
example with cheese.

Regards,

        Márton Németh

---
From: Márton Németh <nm...@freemail.hu>

On the schematics in PixArt PAC7301/PAC7302 datasheet
(http://www.pixart.com.tw/upload/PAC7301_7302%20%20Spec%20V1_20091228174030.pdf)
pages 19, 20, 21 and 22 there is a note titled "PID IO_TRAP" which describes
the possible product ID range 0x2620..0x262f. In this range there are some
known webcams, however, there are some PIDs with unknown or future devices.
Because PixArt PAC7301/PAC7302 is a System on a Chip (SoC) device is is
probable that this driver will work correctly independent of the used PID.

Signed-off-by: Márton Németh <nm...@freemail.hu>
---
diff -r dfa82cf98a85 linux/drivers/media/video/gspca/pac7302.c
--- a/linux/drivers/media/video/gspca/pac7302.c Sat Jan 30 20:03:02 2010 +0100
+++ b/linux/drivers/media/video/gspca/pac7302.c Sun Jan 31 11:08:21 2010 +0100
@@ -96,6 +96,7 @@
        u8 flags;
 #define FL_HFLIP 0x01          /* mirrored by default */
 #define FL_VFLIP 0x02          /* vertical flipped by default */
+#define FL_EXPERIMENTAL 0x80   /* USB IDs based on heuristic without any known 
product */

        u8 sof_read;
        u8 autogain_ignore_frames;
@@ -1220,17 +1221,33 @@
 };

 /* -- module initialisation -- */
+/* Note on FL_EXPERIMENTAL:
+ * On the schematics in PixArt PAC7301/PAC7302 datasheet
+ * 
(http://www.pixart.com.tw/upload/PAC7301_7302%20%20Spec%20V1_20091228174030.pdf)
+ * pages 19, 20, 21 and 22 there is a note titled "PID IO_TRAP" which describes
+ * the possible product ID range 0x2620..0x262f. In this range there are some
+ * known webcams, however, there are some PIDs with unknown or future devices.
+ * Because PixArt PAC7301/PAC7302 is a System on a Chip (SoC) device is is
+ * probable that this driver will work correctly independent of the used PID.
+ */
 static const struct usb_device_id device_table[] __devinitconst = {
        {USB_DEVICE(0x06f8, 0x3009)},
        {USB_DEVICE(0x093a, 0x2620)},
        {USB_DEVICE(0x093a, 0x2621)},
        {USB_DEVICE(0x093a, 0x2622), .driver_info = FL_VFLIP},
+       {USB_DEVICE(0x093a, 0x2623), .driver_info = FL_EXPERIMENTAL },
        {USB_DEVICE(0x093a, 0x2624), .driver_info = FL_VFLIP},
+       {USB_DEVICE(0x093a, 0x2625), .driver_info = FL_EXPERIMENTAL },
        {USB_DEVICE(0x093a, 0x2626)},
+       {USB_DEVICE(0x093a, 0x2627), .driver_info = FL_EXPERIMENTAL },
        {USB_DEVICE(0x093a, 0x2628)},
        {USB_DEVICE(0x093a, 0x2629), .driver_info = FL_VFLIP},
        {USB_DEVICE(0x093a, 0x262a)},
+       {USB_DEVICE(0x093a, 0x262b), .driver_info = FL_EXPERIMENTAL },
        {USB_DEVICE(0x093a, 0x262c)},
+       {USB_DEVICE(0x093a, 0x262d), .driver_info = FL_EXPERIMENTAL },
+       {USB_DEVICE(0x093a, 0x262e), .driver_info = FL_EXPERIMENTAL },
+       {USB_DEVICE(0x093a, 0x262f), .driver_info = FL_EXPERIMENTAL },
        {}
 };
 MODULE_DEVICE_TABLE(usb, device_table);
@@ -1239,6 +1256,17 @@
 static int __devinit sd_probe(struct usb_interface *intf,
                        const struct usb_device_id *id)
 {
+       if ((u8)id->driver_info & FL_EXPERIMENTAL) {
+               PDEBUG(D_ERR | D_PROBE, "WARNING: USB device ID %04x:%04x is "
+                       "not known, but based on some heuristics this driver "
+                       "tries to handle it.",
+                       id->idVendor, id->idProduct);
+               PDEBUG(D_ERR | D_PROBE, "WARNING: Plase send an email to "
+                       "linux-media@vger.kernel.org with 'lsusb -v' output, "
+                       "the vendor and name of the product and whether the "
+                       "device is working or not.");
+       }
+
        return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd),
                                THIS_MODULE);
 }

--
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