GPIOs on HDMI pins - need tutorial

Soo. all this sounds great but doesn’t work for me. I’m using Ubuntu 12.04, maybe that’s an issue? Here’s what I did.
I started out with:

$ cat /sys/devices/bone_capemgr.9/slots
0: 54:PF—
1: 55:PF—
2: 56:PF—
3: 57:PF—
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI

Then I modified uEnv.txt:
$ mkdir /mnt/card; mount /dev/mmcblk0p1 /mnt/card
$ sed -i -e ‘/^optargs/ s/$/ capemgr.disable_partno=BB-BONELT-HDMI/’ /mnt/card/uEnv.txt
$ cat /mnt/card/uEnv.txt
mmcpart=2
optargs=fixrtc capemgr.disable_partno=BB-BONELT-HDMI
uenvcmd=i2c mw 0x24 1 0x3e; kd=0; if test $mmcdev -eq 1; then mmc dev 0; if mmc rescan; then kd=1; fi; mmc dev 1; fi; setenv mmcroot /dev/mmcblk${kd}p${mmcpart} ro
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/dtbs/${fdtfile}
loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${bootfile}

That all looked great so I rebooted and then checked things:

$ cat /proc/cmdline
console=ttyO0,115200n8 fixrtc capemgr.disable_partno=BB-BONELT-HDMI root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait

$ cat /sys/devices/bone_capemgr.9/slots
0: 54:PF—
1: 55:PF—
2: 56:PF—
3: 57:PF—
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
6: ff:P-O-L Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN

Now I’m baffled: the disable got accepted into the kernel command line yet I still have the HDMI device and now I even have an additional HDMIN device?
Here’s what’s in dmesg:

$ dmesg|egrep -i hdmi
[ 0.000000] Kernel command line: console=ttyO0,115200n8 fixrtc capemgr.disable_partno=BB-BONELT-HDMI root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
[ 1.173481] bone-capemgr bone_capemgr.9: Skipping disabled cape with part# BB-BONELT-HDMI
[ 1.369583] bone-capemgr bone_capemgr.9: slot #5: ‘Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI’
[ 1.394238] bone-capemgr bone_capemgr.9: slot #6: ‘Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN’
[ 1.404540] bone-capemgr bone_capemgr.9: Skipping loading of disabled cape with part# BB-BONELT-HDMI
[ 1.437616] bone-capemgr bone_capemgr.9: loader: before slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.446477] bone-capemgr bone_capemgr.9: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.482717] bone-capemgr bone_capemgr.9: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.575668] bone-capemgr bone_capemgr.9: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.590928] bone-capemgr bone_capemgr.9: loader: after slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.614083] bone-capemgr bone_capemgr.9: slot #6: Requesting firmware ‘cape-boneblack-hdmin-00A0.dtbo’ for board-name ‘Bone-Black-HDMIN’, version ‘00A0’
[ 1.639121] bone-capemgr bone_capemgr.9: slot #6: dtbo ‘cape-boneblack-hdmin-00A0.dtbo’ loaded; converting to live tree
[ 1.702269] bone-capemgr bone_capemgr.9: loader: done slot-6 BB-BONELT-HDMIN:00A0 (prio 2)

Help!

After some more browsing I did find the solution at http://www.logicsupply.com/blog/2013/07/18/disabling-the-beaglebone-black-hdmi-cape/, which is to also disable the HDMIN device:
$ sed -i -e ‘/^optargs/ s/$/ capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN/’ /mnt/card/uEnv.txt
And observe that the devices no longer have the L (for Loaded) flag:

$ cat /sys/devices/bone_capemgr.9/slots
0: 54:PF—
1: 55:PF—
2: 56:PF—
3: 57:PF—
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
Phew!