|
@@ -30,6 +30,10 @@
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
|
|
+#define RX_FIFO_COUNT_MASK 0xff
|
|
|
|
+#define RX_FIFO_FULL_MASK (1 << 8)
|
|
|
|
+#define TX_FIFO_FULL_MASK (1 << 24)
|
|
|
|
+
|
|
static inline struct s5p_uart *s5p_get_base_uart(int dev_index)
|
|
static inline struct s5p_uart *s5p_get_base_uart(int dev_index)
|
|
{
|
|
{
|
|
u32 offset = dev_index * sizeof(struct s5p_uart);
|
|
u32 offset = dev_index * sizeof(struct s5p_uart);
|
|
@@ -87,8 +91,8 @@ int serial_init_dev(const int dev_index)
|
|
{
|
|
{
|
|
struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
|
|
struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
|
|
|
|
|
|
- /* reset and enable FIFOs, set triggers to the maximum */
|
|
|
|
- writel(0, &uart->ufcon);
|
|
|
|
|
|
+ /* enable FIFOs */
|
|
|
|
+ writel(0x1, &uart->ufcon);
|
|
writel(0, &uart->umcon);
|
|
writel(0, &uart->umcon);
|
|
/* 8N1 */
|
|
/* 8N1 */
|
|
writel(0x3, &uart->ulcon);
|
|
writel(0x3, &uart->ulcon);
|
|
@@ -130,7 +134,8 @@ int serial_getc_dev(const int dev_index)
|
|
struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
|
|
struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
|
|
|
|
|
|
/* wait for character to arrive */
|
|
/* wait for character to arrive */
|
|
- while (!(readl(&uart->utrstat) & 0x1)) {
|
|
|
|
|
|
+ while (!(readl(&uart->ufstat) & (RX_FIFO_COUNT_MASK |
|
|
|
|
+ RX_FIFO_FULL_MASK))) {
|
|
if (serial_err_check(dev_index, 0))
|
|
if (serial_err_check(dev_index, 0))
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -146,7 +151,7 @@ void serial_putc_dev(const char c, const int dev_index)
|
|
struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
|
|
struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
|
|
|
|
|
|
/* wait for room in the tx FIFO */
|
|
/* wait for room in the tx FIFO */
|
|
- while (!(readl(&uart->utrstat) & 0x2)) {
|
|
|
|
|
|
+ while ((readl(&uart->ufstat) & TX_FIFO_FULL_MASK)) {
|
|
if (serial_err_check(dev_index, 1))
|
|
if (serial_err_check(dev_index, 1))
|
|
return;
|
|
return;
|
|
}
|
|
}
|