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

Attachment: pgpfajIopz2Ty.pgp
Description: PGP signature

Reply via email to