Hello. Marc St-Jean wrote:
Patch to add serial driver support for the PMC-Sierra MSP71xx devices.
Reposting patches as a single set at the request of akpm. Only 9 of 12 will be posted at this time, 3 more to follow when cleanups are complete.
Thanks, Marc
Signed-off-by: Marc St-Jean <Marc_St-Jean@xxxxxxxxxxxxxx> --- Re-posting patch with recommended changes: -Implemented support for putchar() in msp_serial.c
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_serial.c b/arch/mips/pmc-sierra/msp71xx/msp_serial.c new file mode 100644 index 0000000..3b956e9 --- /dev/null +++ b/arch/mips/pmc-sierra/msp71xx/msp_serial.c @@ -0,0 +1,185 @@
[...]
+#ifdef CONFIG_KGDB +/* + * kgdb uses serial port 1 so the console can remain on port 0. + * To use port 0 change the definition to read as follows: + * #define DEBUG_PORT_BASE KSEG1ADDR(MSP_UART0_BASE) + */ +#define DEBUG_PORT_BASE KSEG1ADDR(MSP_UART1_BASE) + +int putDebugChar(char c) +{ + volatile uint32_t *uart = (volatile uint32_t *)DEBUG_PORT_BASE; + uint32_t val = (uint32_t)c; + + local_irq_disable(); + while (!(uart[5] & 0x20)); /* Wait for TXRDY */ + uart[0] = val; + while (!(uart[5] & 0x20)); /* Wait for TXRDY */ + local_irq_enable();
Gah, why you decided to put local_irq_enable() there?! KGDB expects interrupts to be *disabled* while it has control, else some subtle state corruptions will ensue, and it will eventually lock up. Please remove these 2 calls completely.
WBR, Sergei