Source
x
// SPDX-License-Identifier: GPL-2.0
/*
* USB Empeg empeg-car player driver
*
* Copyright (C) 2000, 2001
* Gary Brubaker (xavyer@ix.netcom.com)
*
* Copyright (C) 1999 - 2001
* Greg Kroah-Hartman (greg@kroah.com)
*
* See Documentation/usb/usb-serial.txt for more information on using this
* driver
*/
/* function prototypes for an empeg-car player */
static int empeg_startup(struct usb_serial *serial);
static void empeg_init_termios(struct tty_struct *tty);
static const struct usb_device_id id_table[] = {
{ USB_DEVICE(EMPEG_VENDOR_ID, EMPEG_PRODUCT_ID) },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, id_table);
static struct usb_serial_driver empeg_device = {
.driver = {
.owner = THIS_MODULE,
.name = "empeg",
},
.id_table = id_table,
.num_ports = 1,
.bulk_out_size = 256,
.throttle = usb_serial_generic_throttle,
.unthrottle = usb_serial_generic_unthrottle,
.attach = empeg_startup,
.init_termios = empeg_init_termios,
};
static struct usb_serial_driver * const serial_drivers[] = {
&empeg_device, NULL
};
static int empeg_startup(struct usb_serial *serial)
{
int r;
if (serial->dev->actconfig->desc.bConfigurationValue != 1) {
dev_err(&serial->dev->dev, "active config #%d != 1 ??\n",
serial->dev->actconfig->desc.bConfigurationValue);
return -ENODEV;
}
r = usb_reset_configuration(serial->dev);
/* continue on with initialization */
return r;
}
static void empeg_init_termios(struct tty_struct *tty)
{
struct ktermios *termios = &tty->termios;
/*
* The empeg-car player wants these particular tty settings.
* You could, for example, change the baud rate, however the
* player only supports 115200 (currently), so there is really
* no point in support for changes to the tty settings.
* (at least for now)
*
* The default requirements for this device are:
*/
termios->c_iflag
&= ~(IGNBRK /* disable ignore break */