I believe there are significant bugs in the latest CSL. Both the SPI_init() and the UART_init() functions reset the Peripheral Group 4 register. The effectively prevents you from using both the SPI and UART simultaneously.
From UART_init()
CSL_FINST(uartObj->sysAddr->PRCR, SYS_PRCR_PG4_RST,RST);
And from SPI_init()
/* Value of 'Reset Counter' */
CSL_FINS(sysRegs->PSRCR, SYS_PSRCR_COUNT, 0x20);
CSL_FINS(sysRegs->PRCR, SYS_PRCR_PG4_RST, CSL_SYS_PRCR_PG4_RST_RST);
for(delay = 0; delay < 100; delay++);
FYI, DMA_init() correctly resets only the DMA bit in the PG4 register.
/* Set the reset clock cycle */
CSL_FINS(CSL_SYSCTRL_REGS->PSRCR, SYS_PSRCR_COUNT, CSL_DMA_RESET_CLOCK_CYCLE);
CSL_FINST(CSL_SYSCTRL_REGS->PRCR, SYS_PRCR_DMA_RST, RST);
One workaround I have found is to "re-init" either the SPI or UART after init-ing the other peripheral.
void Re_init_UART()
{
UART_setup(hUart,&uart_setup);
}
Several others have reported issues with using SPI and UART simultaneously.