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 */
94 struct usb_serial *serial; /* back to containing struct */
108 MOS7720_THR, /* serial port regs */
125 MOS7720_SP2_REG, /* serial port 2 (7720 only) */
174 else /* serial port reg */
181 * not specific to a particular serial port.
183 static int write_mos_reg(struct usb_serial *serial, unsigned int serial_portnum,
186 struct usb_device *usbdev = serial->dev;
203 * ignored for registers that are not specific to a particular serial port.
205 static int read_mos_reg(struct usb_serial *serial, unsigned int serial_portnum,
208 struct usb_device *usbdev = serial->dev;
246 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
265 * not called the release function yet because someone has a serial port open.
290 mutex_lock(&mos_parport->serial->disc_mutex);
291 if (mos_parport->serial->disconnected) {
293 mutex_unlock(&mos_parport->serial->disc_mutex);
309 mutex_unlock(&mos_parport->serial->disc_mutex);
320 mutex_lock(&mos_parport->serial->disc_mutex);
323 if (mos_parport->serial->disconnected)
326 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
328 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
331 mutex_unlock(&mos_parport->serial->disc_mutex);
341 write_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, (__u8)d);
352 read_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, &d);
365 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, data);
398 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
437 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
450 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
509 retval = usb_bulk_msg(mos_parport->serial->dev,
510 usb_sndbulkpipe(mos_parport->serial->dev, 2),
515 dev_err(&mos_parport->serial->dev->dev,
553 static int mos7715_parport_init(struct usb_serial *serial)
564 usb_set_serial_data(serial, mos_parport); /* hijack private pointer */
565 mos_parport->serial = serial;
570 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x80);
571 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x00);
575 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
578 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
586 dev_err(&serial->interface->dev,
593 mos_parport->pp->dev = &serial->interface->dev;
719 * Byte 1: IIR serial Port
730 if (!(iir & 0x01)) { /* serial port interrupt pending */
747 struct mos7715_parport *mos_parport = port->serial->private;
797 * this is the callback function for when we have finished sending serial
820 static int mos77xx_calc_num_ports(struct usb_serial *serial,
823 u16 product = le16_to_cpu(serial->dev->descriptor.idProduct);
828 * parallel port, and the second for the serial port. We swap
830 * only registered port structure uses the serial-port
844 struct usb_serial *serial;
853 serial = port->serial;
859 usb_clear_halt(serial->dev, port->write_urb->pipe);
860 usb_clear_halt(serial->dev, port->read_urb->pipe);
897 read_mos_reg(serial, port_number, MOS7720_LSR, &data);
901 write_mos_reg(serial, dummy, MOS7720_SP1_REG, 0x02);
902 write_mos_reg(serial, dummy, MOS7720_SP2_REG, 0x02);
904 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
905 write_mos_reg(serial, port_number, MOS7720_FCR, 0x00);
907 write_mos_reg(serial, port_number, MOS7720_FCR, 0xcf);
909 write_mos_reg(serial, port_number, MOS7720_LCR,
912 write_mos_reg(serial, port_number, MOS7720_MCR,
915 write_mos_reg(serial, port_number, MOS7720_SP_CONTROL_REG, 0x00);
916 read_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, &data);
918 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, data);
920 write_mos_reg(serial, port_number, MOS7720_LCR,
922 write_mos_reg(serial, port_number, MOS7720_THR, 0x0c);
923 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
925 write_mos_reg(serial, port_number, MOS7720_LCR,
927 write_mos_reg(serial, port_number, MOS7720_IER, 0x0c);
967 struct usb_serial *serial;
971 serial = port->serial;
993 write_mos_reg(serial, port->port_number, MOS7720_MCR, 0x00);
994 write_mos_reg(serial, port->port_number, MOS7720_IER, 0x00);
1003 struct usb_serial *serial;
1006 serial = port->serial;
1019 return write_mos_reg(serial, port->port_number, MOS7720_LCR,
1055 struct usb_serial *serial;
1059 serial = port->serial;
1097 usb_fill_bulk_urb(urb, serial->dev,
1098 usb_sndbulkpipe(serial->dev,
1144 write_mos_reg(port->serial, port->port_number, MOS7720_MCR,
1174 write_mos_reg(port->serial, port->port_number, MOS7720_MCR,
1184 struct usb_serial *serial;
1191 serial = port->serial;
1199 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
1200 write_mos_reg(serial, port_number, MOS7720_FCR, 0x00);
1201 write_mos_reg(serial, port_number, MOS7720_FCR, 0xcf);
1203 write_mos_reg(serial, port_number, MOS7720_MCR,
1205 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, 0x00);
1215 write_mos_reg(serial, dummy, sp_reg, baud * 0x10);
1216 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG, 0x03);
1218 write_mos_reg(serial, port_number, MOS7720_MCR,
1225 write_mos_reg(serial, port_number, MOS7720_LCR,
1227 write_mos_reg(serial, port_number, MOS7720_DLL, 0x01);
1228 write_mos_reg(serial, port_number, MOS7720_DLM, 0x00);
1230 write_mos_reg(serial, port_number, MOS7720_LCR,
1316 struct usb_serial *serial;
1325 serial = port->serial;
1339 write_mos_reg(serial, number, MOS7720_LCR, mos7720_port->shadowLCR);
1342 write_mos_reg(serial, number, MOS7720_DLL, (__u8)(divisor & 0xff));
1343 write_mos_reg(serial, number, MOS7720_DLM,
1348 write_mos_reg(serial, number, MOS7720_LCR, mos7720_port->shadowLCR);
1363 struct usb_serial *serial;
1376 serial = port->serial;
1428 write_mos_reg(serial, port_number, MOS7720_IER, 0x00);
1429 write_mos_reg(serial, port_number, MOS7720_FCR, 0x00);
1430 write_mos_reg(serial, port_number, MOS7720_FCR, 0xcf);
1433 write_mos_reg(serial, port_number, MOS7720_LCR,
1436 write_mos_reg(serial, port_number, MOS7720_MCR,
1447 * serial port, in SP1/2_CONTROL_REG */
1449 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG,
1452 write_mos_reg(serial, dummy, MOS7720_SP_CONTROL_REG,
1458 write_mos_reg(serial, port_number, MOS7720_MCR,
1472 write_mos_reg(serial, port_number, MOS7720_IER, 0x0c);
1483 write_mos_reg(serial, port_number, MOS7720_IER, 0x0c);
1545 read_mos_reg(port->serial, port_number, MOS7720_LSR, &data);
1602 write_mos_reg(port->serial, port->port_number, MOS7720_MCR,
1628 static int mos7720_startup(struct usb_serial *serial)
1635 product = le16_to_cpu(serial->dev->descriptor.idProduct);
1636 dev = serial->dev;
1639 struct urb *urb = serial->port[0]->interrupt_in_urb;
1644 ret_val = mos7715_parport_init(serial);
1650 ret_val = usb_submit_urb(serial->port[0]->interrupt_in_urb, GFP_KERNEL);
1657 read_mos_reg(serial, 0, MOS7720_LSR, &data);
1663 static void mos7720_release(struct usb_serial *serial)
1665 usb_kill_urb(serial->port[0]->interrupt_in_urb);
1670 if (le16_to_cpu(serial->dev->descriptor.idProduct)
1673 usb_get_serial_data(serial);
1687 * below serial clearing is not hoisted above the ->work.
1692 usb_set_serial_data(serial, NULL);
1693 mos_parport->serial = NULL;