Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not support modem control lines

2011-12-03 Thread linimon
Synopsis: [uslcom][patch] cp2103 usb-to-serial driver does not support modem 
control lines

State-Changed-From-To: open-closed
State-Changed-By: linimon
State-Changed-When: Sun Dec 4 00:23:39 UTC 2011
State-Changed-Why: 
MFCed back to 8.


Responsible-Changed-From-To: freebsd-usb-hselasky
Responsible-Changed-By: linimon
Responsible-Changed-When: Sun Dec 4 00:23:39 UTC 2011
Responsible-Changed-Why: 
Over to committer.

http://www.freebsd.org/cgi/query-pr.cgi?pr=162307
___
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org


Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not support modem control lines

2011-11-09 Thread JD Louw
The following reply was made to PR usb/162307; it has been noted by GNATS.

From: JD Louw jdl@gmail.com
To: bug-follo...@freebsd.org, j...@nanoteq.com
Cc:  
Subject: Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not
 support modem control lines
Date: Wed, 9 Nov 2011 10:33:47 +0200

 --bcaec544f0ae90b72e04b14925bc
 Content-Type: multipart/alternative; boundary=bcaec544f0ae90b72b04b14925ba
 
 --bcaec544f0ae90b72b04b14925ba
 Content-Type: text/plain; charset=ISO-8859-1
 
 Tested OK.
 
 Recently I came across new app note (AN571) on SiLabs's website, describing
 the cp210x registers in detail. Attached is another minor patch with some
 further cleanups:
 
 1) Use interface no 0 (wIndex field) for all control transfers
 2) Remove reserved mask on flow control.
 
 I plan on adding GPIO support later on. Should I add this as a custom IOCTL?
 
 Thanks
 
 --bcaec544f0ae90b72b04b14925ba
 Content-Type: text/html; charset=ISO-8859-1
 
 Tested OK.divbr/divdivRecently I came across new app note (AN571) on 
SiLabs#39;s website, describing the cp210x registers in detail. Attached is 
another minor patch with some further cleanups:/divdivbr/div
 div1) Use interface no 0 (wIndex field) for all control 
