software: use new UART
authorSebastien Bourdeauducq <sebastien@milkymist.org>
Mon, 6 Feb 2012 16:53:41 +0000 (17:53 +0100)
committerSebastien Bourdeauducq <sebastien@milkymist.org>
Mon, 6 Feb 2012 16:53:41 +0000 (17:53 +0100)
software/bios/main.c
software/include/hw/uart.h
software/libbase/uart.c

index c479dfcfa586c13fe70b2f6ab8a3248c1a1bd37c..b2f90e3b3a43781c358e569ae924e96e5a50959b 100644 (file)
@@ -3,7 +3,7 @@
 static void print(const char *s)
 {
        while(*s) {
-               while(!(CSR_UART_STAT & UART_STAT_THRE));
+               while(CSR_UART_EV_STAT & UART_EV_TX);
                CSR_UART_RXTX = *s;
                s++;
        }
index 5540ca443029ce0ba74a2a523356b7f14c2a9487..c9e1e194b7643c2a9b307f8c35c8b8d5f70fa2ff 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Milkymist SoC (Software)
- * Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
+ * Copyright (C) 2007, 2008, 2009, 2010, 2012 Sebastien Bourdeauducq
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #include <hw/common.h>
 
 #define CSR_UART_RXTX          MMPTR(0xe0000000)
-#define CSR_UART_DIVISOR       MMPTR(0xe0000004)
-#define CSR_UART_STAT          MMPTR(0xe0000008)
-#define CSR_UART_CTRL          MMPTR(0xe000000c)
-#define CSR_UART_DEBUG         MMPTR(0xe0000010)
+#define CSR_UART_DIVISORH      MMPTR(0xe0000004)
+#define CSR_UART_DIVISORL      MMPTR(0xe0000008)
 
-#define UART_STAT_THRE         (0x1)
-#define UART_STAT_RX_EVT       (0x2)
-#define UART_STAT_TX_EVT       (0x4)
+#define CSR_UART_EV_STAT       MMPTR(0xe000000c)
+#define CSR_UART_EV_PENDING    MMPTR(0xe0000010)
+#define CSR_UART_EV_ENABLE     MMPTR(0xe0000014)
 
-#define UART_CTRL_RX_INT       (0x1)
-#define UART_CTRL_TX_INT       (0x2)
-#define UART_CTRL_THRU         (0x4)
-
-#define UART_DEBUG_BREAK_EN    (0x1)
+#define UART_EV_TX             (0x1)
+#define UART_EV_RX             (0x2)
 
 #endif /* __HW_UART_H */
index 9ec12ab1404b12b427aa47fec94ed1ba0c52405d..6ca28629fc030518f14bce5e6a7fc1a7b19d71ab 100644 (file)
@@ -44,14 +44,14 @@ static volatile int tx_cts;
 
 void uart_isr(void)
 {
-       unsigned int stat = CSR_UART_STAT;
+       unsigned int stat = CSR_UART_EV_PENDING;
 
-       if(stat & UART_STAT_RX_EVT) {
+       if(stat & UART_EV_RX) {
                rx_buf[rx_produce] = CSR_UART_RXTX;
                rx_produce = (rx_produce + 1) & UART_RINGBUFFER_MASK_RX;
        }
 
-       if(stat & UART_STAT_TX_EVT) {
+       if(stat & UART_EV_TX) {
                if(tx_produce != tx_consume) {
                        CSR_UART_RXTX = tx_buf[tx_consume];
                        tx_consume = (tx_consume + 1) & UART_RINGBUFFER_MASK_TX;
@@ -59,7 +59,7 @@ void uart_isr(void)
                        tx_cts = 1;
        }
 
-       CSR_UART_STAT = stat;
+       CSR_UART_EV_PENDING = stat;
        irq_ack(IRQ_UART);
 }
 
@@ -109,10 +109,10 @@ void uart_init(void)
        irq_ack(IRQ_UART);
 
        /* ack any events */
-       CSR_UART_STAT = CSR_UART_STAT;
+       CSR_UART_EV_PENDING = CSR_UART_EV_PENDING;
 
        /* enable interrupts */
-       CSR_UART_CTRL = UART_CTRL_TX_INT | UART_CTRL_RX_INT;
+       CSR_UART_EV_ENABLE = UART_EV_TX | UART_EV_RX;
 
        mask = irq_getmask();
        mask |= IRQ_UART;