On Fri, Jan 25, 2013 at 03:11:57PM +0100, Stefan Sperling wrote:
> If this diff goes
> in I'll later add more printers listed at
> http://www.openprinting.org/driver/foo2zjs/
> once I've obtained their device IDs.

It seems only 4 HP printers really need this quirk, so that's
easy enough to do right away.
Device IDs obtained from http://www.linux-usb.org/usb.ids

Index: ulpt.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/ulpt.c,v
retrieving revision 1.40
diff -u -p -r1.40 ulpt.c
--- ulpt.c      17 Sep 2011 08:36:06 -0000      1.40
+++ ulpt.c      25 Jan 2013 13:13:58 -0000
@@ -146,6 +146,8 @@ ulpt_match(struct device *parent, void *
        DPRINTFN(10,("ulpt_match\n"));
        if (uaa->iface == NULL)
                return (UMATCH_NONE);
+       if (usbd_get_quirks(uaa->device)->uq_flags & UQ_BAD_ULTP)
+               return (UMATCH_NONE);
        id = usbd_get_interface_descriptor(uaa->iface);
        if (id != NULL &&
            id->bInterfaceClass == UICLASS_PRINTER &&
Index: usb_quirks.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usb_quirks.c,v
retrieving revision 1.66
diff -u -p -r1.66 usb_quirks.c
--- usb_quirks.c        31 Jan 2012 21:13:32 -0000      1.66
+++ usb_quirks.c        25 Jan 2013 14:30:31 -0000
@@ -172,6 +172,12 @@ const struct usbd_quirk_entry {
  { USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_WLNOTEBOOK2,
        ANY, { UQ_MS_BAD_CLASS | UQ_MS_LEADING_BYTE }},
 
+ /* printers that must attach as ugen(4) not ulpt(4) (need firmware download) 
*/
+ { USB_VENDOR_HP, USB_PRODUCT_HP_1000,     ANY,   { UQ_BAD_ULTP }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_1005,     ANY,   { UQ_BAD_ULTP }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_1018,     ANY,   { UQ_BAD_ULTP }},
+ { USB_VENDOR_HP, USB_PRODUCT_HP_1020,     ANY,   { UQ_BAD_ULTP }},
+
  { 0, 0, 0, { 0 } }
 };
 
Index: usb_quirks.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usb_quirks.h,v
retrieving revision 1.16
diff -u -p -r1.16 usb_quirks.h
--- usb_quirks.h        19 Jul 2010 05:08:37 -0000      1.16
+++ usb_quirks.h        25 Jan 2013 13:15:42 -0000
@@ -49,6 +49,7 @@ struct usbd_quirks {
 #define UQ_MS_LEADING_BYTE     0x00010000 /* mouse sends unknown leading byte 
*/
 #define UQ_EHCI_NEEDTO_DISOWN  0x00020000 /* must hand device over to USB 1.1
                                                if attached to EHCI */
+#define UQ_BAD_ULTP            0x00040000 /* printer must be ugen not ulpt */
 };
 
 extern const struct usbd_quirks usbd_no_quirk;
Index: usbdevs
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.595
diff -u -p -r1.595 usbdevs
--- usbdevs     4 Jan 2013 02:47:46 -0000       1.595
+++ usbdevs     25 Jan 2013 14:29:06 -0000
@@ -2032,6 +2032,7 @@ product HP 5200C          0x0401  Scanjet 5200C
 product HP 830C                        0x0404  DeskJet 830C
 product HP 3400CSE             0x0405  ScanJet 3400cse
 product HP 885C                        0x0504  DeskJet 885C
+product HP 1000                        0x0517  LaserJet 1000
 product HP 6300C               0x0601  Scanjet 6300C
 product HP 840C                        0x0604  DeskJet 840c
 product HP 2200C               0x0605  ScanJet 2200C
@@ -2043,6 +2044,7 @@ product HP 2215                   0x1016  iPAQ 22xx/Jorn
 product HP 959C                        0x1104  Deskjet 959C
 product HP 568J                        0x1116  Jornada 568
 product HP 930C                        0x1204  DeskJet 930c
+product HP 1005                        0x1317  LaserJet 1005
 product HP P2000U              0x1801  Inkjet P-2000U
 product HP HS2300              0x1e1d  HS2300
 product HP T750                        0x1f06  T750 UPS
@@ -2052,7 +2054,9 @@ product HP RT2200         0x1f0a  R/T2200 UPS
 product HP R1500G2             0x1fe0  R1500 G2 UPS
 product HP T750G2              0x1fe1  T750 G2 UPS
 product HP 640C                        0x2004  DeskJet 640c
+product HP 1020                        0x2b17  LaserJet 1020
 product HP P1100               0x3102  Photosmart P1100
+product HP 1018                        0x4117  LaserJet 1018
 product HP HN210E              0x811c  HN210E Ethernet
 
 /* HP products */
Index: usbdevs.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.605
diff -u -p -r1.605 usbdevs.h
--- usbdevs.h   4 Jan 2013 02:48:27 -0000       1.605
+++ usbdevs.h   25 Jan 2013 14:29:59 -0000
@@ -2039,6 +2039,7 @@
 #define        USB_PRODUCT_HP_830C     0x0404          /* DeskJet 830C */
 #define        USB_PRODUCT_HP_3400CSE  0x0405          /* ScanJet 3400cse */
 #define        USB_PRODUCT_HP_885C     0x0504          /* DeskJet 885C */
+#define        USB_PRODUCT_HP_1000     0x0517          /* LaserJet 1000 */
 #define        USB_PRODUCT_HP_6300C    0x0601          /* Scanjet 6300C */
 #define        USB_PRODUCT_HP_840C     0x0604          /* DeskJet 840c */
 #define        USB_PRODUCT_HP_2200C    0x0605          /* ScanJet 2200C */
@@ -2050,6 +2051,7 @@
 #define        USB_PRODUCT_HP_959C     0x1104          /* Deskjet 959C */
 #define        USB_PRODUCT_HP_568J     0x1116          /* Jornada 568 */
 #define        USB_PRODUCT_HP_930C     0x1204          /* DeskJet 930c */
+#define        USB_PRODUCT_HP_1005     0x1317          /* LaserJet 1005 */
 #define        USB_PRODUCT_HP_P2000U   0x1801          /* Inkjet P-2000U */
 #define        USB_PRODUCT_HP_HS2300   0x1e1d          /* HS2300 */
 #define        USB_PRODUCT_HP_T750     0x1f06          /* T750 UPS */
@@ -2059,7 +2061,9 @@
 #define        USB_PRODUCT_HP_R1500G2  0x1fe0          /* R1500 G2 UPS */
 #define        USB_PRODUCT_HP_T750G2   0x1fe1          /* T750 G2 UPS */
 #define        USB_PRODUCT_HP_640C     0x2004          /* DeskJet 640c */
+#define        USB_PRODUCT_HP_1020     0x2b17          /* LaserJet 1020 */
 #define        USB_PRODUCT_HP_P1100    0x3102          /* Photosmart P1100 */
+#define        USB_PRODUCT_HP_1018     0x4117          /* LaserJet 1018 */
 #define        USB_PRODUCT_HP_HN210E   0x811c          /* HN210E Ethernet */
 
 /* HP products */
Index: usbdevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.599
diff -u -p -r1.599 usbdevs_data.h
--- usbdevs_data.h      4 Jan 2013 02:48:27 -0000       1.599
+++ usbdevs_data.h      25 Jan 2013 14:29:59 -0000
@@ -4150,6 +4150,10 @@ const struct usb_known_product usb_known
            "DeskJet 885C",
        },
        {
+           USB_VENDOR_HP, USB_PRODUCT_HP_1000,
+           "LaserJet 1000",
+       },
+       {
            USB_VENDOR_HP, USB_PRODUCT_HP_6300C,
            "Scanjet 6300C",
        },
@@ -4194,6 +4198,10 @@ const struct usb_known_product usb_known
            "DeskJet 930c",
        },
        {
+           USB_VENDOR_HP, USB_PRODUCT_HP_1005,
+           "LaserJet 1005",
+       },
+       {
            USB_VENDOR_HP, USB_PRODUCT_HP_P2000U,
            "Inkjet P-2000U",
        },
@@ -4230,8 +4238,16 @@ const struct usb_known_product usb_known
            "DeskJet 640c",
        },
        {
+           USB_VENDOR_HP, USB_PRODUCT_HP_1020,
+           "LaserJet 1020",
+       },
+       {
            USB_VENDOR_HP, USB_PRODUCT_HP_P1100,
            "Photosmart P1100",
+       },
+       {
+           USB_VENDOR_HP, USB_PRODUCT_HP_1018,
+           "LaserJet 1018",
        },
        {
            USB_VENDOR_HP, USB_PRODUCT_HP_HN210E,

Reply via email to