2000-08-10 Charles-Antoine Gauthier <charles.gauthier@nrc.ca>

* console-generic/console-generic.c: Addition of support for shared
	printk and no termios.

2000-08-10	Charles-Antoine Gauthier  <charles.gauthier@nrc.ca>

	* console-generic/console-generic.c(m8xx_uart_pollWrite):
	Flush actual buffer.
This commit is contained in:
Joel Sherrill
2000-08-10 16:20:42 +00:00
parent f1aa400207
commit 38dff47b2d
2 changed files with 20 additions and 13 deletions

View File

@@ -1,3 +1,13 @@
2000-08-10 Charles-Antoine Gauthier <charles.gauthier@nrc.ca>
* console-generic/console-generic.c: Addition of support for shared
printk and no termios.
2000-08-10 Charles-Antoine Gauthier <charles.gauthier@nrc.ca>
* console-generic/console-generic.c(m8xx_uart_pollWrite):
Flush actual buffer.
2000-08-10 Joel Sherrill <joel@OARcorp.com> 2000-08-10 Joel Sherrill <joel@OARcorp.com>
* ChangeLog: New file. * ChangeLog: New file.

View File

@@ -59,7 +59,7 @@ extern rtems_cpu_table Cpu_table;
#ifdef EPPCBUG_SMC1 #ifdef EPPCBUG_SMC1
extern unsigned32 simask_copy; extern unsigned32 simask_copy;
#endif /* EPPCBUG_SMC1 */ #endif
/* /*
* Interrupt-driven input buffer * Interrupt-driven input buffer
@@ -703,7 +703,7 @@ m8xx_uart_scc_initialize (int minor)
sccparms->rfcr = M8xx_RFCR_MOT | M8xx_RFCR_DMA_SPACE(0); sccparms->rfcr = M8xx_RFCR_MOT | M8xx_RFCR_DMA_SPACE(0);
sccparms->tfcr = M8xx_TFCR_MOT | M8xx_TFCR_DMA_SPACE(0); sccparms->tfcr = M8xx_TFCR_MOT | M8xx_TFCR_DMA_SPACE(0);
#ifdef UARTS_USE_INTERRUPTS #if UARTS_IO_MODE == 1
sccparms->mrblr = RXBUFSIZE; /* Maximum Rx buffer size */ sccparms->mrblr = RXBUFSIZE; /* Maximum Rx buffer size */
#else #else
sccparms->mrblr = 1; /* Maximum Rx buffer size */ sccparms->mrblr = 1; /* Maximum Rx buffer size */
@@ -774,7 +774,7 @@ m8xx_uart_scc_initialize (int minor)
break; break;
#endif #endif
} }
#ifdef UARTS_USE_INTERRUPTS #if UARTS_IO_MODE == 1
switch (minor) { switch (minor) {
case SCC2_MINOR: case SCC2_MINOR:
rtems_interrupt_catch (m8xx_scc2_interrupt_handler, rtems_interrupt_catch (m8xx_scc2_interrupt_handler,
@@ -805,7 +805,7 @@ m8xx_uart_scc_initialize (int minor)
break; break;
#endif /* mpc860 */ #endif /* mpc860 */
} }
#endif /* UARTS_USE_INTERRUPTS */ #endif /* UARTS_IO_MODE */
} }
@@ -874,7 +874,7 @@ m8xx_uart_smc_initialize (int minor)
smcparms->tbase = (char *)TxBd[minor] - (char *)&m8xx; smcparms->tbase = (char *)TxBd[minor] - (char *)&m8xx;
smcparms->rfcr = M8xx_RFCR_MOT | M8xx_RFCR_DMA_SPACE(0); smcparms->rfcr = M8xx_RFCR_MOT | M8xx_RFCR_DMA_SPACE(0);
smcparms->tfcr = M8xx_TFCR_MOT | M8xx_TFCR_DMA_SPACE(0); smcparms->tfcr = M8xx_TFCR_MOT | M8xx_TFCR_DMA_SPACE(0);
#ifdef UARTS_USE_INTERRUPTS #if UARTS_IO_MODE == 1
smcparms->mrblr = RXBUFSIZE; /* Maximum Rx buffer size */ smcparms->mrblr = RXBUFSIZE; /* Maximum Rx buffer size */
#else #else
smcparms->mrblr = 1; /* Maximum Rx buffer size */ smcparms->mrblr = 1; /* Maximum Rx buffer size */
@@ -923,7 +923,7 @@ m8xx_uart_smc_initialize (int minor)
* Enable receiver and transmitter * Enable receiver and transmitter
*/ */
smcregs->smcmr |= M8xx_SMCMR_TEN | M8xx_SMCMR_REN; smcregs->smcmr |= M8xx_SMCMR_TEN | M8xx_SMCMR_REN;
#ifdef UARTS_USE_INTERRUPTS #if UARTS_IO_MODE == 1
switch (minor) { switch (minor) {
case SMC1_MINOR: case SMC1_MINOR:
rtems_interrupt_catch (m8xx_smc1_interrupt_handler, rtems_interrupt_catch (m8xx_smc1_interrupt_handler,
@@ -967,10 +967,10 @@ m8xx_uart_interrupts_initialize(void)
#else #else
m8xx.cicr = 0x00043F80; /* SCaP=SCC1, SCbP=SCC2, IRL=1, HP=PC15, IEN=1 */ m8xx.cicr = 0x00043F80; /* SCaP=SCC1, SCbP=SCC2, IRL=1, HP=PC15, IEN=1 */
#endif #endif
m8xx.simask |= M8xx_SIMASK_LVM1; /* Enable level interrupts */
#ifdef EPPCBUG_SMC1 #ifdef EPPCBUG_SMC1
simask_copy = m8xx.simask | M8xx_SIMASK_LVM1; simask_copy = m8xx.simask;
#endif /* EPPCBUG_SMC1 */ #endif
m8xx.simask |= M8xx_SIMASK_LVM1; /* Enable level interrupts */
} }
@@ -1023,10 +1023,7 @@ m8xx_uart_pollWrite(
while (TxBd[minor]->status & M8xx_BD_READY) while (TxBd[minor]->status & M8xx_BD_READY)
continue; continue;
txBuf[minor] = *buf++; txBuf[minor] = *buf++;
rtems_cache_flush_multiple_data_lines( rtems_cache_flush_multiple_data_lines( &txBuf[minor], 1 );
(const void *) TxBd[minor]->buffer,
TxBd[minor]->length
);
TxBd[minor]->buffer = &txBuf[minor]; TxBd[minor]->buffer = &txBuf[minor];
TxBd[minor]->length = 1; TxBd[minor]->length = 1;
TxBd[minor]->status = M8xx_BD_READY | M8xx_BD_WRAP; TxBd[minor]->status = M8xx_BD_READY | M8xx_BD_WRAP;