transfers/divdiv2) Remove reserved mask on flow 
control./divdivbr/divdivI plan on adding GPIO support later on. 
Should I add this as a custom IOCTL?/div
 divbr/divdivThanks/divdivbr/div
 
 --bcaec544f0ae90b72b04b14925ba--
 --bcaec544f0ae90b72e04b14925bc
 Content-Type: text/plain; charset=US-ASCII; name=cleanup.patch.txt
 Content-Disposition: attachment; filename=cleanup.patch.txt
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_gus2238t0
 
 LS0tIHVzbGNvbV8xXzIyLmMJMjAxMS0xMS0wNyAxOTo0NTozMS4wMDAwMDAwMDAgKzAyMDAKKysr
 IHVzbGNvbV8xXzIyX2ZpeF9mbG93LmMJMjAxMS0xMS0wNyAyMToyMTo0NS4wMDAwMDAwMDAgKzAy
 MDAKQEAgLTEwMCwxOCArMTAwLDE3IEBACiAjZGVmaW5lCVVTTENPTV9QQVJJVFlfT0RECTB4MTAK
 ICNkZWZpbmUJVVNMQ09NX1BBUklUWV9FVkVOCTB4MjAKIAotI2RlZmluZQlVU0xDT01fUE9SVF9O
 TwkJMHhGRkZGIC8qIFhYWCB0aGluayB0aGlzIHNob3VsZCBiZSAwIC0taHBzICovCisjZGVmaW5l
 CVVTTENPTV9QT1JUX05PCQkweDAwMDAKIAogLyogVVNMQ09NX0JSRUFLIHZhbHVlcyAqLwogI2Rl
 ZmluZQlVU0xDT01fQlJFQUtfT0ZGCTB4MDAKICNkZWZpbmUJVVNMQ09NX0JSRUFLX09OCQkweDAx
 CiAKIC8qIFVTTENPTV9TRVRfRkxPV0NUUkwgdmFsdWVzIC0gMXN0IHdvcmQgKi8KLSNkZWZpbmUJ
 VVNMQ09NX0ZMT1dfRFRSX09OICAgICAgMHgwMDAwMDAwMQorI2RlZmluZQlVU0xDT01fRkxPV19E
 VFJfT04gICAgICAweDAwMDAwMDAxIC8qIERUUiBzdGF0aWMgYWN0aXZlICovCiAjZGVmaW5lCVVT
 TENPTV9GTE9XX0NUU19IUyAgICAgIDB4MDAwMDAwMDggLyogQ1RTIGhhbmRzaGFrZSAqLwotI2Rl
 ZmluZQlVU0xDT01fRkxPV19SRVNFUlZFRCAgICAweEZGRkZGRjgwCiAvKiBVU0xDT01fU0VUX0ZM
 T1dDVFJMIHZhbHVlcyAtIDJuZCB3b3JkICovCi0jZGVmaW5lCVVTTENPTV9GTE9XX1JUU19PTiAg
 ICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUJVVNMQ09NX0ZMT1dfUlRTX09OICAgICAgMHgwMDAwMDA0
 MCAvKiBSVFMgc3RhdGljIGFjdGl2ZSAqLwogI2RlZmluZQlVU0xDT01fRkxPV19SVFNfSFMgICAg
 ICAweDAwMDAwMDgwIC8qIFJUUyBoYW5kc2hha2UgKi8KIAogZW51bSB7CkBAIC01NDAsMTQgKzUz
 OSwxMiBAQAogCX0KICAgICAgICAKIAlpZiAodC0+Y19jZmxhZyAmIENSVFNDVFMpIHsKLQkJZmxv
 d2N0cmxbMF0gPSBodG9sZTMyKFVTTENPTV9GTE9XX1JFU0VSVkVEIHwKLQkJICAgIFVTTENPTV9G
 TE9XX0RUUl9PTiB8IFVTTENPTV9GTE9XX0NUU19IUyk7CisJCWZsb3djdHJsWzBdID0gaHRvbGUz
 MihVU0xDT01fRkxPV19EVFJfT04gfCBVU0xDT01fRkxPV19DVFNfSFMpOwogCQlmbG93Y3RybFsx
 XSA9IGh0b2xlMzIoVVNMQ09NX0ZMT1dfUlRTX0hTKTsKIAkJZmxvd2N0cmxbMl0gPSAwOwogCQlm
 bG93Y3RybFszXSA9IDA7CiAJfSBlbHNlIHsKLQkJZmxvd2N0cmxbMF0gPSBodG9sZTMyKFVTTENP
 TV9GTE9XX1JFU0VSVkVEIHwKLQkJICAgIFVTTENPTV9GTE9XX0RUUl9PTik7CisJCWZsb3djdHJs
 WzBdID0gaHRvbGUzMihVU0xDT01fRkxPV19EVFJfT04pOwogCQlmbG93Y3RybFsxXSA9IGh0b2xl
 MzIoVVNMQ09NX0ZMT1dfUlRTX09OKTsKIAkJZmxvd2N0cmxbMl0gPSAwOwogCQlmbG93Y3RybFsz
 XSA9IDA7CkBAIC02OTIsNyArNjg5LDcgQEAKIAkJcmVxLmJtUmVxdWVzdFR5cGUgPSBVU0xDT01f
 UkVBRDsKIAkJcmVxLmJSZXF1ZXN0ID0gVVNMQ09NX1JDVFJMOwogCQlVU0VUVyhyZXEud1ZhbHVl
 LCAwKTsKLQkJVVNFVFcocmVxLndJbmRleCwgMCk7CisJCVVTRVRXKHJlcS53SW5kZXgsIFVTTENP
 TV9QT1JUX05PKTsKIAkJVVNFVFcocmVxLndMZW5ndGgsIHNpemVvZihidWYpKTsKICAgICAgICAg
 ICAgICAgIAogCQl1c2JkX3hmZXJfc2V0X2ZyYW1lcyh4ZmVyLCAyKTsK
 --bcaec544f0ae90b72e04b14925bc--
___
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org


Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not support modem control lines

2011-11-09 Thread Hans Petter Selasky
On Wednesday 09 November 2011 10:00:32 JD Louw wrote:
 The following reply was made to PR usb/162307; it has been noted by GNATS.
 
 From: JD Louw jdl@gmail.com
 To: bug-follo...@freebsd.org, j...@nanoteq.com
 Cc:
 Subject: Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does
 not support modem control lines
 Date: Wed, 9 Nov 2011 10:33:47 +0200
 
  --bcaec544f0ae90b72e04b14925bc
  Content-Type: multipart/alternative; boundary=bcaec544f0ae90b72b04b14925ba
 
  --bcaec544f0ae90b72b04b14925ba
  Content-Type: text/plain; charset=ISO-8859-1
 
  Tested OK.
 
  Recently I came across new app note (AN571) on SiLabs's website,
 describing the cp210x registers in detail. Attached is another minor patch
 with some further cleanups:
 
  1) Use interface no 0 (wIndex field) for all control transfers
  2) Remove reserved mask on flow control.
 
  I plan on adding GPIO support later on. Should I add this as a custom
 IOCTL?

