Lines Matching refs:serial
4 * Controls the Moschip 7720 usb to dual port serial converter
16 * Originally based on drivers/usb/serial/io_edgeport.c which is:
28 #include <linux/serial.h>
31 #include <linux/usb/serial.h>
55 /* This structure holds all of the local serial port information */
105 struct usb_serial *serial; /* back to containing struct */
119 MOS7720_THR, /* serial port regs */
136 MOS7720_SP2_REG, /* serial port 2 (7720 only) */
185 else /* serial port reg */
192 * not specific to a particular serial port.
194 static int write_mos_reg(struct usb_serial *serial, unsigned int serial_portnum,
197 struct usb_device *usbdev = serial->dev;
214 * ignored for registers that are not specific to a particular serial port.
216 static int read_mos_reg(struct usb_serial *serial, unsigned int serial_portnum,
219 struct usb_device *usbdev = serial->dev;
257 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
298 if (unlikely(mos_parport->serial == NULL))
301 dev = &mos_parport->serial->dev->dev;
304 if (!mutex_trylock(&mos_parport->serial->disc_mutex)) {
311 if (unlikely(mos_parport->serial->disconnected)) {
312 mutex_unlock(&mos_parport->serial->disc_mutex);
319 mutex_unlock(&mos_parport->serial->disc_mutex);
338 mutex_unlock(&mos_parport->serial->disc_mutex);
364 struct usb_serial *serial = mos_parport->serial;
365 struct usb_device *usbdev = serial->dev;
401 if (!mutex_trylock(&serial->disc_mutex)) {
412 if (serial->disconnected) {
414 mutex_unlock(&serial->disc_mutex);
423 mutex_unlock(&serial->disc_mutex);
442 * not called the release function yet because someone has a serial port open.
463 mutex_lock(&mos_parport->serial->disc_mutex);
464 if (mos_parport->serial->disconnected) {
466 mutex_unlock(&mos_parport->serial->disc_mutex);
482 mutex_unlock(&mos_parport->serial->disc_mutex);
494 write_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, (__u8)d);
505 read_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, &d);
518 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, data);
551 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
590 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
603 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
664 retval = usb_bulk_msg(mos_parport->serial->dev,
665 usb_sndbulkpipe(mos_parport->serial->dev, 2),
670 dev_err(&mos_parport->serial->dev->dev,
708 static int mos7715_parport_init(struct usb_serial *serial)
722 usb_set_serial_data(serial, mos_parport); /* hijack private pointer */
723 mos_parport->serial = serial;
728 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x80);
729 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x00);
733 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
736 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
744 dev_err(&serial->interface->dev,
751 mos_parport->pp->dev = &serial->interface->dev;
877 * Byte 1: IIR serial Port
888 if (!(iir & 0x01)) { /* serial port interrupt pending */
905 struct mos7715_parport *mos_parport = port->serial->private;
955 * this is the callback function for when we have finished sending serial
978 static int mos77xx_calc_num_ports(struct usb_serial *serial,
981 u16 product = le16_to_cpu(serial->dev->descriptor.idProduct);
986 * parallel port, and the second for the serial port. We swap
988 * only registered port structure uses the serial-port
1002 struct usb_serial *serial;
1011 serial = port->serial;
1017 usb_clear_halt(serial->dev, port->write_urb->pipe);
1018 usb_clear_halt(serial->dev, port->read_urb->pipe);
1055 read_mos_reg(serial, port_number, MOS7720_LSR, &data);
1059 write_mos_reg(serial, dummy, MOS7720_SP1_REG, 0x02);
1060 write_mos_reg(serial, dummy, MOS7720_SP2_REG, 0x02);
1062 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
1063 write_mos_reg(serial, port_number, MOS7720_FCR, 0x00);
1065 write_mos_reg(serial, port_number, MOS7720_FCR, 0xcf);
1067 write_mos_reg(serial, port_number, MOS7720_LCR,
1070 write_mos_reg(serial, port_number, MOS7720_MCR,
1073 write_mos_reg(serial, port_number, MOS7720_SP_CONTROL_REG, 0x00);
1074 read_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, &data);
1076 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, data);
1078 write_mos_reg(serial, port_number, MOS7720_LCR,
1080 write_mos_reg(serial, port_number, MOS7720_THR, 0x0c);
1081 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
1083 write_mos_reg(serial, port_number, MOS7720_LCR,
1085 write_mos_reg(serial, port_number, MOS7720_IER, 0x0c);
1132 struct usb_serial *serial;
1136 serial = port->serial;
1158 write_mos_reg(serial, port->port_number, MOS7720_MCR, 0x00);
1159 write_mos_reg(serial, port->port_number, MOS7720_IER, 0x00);
1168 struct usb_serial *serial;
1171 serial = port->serial;
1183 write_mos_reg(serial, port->port_number, MOS7720_LCR,
1225 struct usb_serial *serial;
1229 serial = port->serial;
1267 usb_fill_bulk_urb(urb, serial->dev,
1268 usb_sndbulkpipe(serial->dev,
1314 write_mos_reg(port->serial, port->port_number, MOS7720_MCR,
1344 write_mos_reg(port->serial, port->port_number, MOS7720_MCR,
1354 struct usb_serial *serial;
1361 serial = port->serial;
1369 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
1370 write_mos_reg(serial, port_number, MOS7720_FCR, 0x00);
1371 write_mos_reg(serial, port_number, MOS7720_FCR, 0xcf);
1373 write_mos_reg(serial, port_number, MOS7720_MCR,
1375 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, 0x00);
1385 write_mos_reg(serial, dummy, sp_reg, baud * 0x10);
1386 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, 0x03);
1388 write_mos_reg(serial, port_number, MOS7720_MCR,
1395 write_mos_reg(serial, port_number, MOS7720_LCR,
1397 write_mos_reg(serial, port_number, MOS7720_DLL, 0x01);
1398 write_mos_reg(serial, port_number, MOS7720_DLM, 0x00);
1400 write_mos_reg(serial, port_number, MOS7720_LCR,
1486 struct usb_serial *serial;
1495 serial = port->serial;
1509 write_mos_reg(serial, number, MOS7720_LCR, mos7720_port->shadowLCR);
1512 write_mos_reg(serial, number, MOS7720_DLL, (__u8)(divisor & 0xff));
1513 write_mos_reg(serial, number, MOS7720_DLM,
1518 write_mos_reg(serial, number, MOS7720_LCR, mos7720_port->shadowLCR);
1533 struct usb_serial *serial;
1546 serial = port->serial;
1616 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
1617 write_mos_reg(serial, port_number, MOS7720_FCR, 0x00);
1618 write_mos_reg(serial, port_number, MOS7720_FCR, 0xcf);
1621 write_mos_reg(serial, port_number, MOS7720_LCR,
1624 write_mos_reg(serial, port_number, MOS7720_MCR,
1635 * serial port, in SP1/2_CONTROL_REG */
1637 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG,
1640 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG,
1646 write_mos_reg(serial, port_number, MOS7720_MCR,
1660 write_mos_reg(serial, port_number, MOS7720_IER, 0x0c);
1671 write_mos_reg(serial, port_number, MOS7720_IER, 0x0c);
1732 read_mos_reg(port->serial, port_number, MOS7720_LSR, &data);
1789 write_mos_reg(port->serial, port->port_number, MOS7720_MCR,
1832 static int mos7720_startup(struct usb_serial *serial)
1839 product = le16_to_cpu(serial->dev->descriptor.idProduct);
1840 dev = serial->dev;
1843 struct urb *urb = serial->port[0]->interrupt_in_urb;
1848 ret_val = mos7715_parport_init(serial);
1854 ret_val = usb_submit_urb(serial->port[0]->interrupt_in_urb, GFP_KERNEL);
1861 read_mos_reg(serial, 0, MOS7720_LSR, &data);
1867 static void mos7720_release(struct usb_serial *serial)
1869 usb_kill_urb(serial->port[0]->interrupt_in_urb);
1874 if (le16_to_cpu(serial->dev->descriptor.idProduct)
1879 usb_get_serial_data(serial);
1892 usb_set_serial_data(serial, NULL);
1893 mos_parport->serial = NULL;