ColdFire: Update processors' serial port configuration

Provide parameter passing to uart_port_config(). Update port
configuration - un-mask it before enable the bits.

Signed-off-by: TsiChung Liew <tsicliew@gmail.com>
master
TsiChung Liew 15 years ago
parent d04c1efae3
commit 52affe04fa
  1. 4
      cpu/mcf5227x/cpu_init.c
  2. 24
      cpu/mcf523x/cpu_init.c
  3. 61
      cpu/mcf52x2/cpu_init.c
  4. 29
      cpu/mcf532x/cpu_init.c
  5. 32
      cpu/mcf5445x/cpu_init.c
  6. 4
      cpu/mcf547x_8x/cpu_init.c
  7. 1
      include/asm-m68k/immap_5253.h

@ -125,12 +125,12 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart &= gpio->par_uart &=
(GPIO_PAR_UART_U0TXD_UNMASK & GPIO_PAR_UART_U0RXD_UNMASK); (GPIO_PAR_UART_U0TXD_UNMASK & GPIO_PAR_UART_U0RXD_UNMASK);

@ -130,21 +130,32 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart = (GPIO_PAR_UART_U0RXD | GPIO_PAR_UART_U0TXD); gpio->par_uart &= ~(GPIO_PAR_UART_U0RXD | GPIO_PAR_UART_U0TXD);
gpio->par_uart |= (GPIO_PAR_UART_U0RXD | GPIO_PAR_UART_U0TXD);
break; break;
case 1: case 1:
gpio->par_uart = gpio->par_uart &=
~(GPIO_PAR_UART_U1RXD_MASK | GPIO_PAR_UART_U1TXD_MASK);
gpio->par_uart |=
(GPIO_PAR_UART_U1RXD_U1RXD | GPIO_PAR_UART_U1TXD_U1TXD); (GPIO_PAR_UART_U1RXD_U1RXD | GPIO_PAR_UART_U1TXD_U1TXD);
break; break;
case 2: case 2:
gpio->par_timer = (GPIO_PAR_UART_U2RXD | GPIO_PAR_UART_U2TXD); #ifdef CONFIG_SYS_UART2_PRI_GPIO
gpio->par_uart &= ~(GPIO_PAR_UART_U2RXD | GPIO_PAR_UART_U2TXD);
gpio->par_uart |= (GPIO_PAR_UART_U2RXD | GPIO_PAR_UART_U2TXD);
#elif defined(CONFIG_SYS_UART2_ALT1_GPIO)
gpio->feci2c &=
~(GPIO_PAR_FECI2C_EMDC_MASK | GPIO_PAR_FECI2C_EMDIO_MASK);
gpio->feci2c |=
(GPIO_PAR_FECI2C_EMDC_U2TXD | GPIO_PAR_FECI2C_EMDIO_U2RXD);
#endif
break; break;
} }
} }
@ -156,7 +167,8 @@ int fecpin_setclear(struct eth_device *dev, int setclear)
if (setclear) { if (setclear) {
gpio->par_feci2c |= gpio->par_feci2c |=
(GPIO_PAR_FECI2C_EMDC_FECEMDC | GPIO_PAR_FECI2C_EMDIO_FECEMDIO); (GPIO_PAR_FECI2C_EMDC_FECEMDC |
GPIO_PAR_FECI2C_EMDIO_FECEMDIO);
} else { } else {
gpio->par_feci2c &= gpio->par_feci2c &=
~(GPIO_PAR_FECI2C_EMDC_MASK | GPIO_PAR_FECI2C_EMDIO_MASK); ~(GPIO_PAR_FECI2C_EMDC_MASK | GPIO_PAR_FECI2C_EMDIO_MASK);

@ -135,12 +135,12 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart &= GPIO_PAR_UART0_UNMASK; gpio->par_uart &= GPIO_PAR_UART0_UNMASK;
gpio->par_uart |= (GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD); gpio->par_uart |= (GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD);
@ -247,15 +247,19 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile u32 *par = (u32 *) MMAP_PAR;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0:
break;
case 1: case 1:
*par &= 0xFFE7FFFF;
*par |= 0x00180000;
break; break;
case 2: case 2:
*par &= 0xFFFFFFFC;
*par &= 0x00000003;
break; break;
} }
} }
@ -291,21 +295,26 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
u16 temp;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
mbar_writeShort(MCF_GPIO_PAR_UART, MCF_GPIO_PAR_UART_U0TXD | temp = mbar_readShort(MCF_GPIO_PAR_UART) & 0xFFF3;
MCF_GPIO_PAR_UART_U0RXD); temp |= (MCF_GPIO_PAR_UART_U0TXD | MCF_GPIO_PAR_UART_U0RXD);
mbar_writeShort(MCF_GPIO_PAR_UART, temp);
break; break;
case 1: case 1:
mbar_writeShort(MCF_GPIO_PAR_UART, temp = mbar_readShort(MCF_GPIO_PAR_UART) & 0xF0FF;
MCF_GPIO_PAR_UART_U1RXD_UART1 | temp |= (MCF_GPIO_PAR_UART_U1RXD_UART1 | MCF_GPIO_PAR_UART_U1TXD_UART1);
MCF_GPIO_PAR_UART_U1TXD_UART1); mbar_writeShort(MCF_GPIO_PAR_UART, temp);
break; break;
case 2: case 2:
mbar_writeShort(MCF_GPIO_PAR_UART, 0x3000); temp = mbar_readShort(MCF_GPIO_PAR_UART) & 0xCFFF;
temp |= (0x3000);
mbar_writeShort(MCF_GPIO_PAR_UART, temp);
break; break;
} }
} }
@ -409,12 +418,12 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->gpio_pbcnt &= ~(GPIO_PBCNT_PB0MSK | GPIO_PBCNT_PB1MSK); gpio->gpio_pbcnt &= ~(GPIO_PBCNT_PB0MSK | GPIO_PBCNT_PB1MSK);
gpio->gpio_pbcnt |= (GPIO_PBCNT_URT0_TXD | GPIO_PBCNT_URT0_RXD); gpio->gpio_pbcnt |= (GPIO_PBCNT_URT0_TXD | GPIO_PBCNT_URT0_RXD);
@ -487,19 +496,22 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart &= ~UART0_ENABLE_MASK;
gpio->par_uart |= UART0_ENABLE_MASK; gpio->par_uart |= UART0_ENABLE_MASK;
break; break;
case 1: case 1:
gpio->par_uart &= ~UART1_ENABLE_MASK;
gpio->par_uart |= UART1_ENABLE_MASK; gpio->par_uart |= UART1_ENABLE_MASK;
break; break;
case 2: case 2:
gpio->par_uart &= ~UART2_ENABLE_MASK;
gpio->par_uart |= UART2_ENABLE_MASK; gpio->par_uart |= UART2_ENABLE_MASK;
break; break;
} }
@ -621,10 +633,10 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
MCFGPIO_PUAPAR &= 0xFc; MCFGPIO_PUAPAR &= 0xFc;
MCFGPIO_PUAPAR |= 0x03; MCFGPIO_PUAPAR |= 0x03;
@ -729,14 +741,7 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
/* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) {
case 0:
break;
case 1:
break;
}
} }
#endif /* #if defined(CONFIG_M5249) */ #endif /* #if defined(CONFIG_M5249) */

