Revert "rk29:uart->rkserial.c add function printing what received and sent and modify...
authorhhb <hhb@rock-chips.com>
Mon, 11 Jul 2011 10:08:15 +0000 (18:08 +0800)
committerhhb <hhb@rock-chips.com>
Mon, 11 Jul 2011 10:08:15 +0000 (18:08 +0800)
This reverts commit c846ff59f964fe14df539d389a8b82a66c1df924.

drivers/serial/rk_serial.c

index 623325c64dfad6d3504eeb8d75dc89d3a385de2f..bef5b8ffeeb243b79db0bba466eb574f9e3fd9c5 100644 (file)
 #include <asm/io.h>\r
 #include <asm/irq.h>\r
 \r
-#include <mach/iomux.h>\r
-#include <mach/gpio.h>\r
-\r
-\r
 \r
 #define PORT_RK                90\r
 #define UART_USR       0x1F    /* UART Status Register */\r
 #define USE_TIMER 1           // use timer for dma transport\r
 #define THRE_MODE 0X00   //0yhh\r
 \r
-//define which uart the bluetooth use on which board\r
-#ifdef CONFIG_MACH_RK29_PHONESDK\r
-#define BLUETOOTH_UART  2\r
-#else\r
-#define BLUETOOTH_UART  2\r
-#endif\r
-\r
-\r
 static struct uart_driver serial_rk_reg;\r
 \r
 /*\r
  * Debugging.\r
  */\r
-\r
-#define DBG_PORT  2    // 0,1,2,3,  other numbers is default\r
-#if 0\r
-#define DBG(msg...)    printk(msg);\r
-#define DEBUG_INTR(fmt...)     if (!uart_console(&up->port)) DBG(fmt)\r
-#else\r
-#define DBG(...)\r
-#define DEBUG_INTR(fmt...)     do { } while (0)\r
-#endif\r
-\r
+#define DBG_PORT 1\r
 #ifdef CONFIG_SERIAL_CORE_CONSOLE\r
 #define uart_console(port)     ((port)->cons && (port)->cons->index == (port)->line)\r
 #else\r
 #define uart_console(port)     (0)\r
 #endif\r
 \r
+#ifdef DEBUG\r
+extern void printascii(const char *);\r
+\r
+static void dbg(const char *fmt, ...)\r
+{\r
+       va_list va;\r
+       char buff[256];\r
+\r
+       va_start(va, fmt);\r
+       vsprintf(buff, fmt, va);\r
+       va_end(va);\r
+\r
+       printascii(buff);\r
+}\r
+\r
+#define DEBUG_INTR(fmt...)     if (!uart_console(&up->port)) dbg(fmt)\r
+#else\r
+#define DEBUG_INTR(fmt...)     do { } while (0)\r
+#endif\r
 \r
 \r
 /* added by hhb@rock-chips.com for uart dma transfer */\r
@@ -305,9 +303,21 @@ static void serial_rk_start_tx(struct uart_port *port)
 {\r
        struct uart_rk_port *up =\r
                container_of(port, struct uart_rk_port, port);\r
+/*\r
+ *  struct circ_buf *xmit = &port->state->xmit;\r
+    int size = CIRC_CNT(xmit->head, xmit->tail, UART_XMIT_SIZE);\r
+       if(size > 64){\r
+               serial_rk_start_tx_dma(port);\r
+       }\r
+       else{\r
+               serial_rk_enable_ier_thri(up);\r
+       }\r
+*/\r
+\r
        if(0 == serial_rk_start_tx_dma(port)){\r
                serial_rk_enable_ier_thri(up);\r
        }\r
+\r
 }\r
 \r
 \r
