forked from luck/tmp_suning_uos_patched
USB-serial updates for v3.20-rc1
Removal of dead code in mos7840 and a clean-up of the option blacklist handling. Signed-off-by: Johan Hovold <johan@kernel.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJUy3/BAAoJEEEN5E/e4bSVTt4QAKY0YCC55XHW7p/BZNx0orFb JK3EjIIaoIv4JQz4eqF+Xsnsw6vmI6YbqwZ32VWzYYNLn9Enyl7RwWfpCCSlSxNS pbP0eUwu9wZaC91ucDPw8L7FnhthzjUF7FMuciF/VR4vhJczKVM5QSFu6RTFffZL uvMuWD4z8waxtVhIq9i6gT+4hbNJSYV9vcHv/P4hXlDjDDwK7mgDBX/AG+3aJZS6 2h2l45Uwb+c4/BYKUdd3ZLmyDAQfxXDMMEiquF+5WT2QRLTLwP6I7fPD3rHHPslR ZdzrtKkqWtcQVzyDEHUyCsRcijshhi7iYQ5+iJJYmB8OncY6EVAuQiM4Np7v5MX7 CR/zU2BnaLxt2TikNVjPSKCPvSkU6ygGKOGBhsrUNdVH2H7CKNVa9L7/h+RXjK9F Gye8Z3jCKREUyosSbWrG0tScmv+Pe1h5nQUByYVo8ys2cIcpZcnfM3vQ6QVLqmdQ UHwPVozG7m61njXCJfp7KaRBX9055PhHaUF2bJWMwQpQSipB/X154XBnNHNiTLRw wjAfgi/a7blq3S09o8htFwuiCENCgoDtV8Niu+At72g9PeDvo47sWHNPmqdPGsUa hrB7wAPIcA4wkvfGYLPhdrFNJDfrPEB/MBYWYqDwluekEM6UMlsMBzJzeTBrb04T 9xuY00N99wtX+fprat5N =NeuI -----END PGP SIGNATURE----- Merge tag 'usb-serial-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-next Johan writes: USB-serial updates for v3.20-rc1 Removal of dead code in mos7840 and a clean-up of the option blacklist handling. Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
commit
0c1514a2c3
@ -1309,35 +1309,6 @@ static int mos7840_write(struct tty_struct *tty, struct usb_serial_port *port,
|
||||
const unsigned char *current_position = data;
|
||||
unsigned char *data1;
|
||||
|
||||
#ifdef NOTMOS7840
|
||||
Data = 0x00;
|
||||
status = mos7840_get_uart_reg(port, LINE_CONTROL_REGISTER, &Data);
|
||||
mos7840_port->shadowLCR = Data;
|
||||
dev_dbg(&port->dev, "%s: LINE_CONTROL_REGISTER is %x\n", __func__, Data);
|
||||
dev_dbg(&port->dev, "%s: mos7840_port->shadowLCR is %x\n", __func__, mos7840_port->shadowLCR);
|
||||
|
||||
/* Data = 0x03; */
|
||||
/* status = mos7840_set_uart_reg(port,LINE_CONTROL_REGISTER,Data); */
|
||||
/* mos7840_port->shadowLCR=Data;//Need to add later */
|
||||
|
||||
Data |= SERIAL_LCR_DLAB; /* data latch enable in LCR 0x80 */
|
||||
status = mos7840_set_uart_reg(port, LINE_CONTROL_REGISTER, Data);
|
||||
|
||||
/* Data = 0x0c; */
|
||||
/* status = mos7840_set_uart_reg(port,DIVISOR_LATCH_LSB,Data); */
|
||||
Data = 0x00;
|
||||
status = mos7840_get_uart_reg(port, DIVISOR_LATCH_LSB, &Data);
|
||||
dev_dbg(&port->dev, "%s: DLL value is %x\n", __func__, Data);
|
||||
|
||||
Data = 0x0;
|
||||
status = mos7840_get_uart_reg(port, DIVISOR_LATCH_MSB, &Data);
|
||||
dev_dbg(&port->dev, "%s: DLM value is %x\n", __func__, Data);
|
||||
|
||||
Data = Data & ~SERIAL_LCR_DLAB;
|
||||
dev_dbg(&port->dev, "%s: mos7840_port->shadowLCR is %x\n", __func__, mos7840_port->shadowLCR);
|
||||
status = mos7840_set_uart_reg(port, LINE_CONTROL_REGISTER, Data);
|
||||
#endif
|
||||
|
||||
if (mos7840_port_paranoia_check(port, __func__))
|
||||
return -1;
|
||||
|
||||
@ -1614,37 +1585,6 @@ static int mos7840_calc_baud_rate_divisor(struct usb_serial_port *port,
|
||||
*clk_sel_val = 0x70;
|
||||
}
|
||||
return 0;
|
||||
|
||||
#ifdef NOTMCS7840
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mos7840_divisor_table); i++) {
|
||||
if (mos7840_divisor_table[i].BaudRate == baudrate) {
|
||||
*divisor = mos7840_divisor_table[i].Divisor;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* After trying for all the standard baud rates *
|
||||
* Try calculating the divisor for this baud rate */
|
||||
|
||||
if (baudrate > 75 && baudrate < 230400) {
|
||||
/* get the divisor */
|
||||
custom = (__u16) (230400L / baudrate);
|
||||
|
||||
/* Check for round off */
|
||||
round1 = (__u16) (2304000L / baudrate);
|
||||
round = (__u16) (round1 - (custom * 10));
|
||||
if (round > 4)
|
||||
custom++;
|
||||
*divisor = custom;
|
||||
|
||||
dev_dbg(&port->dev, " Baud %d = %d\n", baudrate, custom);
|
||||
return 0;
|
||||
}
|
||||
|
||||
dev_dbg(&port->dev, "%s", " Baud calculation Failed...\n");
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -507,18 +507,10 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define VIATELECOM_VENDOR_ID 0x15eb
|
||||
#define VIATELECOM_PRODUCT_CDS7 0x0001
|
||||
|
||||
/* some devices interfaces need special handling due to a number of reasons */
|
||||
enum option_blacklist_reason {
|
||||
OPTION_BLACKLIST_NONE = 0,
|
||||
OPTION_BLACKLIST_SENDSETUP = 1,
|
||||
OPTION_BLACKLIST_RESERVED_IF = 2
|
||||
};
|
||||
|
||||
#define MAX_BL_NUM 11
|
||||
struct option_blacklist_info {
|
||||
/* bitfield of interface numbers for OPTION_BLACKLIST_SENDSETUP */
|
||||
/* bitmask of interface numbers blacklisted for send_setup */
|
||||
const unsigned long sendsetup;
|
||||
/* bitfield of interface numbers for OPTION_BLACKLIST_RESERVED_IF */
|
||||
/* bitmask of interface numbers that are reserved */
|
||||
const unsigned long reserved;
|
||||
};
|
||||
|
||||
@ -1822,36 +1814,13 @@ struct option_private {
|
||||
|
||||
module_usb_serial_driver(serial_drivers, option_ids);
|
||||
|
||||
static bool is_blacklisted(const u8 ifnum, enum option_blacklist_reason reason,
|
||||
const struct option_blacklist_info *blacklist)
|
||||
{
|
||||
unsigned long num;
|
||||
const unsigned long *intf_list;
|
||||
|
||||
if (blacklist) {
|
||||
if (reason == OPTION_BLACKLIST_SENDSETUP)
|
||||
intf_list = &blacklist->sendsetup;
|
||||
else if (reason == OPTION_BLACKLIST_RESERVED_IF)
|
||||
intf_list = &blacklist->reserved;
|
||||
else {
|
||||
BUG_ON(reason);
|
||||
return false;
|
||||
}
|
||||
|
||||
for_each_set_bit(num, intf_list, MAX_BL_NUM + 1) {
|
||||
if (num == ifnum)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static int option_probe(struct usb_serial *serial,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
struct usb_interface_descriptor *iface_desc =
|
||||
&serial->interface->cur_altsetting->desc;
|
||||
struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;
|
||||
const struct option_blacklist_info *blacklist;
|
||||
|
||||
/* Never bind to the CD-Rom emulation interface */
|
||||
if (iface_desc->bInterfaceClass == 0x08)
|
||||
@ -1862,10 +1831,9 @@ static int option_probe(struct usb_serial *serial,
|
||||
* the same class/subclass/protocol as the serial interfaces. Look at
|
||||
* the Windows driver .INF files for reserved interface numbers.
|
||||
*/
|
||||
if (is_blacklisted(
|
||||
iface_desc->bInterfaceNumber,
|
||||
OPTION_BLACKLIST_RESERVED_IF,
|
||||
(const struct option_blacklist_info *) id->driver_info))
|
||||
blacklist = (void *)id->driver_info;
|
||||
if (blacklist && test_bit(iface_desc->bInterfaceNumber,
|
||||
&blacklist->reserved))
|
||||
return -ENODEV;
|
||||
/*
|
||||
* Don't bind network interface on Samsung GT-B3730, it is handled by
|
||||
@ -1876,8 +1844,8 @@ static int option_probe(struct usb_serial *serial,
|
||||
iface_desc->bInterfaceClass != USB_CLASS_CDC_DATA)
|
||||
return -ENODEV;
|
||||
|
||||
/* Store device id so we can use it during attach. */
|
||||
usb_set_serial_data(serial, (void *)id);
|
||||
/* Store the blacklist info so we can use it during attach. */
|
||||
usb_set_serial_data(serial, (void *)blacklist);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1885,7 +1853,7 @@ static int option_probe(struct usb_serial *serial,
|
||||
static int option_attach(struct usb_serial *serial)
|
||||
{
|
||||
struct usb_interface_descriptor *iface_desc;
|
||||
const struct usb_device_id *id;
|
||||
const struct option_blacklist_info *blacklist;
|
||||
struct usb_wwan_intf_private *data;
|
||||
struct option_private *priv;
|
||||
|
||||
@ -1899,16 +1867,16 @@ static int option_attach(struct usb_serial *serial)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Retrieve device id stored at probe. */
|
||||
id = usb_get_serial_data(serial);
|
||||
/* Retrieve blacklist info stored at probe. */
|
||||
blacklist = usb_get_serial_data(serial);
|
||||
|
||||
iface_desc = &serial->interface->cur_altsetting->desc;
|
||||
|
||||
priv->bInterfaceNumber = iface_desc->bInterfaceNumber;
|
||||
data->private = priv;
|
||||
|
||||
if (!is_blacklisted(iface_desc->bInterfaceNumber,
|
||||
OPTION_BLACKLIST_SENDSETUP,
|
||||
(struct option_blacklist_info *)id->driver_info)) {
|
||||
if (!blacklist || !test_bit(iface_desc->bInterfaceNumber,
|
||||
&blacklist->sendsetup)) {
|
||||
data->send_setup = option_send_setup;
|
||||
}
|
||||
spin_lock_init(&data->susp_lock);
|
||||
|
Loading…
Reference in New Issue
Block a user