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:
Mike Frysinger 2011-06-06 16:47:31 -04:00
parent 4150cec335
commit b1e574d95b
3 changed files with 19 additions and 17 deletions

View File

@ -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))

View File

@ -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 {

View File

@ -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 */