The the attached patch, also available at http://setfilepointer.com/pub/src:sys:dev:usb:uplcom.c.patch
might help. I've needed it to make uplcom stuff work. -- Alec Kloss [EMAIL PROTECTED] IM: [EMAIL PROTECTED] PGP key at http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xA241980E "No Bunny!" -- Simon, from Frisky Dingo
--- src/sys/dev/usb/uplcom.c.orig Thu Nov 2 13:20:51 2006
+++ src/sys/dev/usb/uplcom.c Thu Nov 2 14:21:19 2006
@@ -154,6 +154,7 @@
#define TYPE_PL2303 0
#define TYPE_PL2303X 1
+#define TYPE_PL2303HX 2
struct uplcom_softc {
struct ucom_softc sc_ucom;
@@ -233,6 +234,9 @@
{ USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_RSAQ3, -1, TYPE_PL2303X },
/* PLANEX USB-RS232 URS-03 */
{ USB_VENDOR_ATEN, USB_PRODUCT_ATEN_UC232A, -1, TYPE_PL2303 },
+ /* AJK */
+ { USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2303,
+ 0x400, TYPE_PL2303HX },
/* ST Lab USB-SERIAL-4 */
{ USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2303,
0x300, TYPE_PL2303X },
@@ -381,10 +385,17 @@
#ifdef USB_DEBUG
/* print the chip type */
- if (sc->sc_chiptype == TYPE_PL2303X) {
+ switch (sc->sc_chiptype)
+ {
+ case TYPE_PL2303HX:
+ DPRINTF(("uplcom_attach: chiptype 2303HX\n"));
+ break;
+ case TYPE_PL2303X:
DPRINTF(("uplcom_attach: chiptype 2303X\n"));
- } else {
+ break;
+ default:
DPRINTF(("uplcom_attach: chiptype 2303\n"));
+ break;
}
#endif
@@ -609,7 +620,9 @@
{ UT_READ_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 0x8383, 0, 0 },
{ UT_WRITE_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 0, 1, 0 },
{ UT_WRITE_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 1, 0, 0 },
- { UT_WRITE_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 2, 0x44, 0 }
+ { UT_WRITE_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 2, 0x44, 0 },
+ { UT_WRITE_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 8, 0, 0 },
+ { UT_WRITE_VENDOR_DEVICE, UPLCOM_SET_REQUEST, 9, 0, 0 },
};
#define N_PL2302X_INIT (sizeof(pl2303x)/sizeof(pl2303x[0]))
@@ -735,10 +748,18 @@
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
req.bRequest = UPLCOM_SET_REQUEST;
USETW(req.wValue, 0);
- if (sc->sc_chiptype == TYPE_PL2303X)
+ switch (sc->sc_chiptype)
+ {
+ case TYPE_PL2303HX:
USETW(req.wIndex, UPLCOM_SET_CRTSCTS_PL2303X);
- else
+ break;
+ case TYPE_PL2303X:
+ USETW(req.wIndex, UPLCOM_SET_CRTSCTS_PL2303X);
+ break;
+ default:
USETW(req.wIndex, UPLCOM_SET_CRTSCTS);
+ break;
+ }
USETW(req.wLength, 0);
err = usbd_do_request(sc->sc_ucom.sc_udev, &req, 0);
@@ -886,7 +907,8 @@
}
}
- if (sc->sc_chiptype == TYPE_PL2303X)
+ if (sc->sc_chiptype == TYPE_PL2303X ||
+ sc->sc_chiptype == TYPE_PL2303HX)
return (uplcom_pl2303x_init(sc));
return (0);
pgpfajIopz2Ty.pgp
Description: PGP signature
