Re: usb/162307: commit references a PR

2011-12-03 Thread dfilter service
The following reply was made to PR usb/162307; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: usb/162307: commit references a PR
Date: Sat,  3 Dec 2011 14:11:56 + (UTC)

 Author: hselasky
 Date: Sat Dec  3 14:11:47 2011
 New Revision: 228226
 URL: http://svn.freebsd.org/changeset/base/228226
 
 Log:
   MFC r227108, r227383 and r227463:
   Add support for modem control lines and GPIO pins to USLCOM driver.
   
   PR:  usb/162307
 
 Modified:
   stable/8/sys/dev/usb/serial/uslcom.c
   stable/8/sys/dev/usb/usb_ioctl.h
 Directory Properties:
   stable/8/sys/   (props changed)
   stable/8/sys/amd64/include/xen/   (props changed)
   stable/8/sys/cddl/contrib/opensolaris/   (props changed)
   stable/8/sys/contrib/dev/acpica/   (props changed)
   stable/8/sys/contrib/pf/   (props changed)
 
 Modified: stable/8/sys/dev/usb/serial/uslcom.c
 ==
 --- stable/8/sys/dev/usb/serial/uslcom.c   Sat Dec  3 14:03:53 2011
(r228225)
 +++ stable/8/sys/dev/usb/serial/uslcom.c   Sat Dec  3 14:11:47 2011
