]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/ns16550.h
dm: serial: Move baud rate calculation to ns16550.c
[karo-tx-uboot.git] / include / ns16550.h
index e9d2edab09bc51da190a54daead5ef44b27d4518..d93e28e3eca3d08937d3e673ff80a9870e850099 100644 (file)
@@ -46,6 +46,14 @@ struct NS16550 {
        UART_REG(lsr);          /* 5 */
        UART_REG(msr);          /* 6 */
        UART_REG(spr);          /* 7 */
+#ifdef CONFIG_SOC_DA8XX
+       UART_REG(reg8);         /* 8 */
+       UART_REG(reg9);         /* 9 */
+       UART_REG(revid1);       /* A */
+       UART_REG(revid2);       /* B */
+       UART_REG(pwr_mgmt);     /* C */
+       UART_REG(mdr1);         /* D */
+#else
        UART_REG(mdr1);         /* 8 */
        UART_REG(reg9);         /* 9 */
        UART_REG(regA);         /* A */
@@ -56,8 +64,7 @@ struct NS16550 {
        UART_REG(uasr);         /* F */
        UART_REG(scr);          /* 10*/
        UART_REG(ssr);          /* 11*/
-       UART_REG(reg12);        /* 12*/
-       UART_REG(osc_12m_sel);  /* 13*/
+#endif
 };
 
 #define thr rbr
@@ -91,6 +98,7 @@ typedef struct NS16550 *NS16550_t;
 #define UART_MCR_OUT1  0x04            /* Out 1 */
 #define UART_MCR_OUT2  0x08            /* Out 2 */
 #define UART_MCR_LOOP  0x10            /* Enable loopback test mode */
+#define UART_MCR_AFE   0x20            /* Enable auto-RTS/CTS */
 
 #define UART_MCR_DMA_EN        0x04
 #define UART_MCR_TX_DFR        0x08
@@ -154,11 +162,6 @@ typedef struct NS16550 *NS16550_t;
 #define UART_IER_THRI  0x02    /* Enable Transmitter holding register int. */
 #define UART_IER_RDI   0x01    /* Enable receiver data interrupt */
 
-
-#ifdef CONFIG_OMAP1510
-#define OSC_12M_SEL    0x01    /* selects 6.5 * current clk div */
-#endif
-
 /* useful defaults for LCR */
 #define UART_LCR_8N1   0x03
 
@@ -167,3 +170,16 @@ void NS16550_putc(NS16550_t com_port, char c);
 char NS16550_getc(NS16550_t com_port);
 int NS16550_tstc(NS16550_t com_port);
 void NS16550_reinit(NS16550_t com_port, int baud_divisor);
+
+/**
+ * ns16550_calc_divisor() - calculate the divisor given clock and baud rate
+ *
+ * Given the UART input clock and required baudrate, calculate the divisor
+ * that should be used.
+ *
+ * @port:      UART port
+ * @clock:     UART input clock speed in Hz
+ * @baudrate:  Required baud rate
+ * @return baud rate divisor that should be used
+ */
+int ns16550_calc_divisor(NS16550_t port, int clock, int baudrate);