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



_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to