(r228226)
 @@ -41,6 +41,7 @@ __FBSDID($FreeBSD$);
  #include dev/usb/usb.h
  #include dev/usb/usbdi.h
  #include dev/usb/usbdi_util.h
 +#include dev/usb/usb_ioctl.h
  #include usbdevs.h
  
  #define   USB_DEBUG_VAR uslcom_debug
 @@ -63,49 +64,72 @@ SYSCTL_INT(_hw_usb_uslcom, OID_AUTO, deb
  
  #define   USLCOM_SET_DATA_BITS(x) ((x)  8)
  
 +/* Request types */
  #define   USLCOM_WRITE0x41
  #define   USLCOM_READ 0xc1
  
 +/* Request codes */
  #define   USLCOM_UART 0x00
  #define   USLCOM_BAUD_RATE0x01
  #define   USLCOM_DATA 0x03
  #define   USLCOM_BREAK0x05
  #define   USLCOM_CTRL 0x07
 +#define   USLCOM_RCTRL0x08
 +#define   USLCOM_SET_FLOWCTRL 0x13
 +#define   USLCOM_VENDOR_SPECIFIC  0xff
  
 +/* USLCOM_UART values */
  #define   USLCOM_UART_DISABLE 0x00
  #define   USLCOM_UART_ENABLE  0x01
  
 +/* USLCOM_CTRL/USLCOM_RCTRL values */
  #define   USLCOM_CTRL_DTR_ON  0x0001  
  #define   USLCOM_CTRL_DTR_SET 0x0100
  #define   USLCOM_CTRL_RTS_ON  0x0002
  #define   USLCOM_CTRL_RTS_SET 0x0200
  #define   USLCOM_CTRL_CTS 0x0010
  #define   USLCOM_CTRL_DSR 0x0020
 +#define   USLCOM_CTRL_RI  0x0040
  #define   USLCOM_CTRL_DCD 0x0080
  
 +/* USLCOM_BAUD_RATE values */
  #define   USLCOM_BAUD_REF 0x384000
  
 +/* USLCOM_DATA values */
  #define   USLCOM_STOP_BITS_1  0x00
  #define   USLCOM_STOP_BITS_2  0x02
 -
  #define   USLCOM_PARITY_NONE  0x00
  #define   USLCOM_PARITY_ODD   0x10
  #define   USLCOM_PARITY_EVEN  0x20
  
 -#define   USLCOM_PORT_NO  0x /* XXX think this should be 0 
--hps */
 +#define   USLCOM_PORT_NO  0x
  
 +/* USLCOM_BREAK values */
  #define   USLCOM_BREAK_OFF0x00
  #define   USLCOM_BREAK_ON 0x01
  
 +/* USLCOM_SET_FLOWCTRL values - 1st word */
 +#define   USLCOM_FLOW_DTR_ON  0x0001 /* DTR static active */
 +#define   USLCOM_FLOW_CTS_HS  0x0008 /* CTS handshake */
 +/* USLCOM_SET_FLOWCTRL values - 2nd word */
 +#define   USLCOM_FLOW_RTS_ON  0x0040 /* RTS static active */
 +#define   USLCOM_FLOW_RTS_HS  0x0080 /* RTS handshake */
 +
 +/* USLCOM_VENDOR_SPECIFIC values */
 +#define   USLCOM_WRITE_LATCH  0x37E1
 +#define   USLCOM_READ_LATCH   0x00C2
 +
  enum {
USLCOM_BULK_DT_WR,
USLCOM_BULK_DT_RD,
 +  USLCOM_CTRL_DT_RD,
USLCOM_N_TRANSFER,
  };
  
  struct uslcom_softc {
struct ucom_super_softc sc_super_ucom;
struct ucom_softc sc_ucom;
 +  struct usb_callout sc_watchdog;
  
struct usb_xfer *sc_xfer[USLCOM_N_TRANSFER];
struct usb_device *sc_udev;
 @@ -121,12 +145,15 @@ static device_detach_t uslcom_detach;
  
  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 *);
  static void uslcom_set_dtr(struct ucom_softc *, uint8_t);
  static void uslcom_set_rts(struct ucom_softc *, uint8_t);
  static void uslcom_set_break(struct ucom_softc *, uint8_t);
 +static int uslcom_ioctl(struct ucom_softc *, uint32_t, caddr_t, int,
 +  struct thread *);
  static int uslcom_pre_param(struct ucom_softc *, struct termios *);
  static void uslcom_param(struct ucom_softc *, struct termios *);
  static void uslcom_get_status(struct ucom_softc *, uint8_t *, uint8_t *);
 @@ -143,7 +170,7 @@ static const struct usb_config uslcom_co
.endpoint = UE_ADDR_ANY,
.direction

Re: usb/162307: commit references a PR

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

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: usb/162307: commit references a PR
Date: Wed,  9 Nov 2011 09:16:11 + (UTC)

 Author: hselasky
 Date: Wed Nov  9 09:15:57 2011
 New Revision: 227383
 URL: http://svn.freebsd.org/changeset/base/227383
 
 Log:
   Some minor corrections to a modem driver.
   
   PR:  usb/162307
   MFC after:   3 days
 
 Modified:
   head/sys/dev/usb/serial/uslcom.c
 
 Modified: head/sys/dev/usb/serial/uslcom.c
 ==
 --- head/sys/dev/usb/serial/uslcom.c   Wed Nov  9 07:48:48 2011
(r227382)
 +++ head/sys/dev/usb/serial/uslcom.c   Wed Nov  9 09:15:57 2011
(r227383)
 @@ -100,18 +100,17 @@ SYSCTL_INT(_hw_usb_uslcom, OID_AUTO, deb
  #define   USLCOM_PARITY_ODD   0x10
  #define   USLCOM_PARITY_EVEN  0x20
  
 -#define   USLCOM_PORT_NO  0x /* XXX think this should be 0 
--hps */
 +#define   USLCOM_PORT_NO  0x
  
  /* USLCOM_BREAK values */
  #define   USLCOM_BREAK_OFF0x00
  #define   USLCOM_BREAK_ON 0x01
  
  /* USLCOM_SET_FLOWCTRL values - 1st word */
 -#define   USLCOM_FLOW_DTR_ON  0x0001
 +#define   USLCOM_FLOW_DTR_ON  0x0001 /* DTR static active */
  #define   USLCOM_FLOW_CTS_HS  0x0008 /* CTS handshake */
 -#define   USLCOM_FLOW_RESERVED0xFF80
  /* USLCOM_SET_FLOWCTRL values - 2nd word */
 -#define   USLCOM_FLOW_RTS_ON  0x0040
 +#define   USLCOM_FLOW_RTS_ON  0x0040 /* RTS static active */
  #define   USLCOM_FLOW_RTS_HS  0x0080 /* RTS handshake */
  
  enum {
 @@ -540,14 +539,12 @@ uslcom_param(struct ucom_softc *ucom, st
}
 
if (t-c_cflag  CRTSCTS) {
 -  flowctrl[0] = htole32(USLCOM_FLOW_RESERVED |
 -  USLCOM_FLOW_DTR_ON | USLCOM_FLOW_CTS_HS);
 +  flowctrl[0] = htole32(USLCOM_FLOW_DTR_ON | USLCOM_FLOW_CTS_HS);
flowctrl[1] = htole32(USLCOM_FLOW_RTS_HS);
flowctrl[2] = 0;
flowctrl[3] = 0;
} else {
 -  flowctrl[0] = htole32(USLCOM_FLOW_RESERVED |
 -  USLCOM_FLOW_DTR_ON);
 +  flowctrl[0] = htole32(USLCOM_FLOW_DTR_ON);
flowctrl[1] = htole32(USLCOM_FLOW_RTS_ON);
flowctrl[2] = 0;
flowctrl[3] = 0;
 @@ -692,7 +689,7 @@ tr_setup:  
req.bmRequestType = USLCOM_READ;
req.bRequest = USLCOM_RCTRL;
USETW(req.wValue, 0);
 -  USETW(req.wIndex, 0);
 +  USETW(req.wIndex, USLCOM_PORT_NO);
USETW(req.wLength, sizeof(buf));
 
usbd_xfer_set_frames(xfer, 2);
 ___
 svn-src-...@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
 
___
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: commit references a PR

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

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: usb/162307: commit references a PR
Date: Sat,  5 Nov 2011 12:02:09 + (UTC)

 Author: hselasky
 Date: Sat Nov  5 12:01:51 2011
 New Revision: 227108
 URL: http://svn.freebsd.org/changeset/base/227108
 
 Log:
   Implement support for modem control lines.
   Don't short terminate transmitted BULK data.
   Assume that the chip reads one USB packet at a time.
   
   PR:  usb/162307
   MFC after:   3 days
 
 Modified:
   head/sys/dev/usb/serial/uslcom.c
 
 Modified: head/sys/dev/usb/serial/uslcom.c
 ==
 --- head/sys/dev/usb/serial/uslcom.c   Sat Nov  5 11:18:46 2011
(r227107)
 +++ head/sys/dev/usb/serial/uslcom.c   Sat Nov  5 12:01:51 2011
(r227108)
 @@ -63,43 +63,61 @@ SYSCTL_INT(_hw_usb_uslcom, OID_AUTO, deb
  
  #define   USLCOM_SET_DATA_BITS(x) ((x)  8)
  
 +/* Request types */
  #define   USLCOM_WRITE0x41
  #define   USLCOM_READ 0xc1
  
 +/* Request codes */
  #define   USLCOM_UART 0x00
  #define   USLCOM_BAUD_RATE0x01
  #define   USLCOM_DATA 0x03
  #define   USLCOM_BREAK0x05
  #define   USLCOM_CTRL 0x07
 +#define   USLCOM_RCTRL0x08
 +#define   USLCOM_SET_FLOWCTRL 0x13
  
 +/* USLCOM_UART values */
  #define   USLCOM_UART_DISABLE 0x00
  #define   USLCOM_UART_ENABLE  0x01
  
 +/* USLCOM_CTRL/USLCOM_RCTRL values */
  #define   USLCOM_CTRL_DTR_ON  0x0001  
  #define   USLCOM_CTRL_DTR_SET 0x0100
  #define   USLCOM_CTRL_RTS_ON  0x0002
  #define   USLCOM_CTRL_RTS_SET 0x0200
  #define   USLCOM_CTRL_CTS 0x0010
  #define   USLCOM_CTRL_DSR 0x0020
 +#define   USLCOM_CTRL_RI  0x0040
  #define   USLCOM_CTRL_DCD 0x0080
  
 +/* USLCOM_BAUD_RATE values */
  #define   USLCOM_BAUD_REF 0x384000
  
 +/* USLCOM_DATA values */
  #define   USLCOM_STOP_BITS_1  0x00
  #define   USLCOM_STOP_BITS_2  0x02
 -
  #define   USLCOM_PARITY_NONE  0x00
  #define   USLCOM_PARITY_ODD   0x10
  #define   USLCOM_PARITY_EVEN  0x20
  
  #define   USLCOM_PORT_NO  0x /* XXX think this should be 0 
--hps */
  
 +/* USLCOM_BREAK values */
  #define   USLCOM_BREAK_OFF0x00
  #define   USLCOM_BREAK_ON 0x01
  
 +/* USLCOM_SET_FLOWCTRL values - 1st word */
 +#define   USLCOM_FLOW_DTR_ON  0x0001
 +#define   USLCOM_FLOW_CTS_HS  0x0008 /* CTS handshake */
 +#define   USLCOM_FLOW_RESERVED0xFF80
 +/* USLCOM_SET_FLOWCTRL values - 2nd word */
 +#define   USLCOM_FLOW_RTS_ON  0x0040
 +#define   USLCOM_FLOW_RTS_HS  0x0080 /* RTS handshake */
 +
  enum {
USLCOM_BULK_DT_WR,
USLCOM_BULK_DT_RD,
 +  USLCOM_CTRL_DT_RD,
USLCOM_N_TRANSFER,
  };
  
 @@ -121,6 +139,7 @@ static device_detach_t uslcom_detach;
  
  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 *);
 @@ -143,7 +162,7 @@ static const struct usb_config uslcom_co
.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,},
.callback = uslcom_write_callback,
},
  
 @@ -155,6 +174,16 @@ static const struct usb_config uslcom_co
.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 = 150,/* poll status every 150 ms */
 +  .bufsize = sizeof(struct usb_device_request) + 8,
 +  .flags = {.pipe_bof = 1,},
 +  .callback = uslcom_control_callback,
 +  .timeout = 1000,/* 1 second timeout */
 +  },
  };
  
  static struct ucom_callback uslcom_callback = {
 @@ -371,6 +400,8 @@ uslcom_open(struct ucom_softc *ucom)
req, NULL, 0, 1000)) {
DPRINTF(UART enable failed (ignored)\n);
}
 +  /* Start polling status */
 +  usbd_transfer_start(sc-sc_xfer[USLCOM_CTRL_DT_RD]);
  }
  
  static void
 @@ -379,13 +410,16 @@ uslcom_close(struct ucom_softc *ucom)
struct uslcom_softc *sc = ucom-sc_parent;
struct usb_device_request req;
  
 +  /* Stop polling status */
 +  usbd_transfer_stop(sc-sc_xfer[USLCOM_CTRL_DT_RD