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?