diff options
| -rw-r--r-- | drivers/serial/mcfserial.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/drivers/serial/mcfserial.c b/drivers/serial/mcfserial.c index e2ebdcad553c..47f7404cb045 100644 --- a/drivers/serial/mcfserial.c +++ b/drivers/serial/mcfserial.c | |||
| @@ -57,7 +57,8 @@ struct timer_list mcfrs_timer_struct; | |||
| 57 | * keep going. Perhaps one day the cflag settings for the | 57 | * keep going. Perhaps one day the cflag settings for the |
| 58 | * console can be used instead. | 58 | * console can be used instead. |
| 59 | */ | 59 | */ |
| 60 | #if defined(CONFIG_ARNEWSH) || defined(CONFIG_MOTOROLA) || defined(CONFIG_senTec) || defined(CONFIG_SNEHA) | 60 | #if defined(CONFIG_ARNEWSH) || defined(CONFIG_FREESCALE) || \ |
| 61 | defined(CONFIG_senTec) || defined(CONFIG_SNEHA) | ||
| 61 | #define CONSOLE_BAUD_RATE 19200 | 62 | #define CONSOLE_BAUD_RATE 19200 |
| 62 | #define DEFAULT_CBAUD B19200 | 63 | #define DEFAULT_CBAUD B19200 |
| 63 | #endif | 64 | #endif |
| @@ -67,7 +68,7 @@ struct timer_list mcfrs_timer_struct; | |||
| 67 | #define DEFAULT_CBAUD B38400 | 68 | #define DEFAULT_CBAUD B38400 |
| 68 | #endif | 69 | #endif |
| 69 | 70 | ||
| 70 | #if defined(CONFIG_MOD5272) | 71 | #if defined(CONFIG_MOD5272) || defined(CONFIG_M5208EVB) |
| 71 | #define CONSOLE_BAUD_RATE 115200 | 72 | #define CONSOLE_BAUD_RATE 115200 |
| 72 | #define DEFAULT_CBAUD B115200 | 73 | #define DEFAULT_CBAUD B115200 |
| 73 | #endif | 74 | #endif |
| @@ -95,7 +96,8 @@ static struct tty_driver *mcfrs_serial_driver; | |||
| 95 | #undef SERIAL_DEBUG_OPEN | 96 | #undef SERIAL_DEBUG_OPEN |
| 96 | #undef SERIAL_DEBUG_FLOW | 97 | #undef SERIAL_DEBUG_FLOW |
| 97 | 98 | ||
| 98 | #if defined(CONFIG_M523x) || defined(CONFIG_M527x) || defined(CONFIG_M528x) | 99 | #if defined(CONFIG_M523x) || defined(CONFIG_M527x) || defined(CONFIG_M528x) || \ |
| 100 | defined(CONFIG_M520x) | ||
| 99 | #define IRQBASE (MCFINT_VECBASE+MCFINT_UART0) | 101 | #define IRQBASE (MCFINT_VECBASE+MCFINT_UART0) |
| 100 | #else | 102 | #else |
| 101 | #define IRQBASE 73 | 103 | #define IRQBASE 73 |
| @@ -1528,6 +1530,35 @@ static void mcfrs_irqinit(struct mcf_serial *info) | |||
| 1528 | imrp = (volatile unsigned long *) (MCF_MBAR + MCFICM_INTC0 + | 1530 | imrp = (volatile unsigned long *) (MCF_MBAR + MCFICM_INTC0 + |
| 1529 | MCFINTC_IMRL); | 1531 | MCFINTC_IMRL); |
| 1530 | *imrp &= ~((1 << (info->irq - MCFINT_VECBASE)) | 1); | 1532 | *imrp &= ~((1 << (info->irq - MCFINT_VECBASE)) | 1); |
| 1533 | #elif defined(CONFIG_M520x) | ||
| 1534 | volatile unsigned char *icrp, *uartp; | ||
| 1535 | volatile unsigned long *imrp; | ||
| 1536 | |||
| 1537 | uartp = info->addr; | ||
| 1538 | |||
| 1539 | icrp = (volatile unsigned char *) (MCF_MBAR + MCFICM_INTC0 + | ||
| 1540 | MCFINTC_ICR0 + MCFINT_UART0 + info->line); | ||
| 1541 | *icrp = 0x03; | ||
| 1542 | |||
| 1543 | imrp = (volatile unsigned long *) (MCF_MBAR + MCFICM_INTC0 + | ||
| 1544 | MCFINTC_IMRL); | ||
| 1545 | *imrp &= ~((1 << (info->irq - MCFINT_VECBASE)) | 1); | ||
| 1546 | if (info->line < 2) { | ||
| 1547 | unsigned short *uart_par; | ||
| 1548 | uart_par = (unsigned short *)(MCF_IPSBAR + MCF_GPIO_PAR_UART); | ||
| 1549 | if (info->line == 0) | ||
| 1550 | *uart_par |= MCF_GPIO_PAR_UART_PAR_UTXD0 | ||
| 1551 | | MCF_GPIO_PAR_UART_PAR_URXD0; | ||
| 1552 | else if (info->line == 1) | ||
| 1553 | *uart_par |= MCF_GPIO_PAR_UART_PAR_UTXD1 | ||
| 1554 | | MCF_GPIO_PAR_UART_PAR_URXD1; | ||
| 1555 | } else if (info->line == 2) { | ||
| 1556 | unsigned char *feci2c_par; | ||
| 1557 | feci2c_par = (unsigned char *)(MCF_IPSBAR + MCF_GPIO_PAR_FECI2C); | ||
| 1558 | *feci2c_par &= ~0x0F; | ||
| 1559 | *feci2c_par |= MCF_GPIO_PAR_FECI2C_PAR_SCL_UTXD2 | ||
| 1560 | | MCF_GPIO_PAR_FECI2C_PAR_SDA_URXD2; | ||
| 1561 | } | ||
| 1531 | #else | 1562 | #else |
| 1532 | volatile unsigned char *icrp, *uartp; | 1563 | volatile unsigned char *icrp, *uartp; |
| 1533 | 1564 | ||