@ -133,19 +133,21 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart = (GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD); gpio->par_uart &= ~(GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD);
gpio->par_uart |= (GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD);
break; break;
case 1: case 1:
#ifdef CONFIG_SYS_UART1_ALT1_GPIO #ifdef CONFIG_SYS_UART1_ALT1_GPIO
gpio->par_simp1h &= gpio->par_simp1h &=
~(GPIO_PAR_SIMP1H_DATA1_UNMASK | GPIO_PAR_SIMP1H_VEN1_UNMASK); ~(GPIO_PAR_SIMP1H_DATA1_UNMASK |
GPIO_PAR_SIMP1H_VEN1_UNMASK);
gpio->par_simp1h |= gpio->par_simp1h |=
(GPIO_PAR_SIMP1H_DATA1_U1TXD | GPIO_PAR_SIMP1H_VEN1_U1RXD); (GPIO_PAR_SIMP1H_DATA1_U1TXD | GPIO_PAR_SIMP1H_VEN1_U1RXD);
#elif defined(CONFIG_SYS_UART1_ALT2_GPIO) #elif defined(CONFIG_SYS_UART1_ALT2_GPIO)
@ -297,22 +299,33 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart = (GPIO_PAR_UART_TXD0 | GPIO_PAR_UART_RXD0); gpio->par_uart &= ~(GPIO_PAR_UART_TXD0 | GPIO_PAR_UART_RXD0);
gpio->par_uart |= (GPIO_PAR_UART_TXD0 | GPIO_PAR_UART_RXD0);
break; break;
case 1: case 1:
gpio->par_uart = gpio->par_uart &=
~(GPIO_PAR_UART_TXD1(3) | GPIO_PAR_UART_RXD1(3));
gpio->par_uart |=
(GPIO_PAR_UART_TXD1(3) | GPIO_PAR_UART_RXD1(3)); (GPIO_PAR_UART_TXD1(3) | GPIO_PAR_UART_RXD1(3));
break; break;
case 2: case 2:
#ifdef CONFIG_SYS_UART2_ALT1_GPIO
gpio->par_timer &= 0x0F; gpio->par_timer &= 0x0F;
gpio->par_timer |= (GPIO_PAR_TIN3_URXD2 | GPIO_PAR_TIN2_UTXD2); gpio->par_timer |= (GPIO_PAR_TIN3_URXD2 | GPIO_PAR_TIN2_UTXD2);
#elif defined(CONFIG_SYS_UART2_ALT2_GPIO)
gpio->par_feci2c &= 0xFF00;
gpio->par_feci2c |= (GPIO_PAR_FECI2C_SCL_UTXD2 | GPIO_PAR_FECI2C_SDA_URXD2);
#elif defined(CONFIG_SYS_UART2_ALT3_GPIO)
gpio->par_ssi &= 0xF0FF;
gpio->par_ssi |= (GPIO_PAR_SSI_RXD(2) | GPIO_PAR_SSI_TXD(2));
#endif
break; break;
} }
} }