Hi,

Modem drivers can have custom IOCTL's.

Try to look at other modem drivers, if they already have something like that. 
Else you need to define your own ioctl file, which you can put in 
/sys/dev/usb/ which is then automagically exported to userspace.

Patch committed:
http://svn.freebsd.org/changeset/base/227383

--HPS
___
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org


usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not support modem control lines

2011-11-05 Thread JD Louw

Number: 162307
Category:   usb
Synopsis:   [uslcom][patch] cp2103 usb-to-serial driver does not support 
modem control lines
Confidential:   no
Severity:   non-critical
Priority:   medium
Responsible:freebsd-usb
State:  open
Quarter:
Keywords:   
Date-Required:
Class:  sw-bug
Submitter-Id:   current-users
Arrival-Date:   Sat Nov 05 11:00:21 UTC 2011
Closed-Date:
Last-Modified:
Originator: JD Louw
Release:FreeBSD 8.1-RELEASE i386
Organization:
Nanoteq
Environment:
FreeBSD jdl-desktop.lan 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Thu Dec 30 10:20:16 
SAST 2010 j...@jdl-desktop.lan:/usr/obj/usr/src/sys/MYKERNEL2  i386
Description:
The current cp2103 driver lacks modem control line status updates (CTS, DTS, 
RI, DCD). Also missing is hardware flow control mode.
How-To-Repeat:
Connect a cp2103 adapter to any modem-like device and notice the modem status 
lines are not updated.
Fix:
The attached patch adds hardware flow control as well as a polling usb transfer 
mechanism to update the modem status lines.

Patch attached with submission follows:

--- /usr/src/sys/dev/usb/serial/uslcom.c2010-06-14 04:09:06.0 
+0200
+++ uslcom.c2011-11-05 09:33:04.0 +0200
@@ -64,43 +64,61 @@
 
 #defineUSLCOM_SET_DATA_BITS(x) ((x)  8)
 
+/* Request types */
 #defineUSLCOM_WRITE0x41
 #defineUSLCOM_READ 0xc1
 
+/* Request codes */
 #defineUSLCOM_UART 0x00
 #defineUSLCOM_BAUD_RATE0x01
 #defineUSLCOM_DATA 0x03
 #defineUSLCOM_BREAK0x05
 #defineUSLCOM_CTRL 0x07
+#defineUSLCOM_RCTRL0x08
+#defineUSLCOM_SET_FLOWCTRL 0x13
 
+/* USLCOM_UART values */
 #defineUSLCOM_UART_DISABLE 0x00
 #defineUSLCOM_UART_ENABLE  0x01
 
+/* USLCOM_CTRL/USLCOM_RCTRL values */
 #defineUSLCOM_CTRL_DTR_ON  0x0001  
 #defineUSLCOM_CTRL_DTR_SET 0x0100
 #defineUSLCOM_CTRL_RTS_ON  0x0002
 #defineUSLCOM_CTRL_RTS_SET 0x0200
 #defineUSLCOM_CTRL_CTS 0x0010
 #defineUSLCOM_CTRL_DSR 0x0020
+#defineUSLCOM_CTRL_RI  0x0040
 #defineUSLCOM_CTRL_DCD 0x0080
 
+/* USLCOM_BAUD_RATE values */
 #defineUSLCOM_BAUD_REF 0x384000
 
+/* USLCOM_DATA values */
 #defineUSLCOM_STOP_BITS_1  0x00
 #defineUSLCOM_STOP_BITS_2  0x02
-
 #defineUSLCOM_PARITY_NONE  0x00
 #defineUSLCOM_PARITY_ODD   0x10
 #defineUSLCOM_PARITY_EVEN  0x20
 
 #defineUSLCOM_PORT_NO  0x /* XXX think this should be 0 
--hps */
 
+/* USLCOM_BREAK values */
 #defineUSLCOM_BREAK_OFF0x00
 #defineUSLCOM_BREAK_ON 0x01
 
