Device Tree Overlay does not work

Hi!

I just made my first DTO, but it does not work!

Here is the code of the .dtso file:

`
/dts-v1/;
/plugin/;

/ {
compatible = “ti,beaglebone”, “ti,beaglebone-black”;

/* identification */
part-number = “FMA-PWM”;
version = “00A0”;

exclusive-use =
“pru0”,
/* the pin header uses */
“P8.09”,
“P8.10”,
“P8.11”,
“P8.12”,
“P8.13”,
“P8.14”,
“P8.15”,
“P8.16”,
“P8.17”,
“P8.18”,
“P8.19”,
“P8.26”,
“P8.27”,
“P8.28”,
“P8.29”,
“P8.30”,
“P8.31”,
“P8.32”,
“P8.33”,
“P8.34”,
“P8.35”,
“P8.36”,
“P8.37”,
“P8.38”,
“P8.39”,
“P8.40”,
“P8.41”,
“P8.42”,
“P8.43”,
“P8.44”,
“P8.45”,
“P8.46”;

fragment@0 {
target = <&am33xx_pinmux>;
overlay {
pinctrl_pwm: pinctrl_pwm_0_pins {
pinctrl-single,pins = <
0x09c 0x07
0x098 0x07
0x034 0x07
0x030 0x07
0x024 0x07
0x028 0x07
0x03c 0x07
0x038 0x07
0x02c 0x07
0x08c 0x07
0x020 0x07
0x07c 0x07
0x0e0 0x07
0x0e8 0x07
0x0e4 0x07
0x0ec 0x07
0x0d8 0x07
0x0dc 0x07
0x0d4 0x07
0x0cc 0x07
0x0d0 0x07
0x0c8 0x07
0x0c0 0x07
0x0c4 0x07
0x0b8 0x07
0x0bc 0x07
0x0b0 0x07
0x0b4 0x07
0x0a8 0x07
0x0ac 0x07
0x0a0 0x07
0x0a4 0x07

;
};
};
};

fragment@1 {
target = <&ocp>;
overlay {
pwm_helper: helper {
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_pwm>;
};
};
};
};

`

I compiled it with:

dtc -O dtb -o pinctrl-pwm-00A0.dtbo -b 0 -@ pinctrl-pwm.dtso

I then copied it to /lib/firmware, and loaded it using:

echo pinctrl-pwm >$SLOTS

Everything looks good in the kernel:

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
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-UART1
8: ff:P-O-L Override Board Name,00A0,Override Manuf,FMA-PWM

But my pins are not in correct states. For example, P8.09 (pin 39), as all others, is still an input:

$ cat $PINS | grep 39
pin 39 (44e1089c) 00000037 pinctrl-single

What did I miss?

I forgot to post the dmesg output:

`
[ 3870.700960] bone-capemgr bone_capemgr.9: part_number ‘FMA_PWM’, version ‘N/A’
[ 3870.701038] bone-capemgr bone_capemgr.9: slot #8: generic override
[ 3870.701054] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 8
[ 3870.701070] bone-capemgr bone_capemgr.9: slot #8: ‘Override Board Name,00A0,Override Manuf,FMA_PWM’
[ 3870.701165] bone-capemgr bone_capemgr.9: slot #8: Requesting part number/version based 'pinctrl-pwm-00A0.dtbo
[ 3870.701181] bone-capemgr bone_capemgr.9: slot #8: Requesting firmware ‘pinctrl-pwm-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 3870.701215] bone-capemgr bone_capemgr.9: slot #8: dtbo ‘pinctrl-pwm-00A0.dtbo’ loaded; converting to live tree
[ 3870.701805] bone-capemgr bone_capemgr.9: slot #8: #2 overlays
[ 3870.703656] bone-capemgr bone_capemgr.9: slot #8: Applied #2 overlays.

`

Ok, I found the solution!

In fact, things are changing very fast in the overlay/capemgr word, and
the above method does not work anymore with latest debian release; FYI,
I'm using 2015-03-01 image:

http://debian.beagleboard.org/images/bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz

So, I followed the instructions given there:

http://hipstercircuits.com/beaglebone-black-gpio-mux-for-pru-with-device-tree-overlay

and all works fine!

I can now test my PWM code :o)