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