This patch introduces new methods needed by the USB-Serial Serial Core
version. The methods are:
pl2303_stop_tx(), pl2303_send_xchar(), pl2303_stop_rx(), pl2303_type(),
pl2303_enable_ms(), pl2303_release_port(), pl2303_request_port(),
pl2303_config_port(), pl2303_verify_port().
Note that, however, some of them do nothing. That's because I _think_ they
are not needed.
Signed-off-by: Luiz Fernando N. Capitulino <[EMAIL PROTECTED]>
---
drivers/usb/serial/pl2303.c | 81 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index cf04ae0..f93da0b 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -129,7 +129,17 @@ #define UART_CTS 0x80
/* function prototypes for a PL2303 serial converter */
static void pl2303_set_mctrl(struct uart_port *port, unsigned int mctrl);
static unsigned int pl2303_get_mctrl(struct uart_port *port);
+static void pl2303_stop_tx(struct uart_port *port);
static void pl2303_start_tx(struct uart_port *port);
+static void pl2303_send_xchar(struct uart_port *port, char ch);
+static void pl2303_stop_rx(struct uart_port *port);
+static void pl2303_enable_ms(struct uart_port *port);
+static const char *pl2303_type(struct uart_port *port);
+static void pl2303_release_port(struct uart_port *port);
+static int pl2303_request_port(struct uart_port *port);
+static void pl2303_config_port(struct uart_port *port, int flags);
+static int pl2303_verify_port(struct uart_port *port,
+ struct serial_struct *serinfo);
static void pl2303_break(struct uart_port *port, int break_state);
static void pl2303_set_termios(struct uart_port *port,
struct termios *termios,
@@ -155,11 +165,20 @@ static unsigned int pl2303_buf_get(struc
static struct uart_ops pl2303_uart_ops = {
.set_mctrl = pl2303_set_mctrl,
.get_mctrl = pl2303_get_mctrl,
+ .stop_tx = pl2303_stop_tx,
.start_tx = pl2303_start_tx,
+ .send_xchar = pl2303_send_xchar,
+ .stop_rx = pl2303_stop_rx,
+ .enable_ms = pl2303_enable_ms,
.break_ctl = pl2303_break,
.startup = pl2303_startup,
.shutdown = pl2303_shutdown,
.set_termios = pl2303_set_termios,
+ .type = pl2303_type,
+ .release_port = pl2303_release_port,
+ .request_port = pl2303_request_port,
+ .config_port = pl2303_config_port,
+ .verify_port = pl2303_verify_port,
};
/* All of the device info needed for the PL2303 SIO serial converter */
@@ -742,6 +761,13 @@ static unsigned int pl2303_get_mctrl(str
return result;
}
+static void pl2303_stop_tx(struct uart_port *port)
+{
+ dbg("port %d", port->line);
+
+ usb_unlink_urb(USBSERIAL_PORT->write_urb);
+}
+
static void pl2303_start_tx(struct uart_port *port)
{
struct usb_serial_port *usp = USBSERIAL_PORT;
@@ -782,6 +808,61 @@ submit:
uart_write_wakeup(port);
}
+static void pl2303_send_xchar(struct uart_port *port, char ch)
+{
+ struct pl2303_private *priv;
+ struct usb_serial_port *usp = USBSERIAL_PORT;
+
+ dbg("port %d", port->line);
+
+ priv = usb_get_serial_port_data(usp);
+
+ pl2303_buf_put(priv->buf, &ch, 1);
+ pl2303_send(usp);
+}
+
+static void pl2303_stop_rx(struct uart_port *port)
+{
+ dbg("port %d", port->line);
+
+ usb_unlink_urb(USBSERIAL_PORT->read_urb);
+ usb_unlink_urb(USBSERIAL_PORT->interrupt_in_urb);
+}
+
+static void pl2303_enable_ms(struct uart_port *port)
+{
+ dbg("port %d", port->line);
+}
+
+static const char *pl2303_type(struct uart_port *port)
+{
+ dbg("port %d", port->line);
+ return "pl2303";
+}
+
+static void pl2303_release_port(struct uart_port *port)
+{
+ dbg("port %d", port->line);
+}
+
+static int pl2303_request_port(struct uart_port *port)
+{
+ dbg("port %d", port->line);
+ return 0;
+}
+
+static void pl2303_config_port(struct uart_port *port, int flags)
+{
+ dbg("port %d", port->line);
+}
+
+static int pl2303_verify_port(struct uart_port *port,
+ struct serial_struct *serinfo)
+{
+ dbg("port %d", port->line);
+ return 0;
+}
+
static void pl2303_usb_shutdown(struct usb_serial *serial)
{
int i;
--
1.3.3.g0825d
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel