mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-26 14:40:41 +00:00
Blackfin: serial: convert to bfin_{read,write} helpers
Since the serial struct declares the sizes for us, no need to hardcode them in the accessor functions. Let the bfin_{read,write} helpers do it for us. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
4150cec335
commit
b1e574d95b
3 changed files with 19 additions and 17 deletions
|
@ -19,6 +19,8 @@
|
|||
#include <asm/mach-common/bits/pll.h>
|
||||
#include <asm/mach-common/bits/uart.h>
|
||||
|
||||
#define BUG() while (1) { asm volatile("emuexcpt;"); }
|
||||
|
||||
#include "serial.h"
|
||||
|
||||
__attribute__((always_inline))
|
||||
|
|
|
@ -63,7 +63,7 @@ static size_t cache_count;
|
|||
static uint16_t uart_lsr_save;
|
||||
static uint16_t uart_lsr_read(uint32_t uart_base)
|
||||
{
|
||||
uint16_t lsr = bfin_read16(&pUART->lsr);
|
||||
uint16_t lsr = bfin_read(&pUART->lsr);
|
||||
uart_lsr_save |= (lsr & (OE|PE|FE|BI));
|
||||
return lsr | uart_lsr_save;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ static uint16_t uart_lsr_read(uint32_t uart_base)
|
|||
static void uart_lsr_clear(uint32_t uart_base)
|
||||
{
|
||||
uart_lsr_save = 0;
|
||||
bfin_write16(&pUART->lsr, bfin_read16(&pUART->lsr) | -1);
|
||||
bfin_write(&pUART->lsr, bfin_read(&pUART->lsr) | -1);
|
||||
}
|
||||
#else
|
||||
/* When debugging is disabled, we only care about the DR bit, so if other
|
||||
|
@ -80,11 +80,11 @@ static void uart_lsr_clear(uint32_t uart_base)
|
|||
*/
|
||||
static inline uint16_t uart_lsr_read(uint32_t uart_base)
|
||||
{
|
||||
return bfin_read16(&pUART->lsr);
|
||||
return bfin_read(&pUART->lsr);
|
||||
}
|
||||
static void uart_lsr_clear(uint32_t uart_base)
|
||||
{
|
||||
bfin_write16(&pUART->lsr, bfin_read16(&pUART->lsr) | -1);
|
||||
bfin_write(&pUART->lsr, bfin_read(&pUART->lsr) | -1);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -101,7 +101,7 @@ static void uart_putc(uint32_t uart_base, const char c)
|
|||
continue;
|
||||
|
||||
/* queue the character for transmission */
|
||||
bfin_write16(&pUART->thr, c);
|
||||
bfin_write(&pUART->thr, c);
|
||||
SSYNC();
|
||||
|
||||
WATCHDOG_RESET();
|
||||
|
@ -122,7 +122,7 @@ static int uart_getc(uint32_t uart_base)
|
|||
continue;
|
||||
|
||||
/* grab the new byte */
|
||||
uart_rbr_val = bfin_read16(&pUART->rbr);
|
||||
uart_rbr_val = bfin_read(&pUART->rbr);
|
||||
|
||||
#ifdef CONFIG_DEBUG_SERIAL
|
||||
/* grab & clear the LSR */
|
||||
|
@ -136,8 +136,8 @@ static int uart_getc(uint32_t uart_base)
|
|||
uint16_t dll, dlh;
|
||||
printf("\n[SERIAL ERROR]\n");
|
||||
ACCESS_LATCH();
|
||||
dll = bfin_read16(&pUART->dll);
|
||||
dlh = bfin_read16(&pUART->dlh);
|
||||
dll = bfin_read(&pUART->dll);
|
||||
dlh = bfin_read(&pUART->dlh);
|
||||
ACCESS_PORT_IER();
|
||||
printf("\tDLL=0x%x DLH=0x%x\n", dll, dlh);
|
||||
do {
|
||||
|
|
|
@ -101,9 +101,9 @@ struct bfin_mmr_serial {
|
|||
# define ACCESS_PORT_IER()
|
||||
#else
|
||||
# define ACCESS_LATCH() \
|
||||
bfin_write16(&pUART->lcr, bfin_read16(&pUART->lcr) | DLAB)
|
||||
bfin_write(&pUART->lcr, bfin_read(&pUART->lcr) | DLAB)
|
||||
# define ACCESS_PORT_IER() \
|
||||
bfin_write16(&pUART->lcr, bfin_read16(&pUART->lcr) & ~DLAB)
|
||||
bfin_write(&pUART->lcr, bfin_read(&pUART->lcr) & ~DLAB)
|
||||
#endif
|
||||
|
||||
__attribute__((always_inline))
|
||||
|
@ -173,10 +173,10 @@ __attribute__((always_inline))
|
|||
static inline int uart_init(uint32_t uart_base)
|
||||
{
|
||||
/* always enable UART -- avoids anomalies 05000309 and 05000350 */
|
||||
bfin_write16(&pUART->gctl, UCEN);
|
||||
bfin_write(&pUART->gctl, UCEN);
|
||||
|
||||
/* Set LCR to Word Lengh 8-bit word select */
|
||||
bfin_write16(&pUART->lcr, WLS_8);
|
||||
bfin_write(&pUART->lcr, WLS_8);
|
||||
|
||||
SSYNC();
|
||||
|
||||
|
@ -196,7 +196,7 @@ __attribute__((always_inline))
|
|||
static inline int serial_early_uninit(uint32_t uart_base)
|
||||
{
|
||||
/* disable the UART by clearing UCEN */
|
||||
bfin_write16(&pUART->gctl, 0);
|
||||
bfin_write(&pUART->gctl, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -209,8 +209,8 @@ static inline void serial_early_put_div(uint32_t uart_base, uint16_t divisor)
|
|||
SSYNC();
|
||||
|
||||
/* Program the divisor to get the baud rate we want */
|
||||
bfin_write16(&pUART->dll, LOB(divisor));
|
||||
bfin_write16(&pUART->dlh, HIB(divisor));
|
||||
bfin_write(&pUART->dll, LOB(divisor));
|
||||
bfin_write(&pUART->dlh, HIB(divisor));
|
||||
SSYNC();
|
||||
|
||||
/* Clear DLAB in LCR to Access THR RBR IER */
|
||||
|
@ -227,8 +227,8 @@ static inline uint16_t serial_early_get_div(void)
|
|||
ACCESS_LATCH();
|
||||
SSYNC();
|
||||
|
||||
uint8_t dll = bfin_read16(&pUART->dll);
|
||||
uint8_t dlh = bfin_read16(&pUART->dlh);
|
||||
uint8_t dll = bfin_read(&pUART->dll);
|
||||
uint8_t dlh = bfin_read(&pUART->dlh);
|
||||
uint16_t divisor = (dlh << 8) | dll;
|
||||
|
||||
/* Clear DLAB in LCR to Access THR RBR IER */
|
||||
|
|
Loading…
Reference in a new issue