On our custom IMX6 Dual board, I seem to be unable to control GPIO4 (on pad DI0_PIN2, pin N25). To rule out any strange interactions with Linux I'm stopping the boot process in the bootloader (barebox) and using JTAG to directly configure the IOMUX and GPIO registers. So far, I've been unable to get the pin to change from outputting high to low. There are no external pull-ups on this line, it is directly connected to the REn input of an RS485 transceiver (I don't this it contains any internal pull-ups).
This is what I believe should be the correct register settings (confirmed working on GPIO4 which goes to the transceiver's DE input):
- SW_MUX_CTL_PAD_DI0_PIN2 (0x20E0164) = 0x5 (MUX_MODE = ALT5)
- SW_PAD_CTL_PAD_DI0_PIN2 (0x20E0478) = 0x1B0B0 (HYS, PUS=100K pull-up, PUE, PKE, DSE=40ohm, SPEED=100mhz, SRE=slow)
- GDIR (0x20A8004) = 0x40000 (GDIR18 = Output)
- DR (0x20A8000)= 0xE3FA7F00 (DR18 = Low)
With the above, the pin stays at VCC despite the GDIR and DR registers. Nor does changing PUS to 100K pull-down have any effect.
Where else can I look/investigate to try and figure out what's missing?