We have a working driver for the UART mode of the QUICC engine on an LS1021 processor. However, when we put it into BISYNC mode, we can't get transmit working. Whenever we enable the transmitter, the parameter RAM's TBASE field (offset 2) gets overwritten with zero and no output happens on the pins.
The sequence of operations is:
1. We issue an INIT TX AND RX command through the CECR register, which works
2. We set up the parameter RAM and BDs
3. At this point, RBASE is 0x0500 and TBASE is 0x0400 (the correct values for our driver). We initialise PRCRC to 0xffff as well.
4. We write 0x38 to GUMR_L. This enables the receiver and transmitter in BISYNC mode.
5. After a short pause, TBASE has been changed to 0x0000 and PRCRC has been changed to 2. The TBASE value is invalid, and the idle pattern is not transmitted on the TX pin. If we submit data in a tx BD in the correct place, no transmission occurs and the R bit of the BD does not get unset by the QUICC engine.
We've tried every obvious thing we can think of, but we're stuck. The driver works fine in UART mode (i.e. writing 0x34 to GUMR_L instead), but for some reason BISYNC mode refuses to ever transmit. The behaviour also happens if we only enable the transmitter and leave the receiver disabled.
Can anyone help please?
Please refer to the following feedback from the AE team.
BISYNC mode is not supported in LSDK.
So we don't provide such support. Customer should figure it out on their own.