/*
* This component encapsulates the TTY layer glue needed to provide basic
* "serial port" functionality through the USB gadget stack. Each such
/*
* This component encapsulates the TTY layer glue needed to provide basic
* "serial port" functionality through the USB gadget stack. Each such
//buf: the buf address where data put
//*count: read length wanted, when return store actually read count
//return: weather read really done
//buf: the buf address where data put
//*count: read length wanted, when return store actually read count
//return: weather read really done
static int gs_write(struct tty_struct *tty, const unsigned char *buf, int count)
{
struct gs_port *port = tty->driver_data;
static int gs_write(struct tty_struct *tty, const unsigned char *buf, int count)
{
struct gs_port *port = tty->driver_data;
static int gs_put_char(struct tty_struct *tty, unsigned char ch)
{
struct gs_port *port = tty->driver_data;
static int gs_put_char(struct tty_struct *tty, unsigned char ch)
{
struct gs_port *port = tty->driver_data;
int status;
pr_vdebug("gs_put_char: (%d,%p) char=0x%x, called from %p\n",
int status;
pr_vdebug("gs_put_char: (%d,%p) char=0x%x, called from %p\n",
pr_vdebug("gs_flush_chars: (%d,%p)\n", port->port_num, tty);
pr_vdebug("gs_flush_chars: (%d,%p)\n", port->port_num, tty);