Can't change pin modes in kernel 3.12

Following on from this:

Where the HDMI is active despite being apparently disabled, I think I know why: you can’t change the mode of any of the pins in kernel 3.12

Here’s my test. First, I check the state of the pinmux for each pin:

cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins > before

Then I enable every available GPIO pin, which should change the mode for many of them:

seq 1 140 | xargs -n 1 sh -c ‘echo $@ > /sys/class/gpio/export’ echo

I now have a huge number of GPIO pins apparently enabled and in input mode:

cat /sys/class/gpio/gpio20/direction


But the modes in /sys/kernel/debug/pinctrl/44e10800.pinmux/pins are unchanged, and the signals on the pins are unchanged too: for example, P9_41 still has a 32768hz square wave generated by clkout2, which is the initial mode for that pin. If I try to read from gpio 20 (which is apparently active on teh same pin) I get 0, and whatever I write to it has no effect on the pin value.

I’m almost relieved, as it explains some of my weird test results…