X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=arch%2Fpowerpc%2Fcpu%2Fmpc5xxx%2Fserial.c;h=cb5b0bfe9b0d3eeb18e69ad3ae7627b145ddfe12;hb=141e1faec2cd594dafb2edad6da8baa6a681cf37;hp=9bebff8512375af6fe9394e9b8adfaac387a65df;hpb=90bad891e18cd77273ee951e61623d768255bcda;p=u-boot diff --git a/arch/powerpc/cpu/mpc5xxx/serial.c b/arch/powerpc/cpu/mpc5xxx/serial.c index 9bebff8512..cb5b0bfe9b 100644 --- a/arch/powerpc/cpu/mpc5xxx/serial.c +++ b/arch/powerpc/cpu/mpc5xxx/serial.c @@ -2,30 +2,14 @@ * (C) Copyright 2000 - 2003 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * - * See file CREDITS for list of people who contributed to this - * project. - * - * 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 the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA + * SPDX-License-Identifier: GPL-2.0+ * * Hacked for MPC8260 by Murray.Jensen@cmst.csiro.au, 19-Oct-00, with * changes based on the file arch/powerpc/mbxboot/m8260_tty.c from the * Linux/PPC sources (m8260_tty.c had no copyright info in it). * * Martin Krause, 8 Jun 2006 - * Added CONFIG_SERIAL_MULTI support + * Added SERIAL_MULTI support */ /* @@ -36,10 +20,7 @@ #include #include #include - -#if defined (CONFIG_SERIAL_MULTI) #include -#endif DECLARE_GLOBAL_DATA_PTR; @@ -61,11 +42,8 @@ DECLARE_GLOBAL_DATA_PTR; #error CONFIG_PSC_CONSOLE must be in 1 ... 6 #endif -#if defined(CONFIG_SERIAL_MULTI) && !defined(CONFIG_PSC_CONSOLE2) -#error you must define CONFIG_PSC_CONSOLE2 if CONFIG_SERIAL_MULTI is set -#endif +#if defined(CONFIG_PSC_CONSOLE2) -#if defined(CONFIG_SERIAL_MULTI) #if CONFIG_PSC_CONSOLE2 == 1 #define PSC_BASE2 MPC5XXX_PSC1 #elif CONFIG_PSC_CONSOLE2 == 2 @@ -81,19 +59,12 @@ DECLARE_GLOBAL_DATA_PTR; #else #error CONFIG_PSC_CONSOLE2 must be in 1 ... 6 #endif -#endif /* CONFIG_SERIAL_MULTI */ -#if defined(CONFIG_SERIAL_MULTI) -int serial_init_dev (unsigned long dev_base) -#else -int serial_init (void) #endif + +int serial_init_dev (unsigned long dev_base) { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif unsigned long baseclk; int div; @@ -102,7 +73,7 @@ int serial_init (void) /* select clock sources */ psc->psc_clock_select = 0; - baseclk = (gd->ipb_clk + 16) / 32; + baseclk = (gd->arch.ipb_clk + 16) / 32; /* switch to UART mode */ psc->sicr = 0; @@ -127,24 +98,12 @@ int serial_init (void) return (0); } -#if defined(CONFIG_SERIAL_MULTI) void serial_putc_dev (unsigned long dev_base, const char c) -#else -void serial_putc(const char c) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif if (c == '\n') -#if defined(CONFIG_SERIAL_MULTI) serial_putc_dev (dev_base, '\r'); -#else - serial_putc('\r'); -#endif /* Wait for last character to go. */ while (!(psc->psc_status & PSC_SR_TXEMP)) @@ -153,17 +112,9 @@ void serial_putc(const char c) psc->psc_buffer_8 = c; } -#if defined(CONFIG_SERIAL_MULTI) void serial_putc_raw_dev(unsigned long dev_base, const char c) -#else -void serial_putc_raw(const char c) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif /* Wait for last character to go. */ while (!(psc->psc_status & PSC_SR_TXEMP)) ; @@ -172,32 +123,16 @@ void serial_putc_raw(const char c) } -#if defined(CONFIG_SERIAL_MULTI) void serial_puts_dev (unsigned long dev_base, const char *s) -#else -void serial_puts (const char *s) -#endif { while (*s) { -#if defined(CONFIG_SERIAL_MULTI) serial_putc_dev (dev_base, *s++); -#else - serial_putc (*s++); -#endif } } -#if defined(CONFIG_SERIAL_MULTI) int serial_getc_dev (unsigned long dev_base) -#else -int serial_getc(void) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif /* Wait for a character to arrive. */ while (!(psc->psc_status & PSC_SR_RXRDY)) @@ -206,35 +141,19 @@ int serial_getc(void) return psc->psc_buffer_8; } -#if defined(CONFIG_SERIAL_MULTI) int serial_tstc_dev (unsigned long dev_base) -#else -int serial_tstc(void) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif return (psc->psc_status & PSC_SR_RXRDY); } -#if defined(CONFIG_SERIAL_MULTI) void serial_setbrg_dev (unsigned long dev_base) -#else -void serial_setbrg(void) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif unsigned long baseclk, div; - baseclk = (gd->ipb_clk + 16) / 32; + baseclk = (gd->arch.ipb_clk + 16) / 32; /* set up UART divisor */ div = (baseclk + (gd->baudrate/2)) / gd->baudrate; @@ -242,17 +161,9 @@ void serial_setbrg(void) psc->ctlr = div & 0xff; } -#if defined(CONFIG_SERIAL_MULTI) void serial_setrts_dev (unsigned long dev_base, int s) -#else -void serial_setrts(int s) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif if (s) { /* Assert RTS (become LOW) */ @@ -264,78 +175,43 @@ void serial_setrts(int s) } } -#if defined(CONFIG_SERIAL_MULTI) int serial_getcts_dev (unsigned long dev_base) -#else -int serial_getcts(void) -#endif { -#if defined(CONFIG_SERIAL_MULTI) volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base; -#else - volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE; -#endif return (psc->ip & 0x1) ? 0 : 1; } -#if defined(CONFIG_SERIAL_MULTI) int serial0_init(void) { return (serial_init_dev(PSC_BASE)); } -int serial1_init(void) -{ - return (serial_init_dev(PSC_BASE2)); -} void serial0_setbrg (void) { serial_setbrg_dev(PSC_BASE); } -void serial1_setbrg (void) -{ - serial_setbrg_dev(PSC_BASE2); -} void serial0_putc(const char c) { serial_putc_dev(PSC_BASE,c); } -void serial1_putc(const char c) -{ - serial_putc_dev(PSC_BASE2, c); -} void serial0_puts(const char *s) { serial_puts_dev(PSC_BASE, s); } -void serial1_puts(const char *s) -{ - serial_puts_dev(PSC_BASE2, s); -} - int serial0_getc(void) { return(serial_getc_dev(PSC_BASE)); } -int serial1_getc(void) -{ - return(serial_getc_dev(PSC_BASE2)); -} int serial0_tstc(void) { return (serial_tstc_dev(PSC_BASE)); } -int serial1_tstc(void) -{ - return (serial_tstc_dev(PSC_BASE2)); -} - struct serial_device serial0_device = { .name = "serial0", @@ -353,6 +229,37 @@ __weak struct serial_device *default_serial_console(void) return &serial0_device; } +#ifdef CONFIG_PSC_CONSOLE2 +int serial1_init(void) +{ + return serial_init_dev(PSC_BASE2); +} + +void serial1_setbrg(void) +{ + serial_setbrg_dev(PSC_BASE2); +} + +void serial1_putc(const char c) +{ + serial_putc_dev(PSC_BASE2, c); +} + +void serial1_puts(const char *s) +{ + serial_puts_dev(PSC_BASE2, s); +} + +int serial1_getc(void) +{ + return serial_getc_dev(PSC_BASE2); +} + +int serial1_tstc(void) +{ + return serial_tstc_dev(PSC_BASE2); +} + struct serial_device serial1_device = { .name = "serial1", @@ -364,6 +271,6 @@ struct serial_device serial1_device = .putc = serial1_putc, .puts = serial1_puts, }; -#endif /* CONFIG_SERIAL_MULTI */ +#endif /* CONFIG_PSC_CONSOLE2 */ #endif /* CONFIG_PSC_CONSOLE */