I have a iMX512 processor booting with u-boot. I get to the prompt and it seems okay. From here I added a command to u-boot so that I can toggle UART1s Ring Indicator Pin. However I am unable to see the pin change state on a scope.
In my command function I:
- Disable Uart 1 (via UCR1 bit 0)
- Set IOMUXC_SW_MUX_CTL_PAD_KEY_COL4 to ALT1 ( 0x01 )
- Set IOMUXC_SW_PAD_CTL_PAD_KEY_COL4 to open drain (0x01ED) (1k pullup on output)
- Re-enable Uart1
- read RI state (via UCR3, bit 9)
- write a new RI state
I also print out the values of the registers before I modify them (except while the UART is disabled).
The UCR3 register indicates that the write was successful, as the new value is correct but the pin doesn't change state.
I know the peripheral is engaged and working and the clocking to it is correct because that's the terminal I use for u-boot.
Am I missing something? Do I need to get the IO mux controller to latch in the changes somehow?