+/* USLCOM_SET_FLOWCTRL values - 1st word */
+#defineUSLCOM_FLOW_DTR_ON  0x0001
+#defineUSLCOM_FLOW_CTS_HS  0x0008 /* CTS handshake */
+#defineUSLCOM_FLOW_RESERVED0xFF80
+/* USLCOM_SET_FLOWCTRL values - 2nd word */
+#defineUSLCOM_FLOW_RTS_ON  0x0040
+#defineUSLCOM_FLOW_RTS_HS  0x0080 /* RTS handshake */
+
 enum {
USLCOM_BULK_DT_WR,
USLCOM_BULK_DT_RD,
+   USLCOM_CTRL_DT_RD,
USLCOM_N_TRANSFER,
 };
 
@@ -122,6 +140,7 @@
 
 static usb_callback_t uslcom_write_callback;
 static usb_callback_t uslcom_read_callback;
+static usb_callback_t uslcom_control_callback;
 
 static void uslcom_open(struct ucom_softc *);
 static void uslcom_close(struct ucom_softc *);
@@ -144,7 +163,7 @@
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_OUT,
.bufsize = USLCOM_BULK_BUF_SIZE,
-   .flags = {.pipe_bof = 1,.force_short_xfer = 1,},
+   .flags = {.pipe_bof = 1,/*.force_short_xfer = 1,*/},
.callback = uslcom_write_callback,
},
 
@@ -156,6 +175,15 @@
.flags = {.pipe_bof = 1,.short_xfer_ok = 1,},
.callback = uslcom_read_callback,
},
+   [USLCOM_CTRL_DT_RD] = {
+   .type = UE_CONTROL,
+   .endpoint = 0x00,
+   .direction = UE_DIR_ANY,
+   .interval = 250, /* poll status every 250 ms */
+   .bufsize = USLCOM_BULK_BUF_SIZE,
+   .flags = {.pipe_bof = 1,.short_xfer_ok = 1,},
+   .callback = uslcom_control_callback,
+   },
 };
 
 static struct ucom_callback uslcom_callback = {
@@ -262,6 +290,7 @@
mtx_lock(sc-sc_mtx);
usbd_xfer_set_stall(sc-sc_xfer[USLCOM_BULK_DT_WR]);
usbd_xfer_set_stall(sc-sc_xfer[USLCOM_BULK_DT_RD]);
+   usbd_xfer_set_stall(sc-sc_xfer[USLCOM_CTRL_DT_RD]);
mtx_unlock(sc-sc_mtx);
 
error = ucom_attach(sc-sc_super_ucom, sc-sc_ucom, 1, sc,
@@ -306,6 +335,8 @@
req, NULL, 0, 1000)) {
DPRINTF(UART enable failed 

Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not support modem control lines

2011-11-05 Thread Hans Petter Selasky
On Saturday 05 November 2011 11:51:14 JD Louw wrote:
 usb/162307

Committed with some modifications:

1) control transfers automatically clear-stall.
2) control transfers should have a timeout
3) flowcontrol[2,3] must be zeroed
4) flowcontrol must be stored in little endian format
5) reduce the interval a little bit, because it is blocking other control 
transfers to this device.
6) reduce control transfer buffer to the request plus 8 bytes, of which only 1 
byte is used.

Please verify and check that my modifications to your patch are correct:
http://svn.freebsd.org/changeset/base/227108

Thanks for the patch!

--HPS
___
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org


Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not support modem control lines

2011-11-05 Thread Hans Petter Selasky
The following reply was made to PR usb/162307; it has been noted by GNATS.

From: Hans Petter Selasky hsela...@c2i.net
To: freebsd-usb@freebsd.org
Cc: JD Louw j...@nanoteq.com,
 freebsd-gnats-sub...@freebsd.org
Subject: Re: usb/162307: [uslcom][patch] cp2103 usb-to-serial driver does not 
support modem control lines
Date: Sat, 5 Nov 2011 13:02:05 +0100

 On Saturday 05 November 2011 11:51:14 JD Louw wrote:
  usb/162307
 
 Committed with some modifications:
 
 1) control transfers automatically clear-stall.
 2) control transfers should have a timeout
 3) flowcontrol[2,3] must be zeroed
 4) flowcontrol must be stored in little endian format
 5) reduce the interval a little bit, because it is blocking other control 
 transfers to this device.
 6) reduce control transfer buffer to the request plus 8 bytes, of which only 1 
 byte is used.
 
 Please verify and check that my modifications to your patch are correct:
 http://svn.freebsd.org/changeset/base/227108
 
 Thanks for the patch!
 
 --HPS
___
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to freebsd-usb-unsubscr...@freebsd.org