Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
};
struct ssu100_port_private {
};
struct ssu100_port_private {
+ spinlock_t status_lock;
u8 shadowLSR;
u8 shadowMSR;
wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
u8 shadowLSR;
u8 shadowMSR;
wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
struct ssu100_port_private *priv = usb_get_serial_port_data(port);
u8 *data;
int result;
struct ssu100_port_private *priv = usb_get_serial_port_data(port);
u8 *data;
int result;
dbg("%s - port %d", __func__, port->number);
dbg("%s - port %d", __func__, port->number);
+ spin_lock_irqsave(&priv->status_lock, flags);
priv->shadowLSR = data[0] & (SERIAL_LSR_OE | SERIAL_LSR_PE |
SERIAL_LSR_FE | SERIAL_LSR_BI);
priv->shadowMSR = data[1] & (SERIAL_MSR_CTS | SERIAL_MSR_DSR |
SERIAL_MSR_RI | SERIAL_MSR_CD);
priv->shadowLSR = data[0] & (SERIAL_LSR_OE | SERIAL_LSR_PE |
SERIAL_LSR_FE | SERIAL_LSR_BI);
priv->shadowMSR = data[1] & (SERIAL_MSR_CTS | SERIAL_MSR_DSR |
SERIAL_MSR_RI | SERIAL_MSR_CD);
+ spin_unlock_irqrestore(&priv->status_lock, flags);
unsigned num_endpoints;
int i;
unsigned num_endpoints;
int i;
num_endpoints = interface->cur_altsetting->desc.bNumEndpoints;
dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints);
num_endpoints = interface->cur_altsetting->desc.bNumEndpoints;
dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints);
}
/* set max packet size based on descriptor */
}
/* set max packet size based on descriptor */
+ spin_lock_irqsave(&priv->status_lock, flags);
priv->max_packet_size = ep_desc->wMaxPacketSize;
priv->max_packet_size = ep_desc->wMaxPacketSize;
+ spin_unlock_irqrestore(&priv->status_lock, flags);
dev_info(&udev->dev, "Setting MaxPacketSize %d\n", priv->max_packet_size);
}
dev_info(&udev->dev, "Setting MaxPacketSize %d\n", priv->max_packet_size);
}
+ spin_lock_init(&priv->status_lock);
init_waitqueue_head(&priv->delta_msr_wait);
usb_set_serial_port_data(port, priv);
init_waitqueue_head(&priv->delta_msr_wait);
usb_set_serial_port_data(port, priv);
ssu100_set_max_packet_size(port);
return ssu100_initdevice(serial->dev);
ssu100_set_max_packet_size(port);
return ssu100_initdevice(serial->dev);