summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2009-06-02 16:53:16 +0200
committerWolfgang Denk <wd@denx.de>2009-06-12 20:47:17 +0200
commitba4feae90ca71de1681d5808f17e73224d8f03c4 (patch)
treec72baa3fd5838e19de89acb87643d09685659311
parentb8c1d6a54ff8195488b68e163de8ec31f1603496 (diff)
downloadu-boot-imx-ba4feae90ca71de1681d5808f17e73224d8f03c4.zip
u-boot-imx-ba4feae90ca71de1681d5808f17e73224d8f03c4.tar.gz
u-boot-imx-ba4feae90ca71de1681d5808f17e73224d8f03c4.tar.bz2
mpc512x: Use serial_setbrg() in serial_init() to not duplicate the code
This patch removes the duplicated code for baudrate generator configuration in the PSC serial_init() implementation by calling serial_setbrg() instead of duplicating the code. Signed-off-by: Stefan Roese <sr@denx.de>
-rw-r--r--cpu/mpc512x/serial.c36
1 files changed, 15 insertions, 21 deletions
diff --git a/cpu/mpc512x/serial.c b/cpu/mpc512x/serial.c
index d3ffff9..4fc4693 100644
--- a/cpu/mpc512x/serial.c
+++ b/cpu/mpc512x/serial.c
@@ -60,12 +60,24 @@ static void fifo_init (volatile psc512x_t *psc)
__asm__ volatile ("sync");
}
+void serial_setbrg(void)
+{
+ volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
+ volatile psc512x_t *psc = (psc512x_t *) &im->psc[CONFIG_PSC_CONSOLE];
+ unsigned long baseclk, div;
+
+ /* calculate dividor for setting PSC CTUR and CTLR registers */
+ baseclk = (gd->ips_clk + 8) / 16;
+ div = (baseclk + (gd->baudrate / 2)) / gd->baudrate;
+
+ out_8(&psc->ctur, (div >> 8) & 0xff);
+ out_8(&psc->ctlr, div & 0xff); /* set baudrate */
+}
+
int serial_init(void)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[CONFIG_PSC_CONSOLE];
- unsigned long baseclk;
- int div;
fifo_init (psc);
@@ -87,13 +99,8 @@ int serial_init(void)
/* now, mode register points to mr2 */
out_8(&psc->mode, PSC_MODE_1_STOPBIT);
- /* calculate dividor for setting PSC CTUR and CTLR registers */
- baseclk = (gd->ips_clk + 8) / 16;
- div = (baseclk + (gd->baudrate / 2)) / gd->baudrate;
-
- out_8(&psc->ctur, (div >> 8) & 0xff);
/* set baudrate */
- out_8(&psc->ctlr, div & 0xff);
+ serial_setbrg();
/* disable all interrupts */
out_be16(&psc->psc_imr, 0);
@@ -161,19 +168,6 @@ int serial_tstc (void)
return !(in_be32(&psc->rfstat) & PSC_FIFO_EMPTY);
}
-void serial_setbrg (void)
-{
- volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
- volatile psc512x_t *psc = (psc512x_t *) &im->psc[CONFIG_PSC_CONSOLE];
- unsigned long baseclk, div;
-
- baseclk = (gd->ips_clk + 8) / 16;
- div = (baseclk + (gd->baudrate / 2)) / gd->baudrate;
-
- out_8(&psc->ctur, (div >> 8) & 0xFF);
- out_8(&psc->ctlr, div & 0xff); /* set baudrate */
-}
-
void serial_setrts(int s)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;