@ -128,19 +128,43 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_uart = gpio->par_uart &=
~(GPIO_PAR_UART_U0TXD_U0TXD | GPIO_PAR_UART_U0RXD_U0RXD);
gpio->par_uart |=
(GPIO_PAR_UART_U0TXD_U0TXD | GPIO_PAR_UART_U0RXD_U0RXD); (GPIO_PAR_UART_U0TXD_U0TXD | GPIO_PAR_UART_U0RXD_U0RXD);
break; break;
case 1: case 1:
gpio->par_uart = #ifdef CONFIG_SYS_UART1_PRI_GPIO
gpio->par_uart &=
~(GPIO_PAR_UART_U1TXD_U1TXD | GPIO_PAR_UART_U1RXD_U1RXD);
gpio->par_uart |=
(GPIO_PAR_UART_U1TXD_U1TXD | GPIO_PAR_UART_U1RXD_U1RXD); (GPIO_PAR_UART_U1TXD_U1TXD | GPIO_PAR_UART_U1RXD_U1RXD);
#elif defined(CONFIG_SYS_UART1_ALT1_GPIO)
gpio->par_ssi &=
(GPIO_PAR_SSI_SRXD_UNMASK | GPIO_PAR_SSI_STXD_UNMASK);
gpio->par_ssi |=
(GPIO_PAR_SSI_SRXD_U1RXD | GPIO_PAR_SSI_STXD_U1TXD);
#endif
break;
case 2:
#if defined(CONFIG_SYS_UART2_ALT1_GPIO)
gpio->par_timer &=
(GPIO_PAR_TIMER_T3IN_UNMASK | GPIO_PAR_TIMER_T2IN_UNMASK);
gpio->par_timer |=
(GPIO_PAR_TIMER_T3IN_U2RXD | GPIO_PAR_TIMER_T2IN_U2TXD);
#elif defined(CONFIG_SYS_UART2_ALT2_GPIO)
gpio->par_timer &=
(GPIO_PAR_FECI2C_SCL_UNMASK | GPIO_PAR_FECI2C_SDA_UNMASK);
gpio->par_timer |=
(GPIO_PAR_FECI2C_SCL_U2TXD | GPIO_PAR_FECI2C_SDA_U2RXD);
#endif
break; break;
} }
} }

@ -113,13 +113,13 @@ int cpu_init_r(void)
return (0); return (0);
} }
void uart_port_conf(void) void uart_port_conf(int port)
{ {
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;
volatile u8 *pscsicr = (u8 *) (CONFIG_SYS_UART_BASE + 0x40); volatile u8 *pscsicr = (u8 *) (CONFIG_SYS_UART_BASE + 0x40);
/* Setup Ports: */ /* Setup Ports: */
switch (CONFIG_SYS_UART_PORT) { switch (port) {
case 0: case 0:
gpio->par_psc0 = (GPIO_PAR_PSC0_TXD0 | GPIO_PAR_PSC0_RXD0); gpio->par_psc0 = (GPIO_PAR_PSC0_TXD0 | GPIO_PAR_PSC0_RXD0);
break; break;

@ -37,6 +37,7 @@
#define MMAP_CAN0 (CONFIG_SYS_MBAR + 0x00010000) #define MMAP_CAN0 (CONFIG_SYS_MBAR + 0x00010000)
#define MMAP_CAN1 (CONFIG_SYS_MBAR + 0x00011000) #define MMAP_CAN1 (CONFIG_SYS_MBAR + 0x00011000)
#define MMAP_PAR (CONFIG_SYS_MBAR2 + 0x0000019C)
#define MMAP_I2C1 (CONFIG_SYS_MBAR2 + 0x00000440) #define MMAP_I2C1 (CONFIG_SYS_MBAR2 + 0x00000440)
#define MMAP_UART2 (CONFIG_SYS_MBAR2 + 0x00000C00) #define MMAP_UART2 (CONFIG_SYS_MBAR2 + 0x00000C00)

Loading…
Cancel
Save