gspca pac7302: add USB PID range based on heuristics
RFC PATCH 1/1 gspca pac7302: add USB PID range based on heuristics
Hi,
as I was reading the PixArt PAC7301/PAC7302 datasheet
( http://www.pixart.com.tw/upload/PAC7301_7302%20%20Spec%20V1_20091228174030.pdf ) I recognised a little description on the schematics. This is about how to set up the USB Product ID from range 0x2620..0x262f via hardware wires.
I had the idea that the list of supported devices could be extended with the full range because the System on a Chip internals will not change just because it is configured to a different USB Product ID.
I don't know much about the maintenance implications that's why I'm very much listening to the comments of this idea.
So, what do you think?
Regards,
Márton Németh
---
From: Márton Németh <[email protected]>
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.
---
linux/drivers/media/video/gspca/pac7302.c +28 -0
@@ -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 " +"[email protected] 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 ); }
Hi,
Quoted 7 lines · Németh Márton
Hi,
as I was reading the PixArt PAC7301/PAC7302 datasheet
( http://www.pixart.com.tw/upload/PAC7301_7302%20%20Spec%20V1_20091228174030.pdf ) I recognised a little description on the schematics. This is about how to set up the USB Product ID from range 0x2620..0x262f via hardware wires.
Quoted 9 lines
I had the idea that the list of supported devices could be extended with the full range because the System on a Chip internals will not change just because it is configured to a different USB Product ID.
I don't know much about the maintenance implications that's why I'm very much listening to the comments of this idea.
So, what do you think?
Seems like a good idea to me.
Regards,
Hans
Quoted 84 lines
Regards,
Márton Németh
---
From: Márton Németh<[email protected]>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 "PIDIO_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<[email protected]>---
diff -rdfa82cf98a85linux/drivers/media/video/gspca/pac7302.clinux/drivers/media/video/gspca/pac7302.c +28
-1@@ -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 " +"[email protected] 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/1 gspca pac7302: add USB PID range based on heuristics
From: Márton Németh <[email protected]>
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.
---
linux/drivers/media/video/gspca/pac7302.c +28 -0
@@ -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 " +"[email protected] 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 ); }
Quoted 8 lines · On Wed, 24 Feb 2010 08:09:41 +0100 Németh Márton <[email protected]> wrote:
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 "PIDIO_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.
Hello,
I got such information from ms-win drivers. I appeared that most of the unknown/new webcams were never manufactured. Now, I wait for user requests before adding such webcams.
Cheers.
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Hi,
Quoted 12 lines · Jean-Francois Moine
Quoted 8 lines · On Wed, 24 Feb 2010 08:09:41 +0100 Németh Márton <[email protected]> wrote:
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 "PIDIO_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.
Quoted 5 lines
Hello,
I got such information from ms-win drivers. I appeared that most of the unknown/new webcams were never manufactured. Now, I wait for user requests before adding such webcams.
What about Genius iSlim 310? Based on the Windows driver this device is a potential candidate for pac7302 driver, see
http://linuxtv.org/wiki/index.php/PixArt_PAC7301/PAC7302#Identification
I don't have access to Genius iSlim 310 so I cannot tell it for sure.
Regards,
Márton Németh