# HG changeset patch # User jlarmour # Date 1049124470 0 # Node ID 846508c7777df7ac4272d90ea469b9d4d4578307 # Parent 237e9c388bd61bc18c4c6e4519553e81c4ee7bcb * src/quicc_smc1.c (cyg_hal_smcx_init_channel): (cyg_hal_sccx_init_channel): * src/cpm.c: Include for memset(). (_mpc8xx_reset_cpm): use CPM busy flag to check reset completion. * src/quicc_smc1.c: Include for memset(). (cyg_hal_smcx_init_channel): Don't reset CPM here - let variant initialization do it. Only let through RX interrupts. (cyg_hal_sccx_init_channel): Ditto. diff --git a/packages/hal/powerpc/quicc/current/ChangeLog b/packages/hal/powerpc/quicc/current/ChangeLog --- a/packages/hal/powerpc/quicc/current/ChangeLog +++ b/packages/hal/powerpc/quicc/current/ChangeLog @@ -1,3 +1,15 @@ +2003-03-31 Jonathan Larmour + + * src/quicc_smc1.c (cyg_hal_smcx_init_channel): + (cyg_hal_sccx_init_channel): + + * src/cpm.c: Include for memset(). + (_mpc8xx_reset_cpm): use CPM busy flag to check reset completion. + * src/quicc_smc1.c: Include for memset(). + (cyg_hal_smcx_init_channel): Don't reset CPM here - let variant + initialization do it. Only let through RX interrupts. + (cyg_hal_sccx_init_channel): Ditto. + 2003-03-23 Gary Thomas * src/quicc_smc1.c: Use new baud rate generator allocation functions. diff --git a/packages/hal/powerpc/quicc/current/src/cpm.c b/packages/hal/powerpc/quicc/current/src/cpm.c --- a/packages/hal/powerpc/quicc/current/src/cpm.c +++ b/packages/hal/powerpc/quicc/current/src/cpm.c @@ -58,6 +58,7 @@ #include #include #include +#include // memset // eCos headers decribing PowerQUICC: #include @@ -75,15 +76,15 @@ void _mpc8xx_reset_cpm(void) { EPPC *eppc = eppc_base(); - int i; static int init_done = 0; if (init_done) return; init_done++; eppc->cp_cr = QUICC_CPM_CR_RESET | QUICC_CPM_CR_BUSY; - memset(eppc->pram, 0, 0x400); - for (i = 0; i < 100000; i++); + memset(eppc->pram, 0, sizeof(eppc->pram)); + while (eppc->cp_cr & QUICC_CPM_CR_BUSY) + CYG_EMPTY_STATEMENT; *nextBd = QUICC_BD_BASE; } diff --git a/packages/hal/powerpc/quicc/current/src/quicc_smc1.c b/packages/hal/powerpc/quicc/current/src/quicc_smc1.c --- a/packages/hal/powerpc/quicc/current/src/quicc_smc1.c +++ b/packages/hal/powerpc/quicc/current/src/quicc_smc1.c @@ -71,6 +71,7 @@ #include // Calling interface definitions #include // Helper functions #include // CYG_ISR_HANDLED +#include // memset #define UART_BIT_RATE(n) (((int)(CYGHWR_HAL_POWERPC_BOARD_SPEED*1000000)/16)/n) #define UART_BAUD_RATE CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD @@ -144,8 +145,6 @@ cyg_hal_smcx_init_channel(struct port_in if (info->init) return; info->init = 1; - _mpc8xx_reset_cpm(); - switch (port) { #if CYGNUM_HAL_QUICC_SMC1 > 0 case QUICC_CPM_SMC1: @@ -239,7 +238,7 @@ cyg_hal_smcx_init_channel(struct port_in * (Section 16.15.7.14 and 16.15.7.15) */ regs->smc_smce = 0xff; - regs->smc_smcm = 5; + regs->smc_smcm = 1; // RX interrupts only, for ctrl-c /* * Set 8,n,1 characters, then also enable rx and tx. @@ -571,8 +570,6 @@ cyg_hal_sccx_init_channel(struct port_in if (info->init) return; info->init = 1; - _mpc8xx_reset_cpm(); - /* * Set up the Port pins for UART operation. */ @@ -703,8 +700,7 @@ cyg_hal_sccx_init_channel(struct port_in * (Section 16.15.7.14 and 16.15.7.15) */ regs->scc_scce = 0xffff; - regs->scc_sccm = 5; - regs->scc_sccm = 3; + regs->scc_sccm = 1; // RX interrupts only, for ctrl-c /* * Set 8,n,1 characters