Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 326026
b: refs/heads/master
c: 592ba39
h: refs/heads/master
v: v3
  • Loading branch information
Greg Kroah-Hartman committed Sep 14, 2012
1 parent 5da1866 commit fb4d473
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 34 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 96fc8e8d8551f4d67b54982175b412c4e1b8d395
refs/heads/master: 592ba39fab1072d6d37f4118f4b0efa15377ced5
61 changes: 28 additions & 33 deletions trunk/drivers/usb/serial/ipw.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ static bool debug;

static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port)
{
struct usb_device *dev = port->serial->dev;
struct usb_device *udev = port->serial->dev;
struct device *dev = &port->dev;
u8 buf_flow_static[16] = IPW_BYTES_FLOWINIT;
u8 *buf_flow_init;
int result;
Expand All @@ -154,8 +155,8 @@ static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port)
/* --1: Tell the modem to initialize (we think) From sniffs this is
* always the first thing that gets sent to the modem during
* opening of the device */
dbg("%s: Sending SIO_INIT (we guess)", __func__);
result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
dev_dbg(dev, "%s: Sending SIO_INIT (we guess)\n", __func__);
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_INIT,
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT,
0,
Expand All @@ -164,22 +165,19 @@ static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port)
0,
100000);
if (result < 0)
dev_err(&port->dev,
"Init of modem failed (error = %d)\n", result);
dev_err(dev, "Init of modem failed (error = %d)\n", result);

/* reset the bulk pipes */
usb_clear_halt(dev,
usb_rcvbulkpipe(dev, port->bulk_in_endpointAddress));
usb_clear_halt(dev,
usb_sndbulkpipe(dev, port->bulk_out_endpointAddress));
usb_clear_halt(udev, usb_rcvbulkpipe(udev, port->bulk_in_endpointAddress));
usb_clear_halt(udev, usb_sndbulkpipe(udev, port->bulk_out_endpointAddress));

/*--2: Start reading from the device */
dbg("%s: setting up bulk read callback", __func__);
dev_dbg(dev, "%s: setting up bulk read callback\n", __func__);
usb_wwan_open(tty, port);

/*--3: Tell the modem to open the floodgates on the rx bulk channel */
dbg("%s:asking modem for RxRead (RXBULK_ON)", __func__);
result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
dev_dbg(dev, "%s:asking modem for RxRead (RXBULK_ON)\n", __func__);
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_RXCTL,
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT,
IPW_RXBULK_ON,
Expand All @@ -188,12 +186,11 @@ static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port)
0,
100000);
if (result < 0)
dev_err(&port->dev,
"Enabling bulk RxRead failed (error = %d)\n", result);
dev_err(dev, "Enabling bulk RxRead failed (error = %d)\n", result);

/*--4: setup the initial flowcontrol */
dbg("%s:setting init flowcontrol (%s)", __func__, buf_flow_init);
result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
dev_dbg(dev, "%s:setting init flowcontrol (%s)\n", __func__, buf_flow_init);
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_HANDFLOW,
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT,
0,
Expand All @@ -202,8 +199,7 @@ static int ipw_open(struct tty_struct *tty, struct usb_serial_port *port)
0x10,
200000);
if (result < 0)
dev_err(&port->dev,
"initial flowcontrol failed (error = %d)\n", result);
dev_err(dev, "initial flowcontrol failed (error = %d)\n", result);

kfree(buf_flow_init);
return 0;
Expand Down Expand Up @@ -233,12 +229,13 @@ static void ipw_release(struct usb_serial *serial)

static void ipw_dtr_rts(struct usb_serial_port *port, int on)
{
struct usb_device *dev = port->serial->dev;
struct usb_device *udev = port->serial->dev;
struct device *dev = &port->dev;
int result;

dbg("%s: on = %d", __func__, on);
dev_dbg(dev, "%s: on = %d\n", __func__, on);

result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_SET_PIN,
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT,
on ? IPW_PIN_SETDTR : IPW_PIN_CLRDTR,
Expand All @@ -247,10 +244,9 @@ static void ipw_dtr_rts(struct usb_serial_port *port, int on)
0,
200000);
if (result < 0)
dev_err(&port->dev, "setting dtr failed (error = %d)\n",
result);
dev_err(dev, "setting dtr failed (error = %d)\n", result);

result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_SET_PIN, USB_TYPE_VENDOR |
USB_RECIP_INTERFACE | USB_DIR_OUT,
on ? IPW_PIN_SETRTS : IPW_PIN_CLRRTS,
Expand All @@ -259,18 +255,18 @@ static void ipw_dtr_rts(struct usb_serial_port *port, int on)
0,
200000);
if (result < 0)
dev_err(&port->dev, "setting rts failed (error = %d)\n",
result);
dev_err(dev, "setting rts failed (error = %d)\n", result);
}

static void ipw_close(struct usb_serial_port *port)
{
struct usb_device *dev = port->serial->dev;
struct usb_device *udev = port->serial->dev;
struct device *dev = &port->dev;
int result;

/*--3: purge */
dbg("%s:sending purge", __func__);
result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
dev_dbg(dev, "%s:sending purge\n", __func__);
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_PURGE, USB_TYPE_VENDOR |
USB_RECIP_INTERFACE | USB_DIR_OUT,
0x03,
Expand All @@ -279,12 +275,12 @@ static void ipw_close(struct usb_serial_port *port)
0,
200000);
if (result < 0)
dev_err(&port->dev, "purge failed (error = %d)\n", result);
dev_err(dev, "purge failed (error = %d)\n", result);


/* send RXBULK_off (tell modem to stop transmitting bulk data on
rx chan) */
result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
IPW_SIO_RXCTL,
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT,
IPW_RXBULK_OFF,
Expand All @@ -294,8 +290,7 @@ static void ipw_close(struct usb_serial_port *port)
100000);

if (result < 0)
dev_err(&port->dev,
"Disabling bulk RxRead failed (error = %d)\n", result);
dev_err(dev, "Disabling bulk RxRead failed (error = %d)\n", result);

usb_wwan_close(port);
}
Expand Down

0 comments on commit fb4d473

Please sign in to comment.