@@ -711,15 +721,10 @@ static void
 receive_chars(struct uart_rk_port *up, unsigned int *status)\r
 {\r
        struct tty_struct *tty = up->port.state->port.tty;\r
-       struct uart_port *port = &up->port;\r
        unsigned char ch, lsr = *status;\r
        int max_count = 256;\r
        char flag;\r
 \r
-       if(DBG_PORT == port->line) {\r
-               DBG("RX:");\r
-       }\r
-\r
        do {\r
                if (likely(lsr & UART_LSR_DR))\r
                        ch = serial_in(up, UART_RX);\r
@@ -779,9 +784,7 @@ receive_chars(struct uart_rk_port *up, unsigned int *status)
                        goto ignore_char;\r
 \r
                uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag);\r
-               if(DBG_PORT == port->line) {\r
-                       DBG("0x%x, ", ch);\r
-               }\r
+\r
 ignore_char:\r
                lsr = serial_in(up, UART_LSR);\r
        } while ((lsr & (UART_LSR_DR | UART_LSR_BI)) && (max_count-- > 0));\r
@@ -789,17 +792,11 @@ ignore_char:
        tty_flip_buffer_push(tty);\r
        spin_lock(&up->port.lock);\r
        *status = lsr;\r
-\r
-       if(DBG_PORT == port->line) {\r
-               DBG("\n");\r
-       }\r
-\r
 }\r
 \r
 static void transmit_chars(struct uart_rk_port *up)\r
 {\r
        struct circ_buf *xmit = &up->port.state->xmit;\r
-       struct uart_port *port = &up->port;\r
        int count;\r
 \r
        if (up->port.x_char) {\r
@@ -817,18 +814,11 @@ static void transmit_chars(struct uart_rk_port *up)
                return;\r
        }\r
 \r
-       if(DBG_PORT == port->line) {\r
-               DBG("TX:");\r
-       }\r
-\r
        count = up->tx_loadsz;\r
        do {\r
                serial_out(up, UART_TX, xmit->buf[xmit->tail]);\r
                xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);\r
                up->port.icount.tx++;\r
-               if(DBG_PORT == port->line) {\r
-                       DBG("0x%x, ", xmit->buf[xmit->tail]);\r
-               }\r
                if (uart_circ_empty(xmit))\r
                        break;\r
        } while (--count > 0);\r
@@ -836,10 +826,6 @@ static void transmit_chars(struct uart_rk_port *up)
        if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)\r
                uart_write_wakeup(&up->port);\r
 \r
-       if(DBG_PORT == port->line) {\r
-               DBG("\n");\r
-       }\r
-\r
        DEBUG_INTR("THRE...");\r
 \r
        if (uart_circ_empty(xmit))\r
@@ -1244,32 +1230,43 @@ serial_rk_set_termios(struct uart_port *port, struct ktermios *termios,
        struct uart_rk_port *up =\r
                container_of(port, struct uart_rk_port, port);\r
        unsigned char cval, fcr = 0;\r
-       unsigned long flags;\r
+       unsigned long flags, bits;\r
        unsigned int baud, quot;\r
 \r
        dev_dbg(port->dev, "+%s\n", __func__);\r
 \r
+       //start bit\r
+       bits += 1;\r
        switch (termios->c_cflag & CSIZE) {\r
        case CS5:\r
                cval = UART_LCR_WLEN5;\r
+               bits += 5;\r
                break;\r
        case CS6:\r
                cval = UART_LCR_WLEN6;\r
+               bits += 6;\r
                break;\r
        case CS7:\r
                cval = UART_LCR_WLEN7;\r
+               bits += 7;\r
                break;\r
        default:\r
        case CS8:\r
                cval = UART_LCR_WLEN8;\r
+               bits += 8;\r
                break;\r
        }\r
 \r
        if (termios->c_cflag & CSTOPB){\r
                cval |= UART_LCR_STOP;\r
+               bits += 2;\r
+       }\r
+       else{\r
+               bits += 1;\r
        }\r
        if (termios->c_cflag & PARENB){\r
                cval |= UART_LCR_PARITY;\r
+               bits += 1;\r
        }\r
        if (!(termios->c_cflag & PARODD)){\r
                cval |= UART_LCR_EPAR;\r
@@ -1288,6 +1285,10 @@ serial_rk_set_termios(struct uart_port *port, struct ktermios *termios,
 \r
        quot = uart_get_divisor(port, baud);\r
 \r
+\r
+       dev_info(up->port.dev, "*****baud:%d*******\n", baud);\r
+       dev_info(up->port.dev, "*****quot:%d*******\n", quot);\r
+\r
        if (baud < 2400){\r
                fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1;\r
        }\r
@@ -1295,6 +1296,19 @@ serial_rk_set_termios(struct uart_port *port, struct ktermios *termios,
                //added by hhb@rock-chips.com\r
                if(up->prk29_uart_dma_t->use_timer == 1){\r
                        fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_00 | UART_FCR_T_TRIG_01;\r
+                       //set time out value according to the baud rate\r
+/*\r
+                       up->prk29_uart_dma_t->rx_timeout = bits*1000*1024/baud + 1;\r
+\r
+                       if(up->prk29_uart_dma_t->rx_timeout < 10){\r
+                               up->prk29_uart_dma_t->rx_timeout = 10;\r
+                       }\r
+                       if(up->prk29_uart_dma_t->rx_timeout > 25){\r
+                               up->prk29_uart_dma_t->rx_timeout = 25;\r
+                       }\r
+                       printk("%s:time:%d, bits:%d, baud:%d\n", __func__, up->prk29_uart_dma_t->rx_timeout, bits, baud);\r
+                       up->prk29_uart_dma_t->rx_timeout = 7;\r
+*/\r
                }\r
                else{\r
                        fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10 | UART_FCR_T_TRIG_01;\r
@@ -1312,8 +1326,10 @@ serial_rk_set_termios(struct uart_port *port, struct ktermios *termios,
        up->mcr &= ~UART_MCR_AFE;\r
        if (termios->c_cflag & CRTSCTS){\r
                up->mcr |= UART_MCR_AFE;\r
+               //dev_info(up->port.dev, "*****UART_MCR_AFE*******\n");\r
        }\r
 \r
+\r
        /*\r
         * Ok, we're now changing the port state.  Do it with\r
         * interrupts disabled.\r
@@ -1750,50 +1766,17 @@ static int serial_rk_suspend(struct platform_device *dev, pm_message_t state)
 {\r
        struct uart_rk_port *up = platform_get_drvdata(dev);\r
 \r
-       if (up){\r
+       if (up)\r
                uart_suspend_port(&serial_rk_reg, &up->port);\r
-               if(up->port.line == BLUETOOTH_UART){\r
-                       rk29_mux_api_set(GPIO2A7_UART2RTSN_NAME, GPIO2L_GPIO2A7);\r
-                       gpio_request(RK29_PIN2_PA7, "uart_rts");\r
-                       gpio_direction_output(RK29_PIN2_PA7, 0);\r
-                       gpio_set_value(RK29_PIN2_PA7, GPIO_HIGH);\r
-               }else{\r
-                       serial_out(up, UART_MCR, 0);\r
-               }\r
-       }\r
        return 0;\r
 }\r
 \r
-\r
-static struct timer_list uart2_tl;\r
-static bool timer_init = false;\r
-static void timer_resume_uart2(unsigned long arg)\r
-{\r
-       DBG("%s---\n", __FUNCTION__);\r
-       gpio_set_value(RK29_PIN2_PA7, GPIO_LOW);\r
-       rk29_mux_api_set(GPIO2A7_UART2RTSN_NAME, GPIO2L_UART2_RTS_N);\r
-}\r
-\r
 static int serial_rk_resume(struct platform_device *dev)\r
 {\r
        struct uart_rk_port *up = platform_get_drvdata(dev);\r
 \r
-       if (up){\r
+       if (up)\r
                uart_resume_port(&serial_rk_reg, &up->port);\r
-\r
-               if(up->port.line == BLUETOOTH_UART){\r
-                       if(!timer_init){\r
-                               init_timer(&uart2_tl);\r
-                               uart2_tl.expires = jiffies + msecs_to_jiffies(30);\r
-                               uart2_tl.function = timer_resume_uart2;\r
-                               add_timer(&uart2_tl);\r
-                               timer_init = true;\r
-                       }\r
-                       else{\r
-                               mod_timer(&uart2_tl,jiffies + msecs_to_jiffies(30));\r
-                       }\r
-               }\r
-       }\r
        return 0;\r
 }\r
 \r