debian - My custom cape's devicetree fails to load at boot, but can be loaded manually -
if load own device-tree overlay shell loads fine, if try load @ boot, won't so. missing?
it debian beaglebone black set using bone-debian-7.4-2014-04-23-2gb.img.xz
linux beaglebone 3.8.13-bone47 #1 smp fri apr 11 01:36:09 utc 2014 armv7l gnu/linux
here change made /boot/uboot/uenv.txt :
optargs=capemgr.enable_partno=bb-foo-gpio
this output of dmesg | grep bone-capemgr :
baseboard: 'a335bnlt,00a5,4049bbbk7400'
compatible-baseboard=ti,beaglebone-black
slot #0: no cape found
slot #1: no cape found
slot #2: no cape found
slot #3: no cape found
slot #4: specific override
bone: using override eeprom data @ slot 4
slot #4: 'bone-lt-emmc-2g,00a0,texas instrument,bb-bone-emmc-2g'
slot #5: specific override
bone: using override eeprom data @ slot 5
slot #5: 'bone-black-hdmi,00a0,texas instrument,bb-bonelt-hdmi'
slot #6: specific override
bone: using override eeprom data @ slot 6
slot #6: 'bone-black-hdmin,00a0,texas instrument,bb-bonelt-hdmin'
enabled_partno part_number 'bb-foo-gpio', version 'n/a', prio '0'
slot #7: generic override
bone: using override eeprom data @ slot 7
slot #7: 'override board name,00a0,override manuf,bb-foo-gpio'
loader: before slot-4 bb-bone-emmc-2g:00a0 (prio 1)
loader: check slot-4 bb-bone-emmc-2g:00a0 (prio 1)
loader: before slot-5 bb-bonelt-hdmi:00a0 (prio 1)
loader: check slot-5 bb-bonelt-hdmi:00a0 (prio 1)
loader: before slot-6 bb-bonelt-hdmin:00a0 (prio 2)
loader: check slot-6 bb-bonelt-hdmin:00a0 (prio 2)
initialized ok.
loader: check slot-4 bb-bone-emmc-2g:00a0 (prio 1)
loader: check slot-5 bb-bonelt-hdmi:00a0 (prio 1)
loader: check slot-6 bb-bonelt-hdmin:00a0 (prio 2)
loader: before slot-7 bb-foo-gpio:00a0 (prio 0)
loader: check slot-7 bb-foo-gpio:00a0 (prio 0)
loader: after slot-7 bb-foo-gpio:00a0 (prio 0)
slot #7: requesting part number/version based 'bb-foo-gpio-00a0.dtbo
slot #7: requesting firmware 'bb-foo-gpio-00a0.dtbo' board-name 'override board name', version '00a0'
failed load firmware 'bb-foo-gpio-00a0.dtbo'
loader: failed load slot-7 bb-foo-gpio:00a0 (prio 0)
loader: check slot-6 bb-bonelt-hdmin:00a0 (prio 2)
loader: check slot-5 bb-bonelt-hdmi:00a0 (prio 1)
loader: after slot-5 bb-bonelt-hdmi:00a0 (prio 1)
slot #5: requesting firmware 'cape-boneblack-hdmi-00a0.dtbo' board-name 'bone-black-hdmi', version '00a0'
slot #5: dtbo 'cape-boneblack-hdmi-00a0.dtbo' loaded; converting live tree
slot #5: #4 overlays
loader: check slot-4 bb-bone-emmc-2g:00a0 (prio 1)
loader: after slot-4 bb-bone-emmc-2g:00a0 (prio 1)
slot #4: requesting firmware 'cape-bone-2g-emmc1.dtbo' board-name 'bone-lt-emmc-2g', version '00a0'
slot #4: dtbo 'cape-bone-2g-emmc1.dtbo' loaded; converting live tree
slot #4: #2 overlays
slot #4: applied #2 overlays.
loader: done slot-4 bb-bone-emmc-2g:00a0 (prio 1)
loader: check slot-6 bb-bonelt-hdmin:00a0 (prio 2)
slot #5: applied #4 overlays.
loader: done slot-5 bb-bonelt-hdmi:00a0 (prio 1)
loader: check slot-6 bb-bonelt-hdmin:00a0 (prio 2)
loader: after slot-6 bb-bonelt-hdmin:00a0 (prio 2)
slot #6: requesting firmware 'cape-boneblack-hdmin-00a0.dtbo' board-name 'bone-black-hdmin', version '00a0'
slot #6: dtbo 'cape-boneblack-hdmin-00a0.dtbo' loaded; converting live tree
slot #6: bb-bonelt-hdmin conflict p8.45 (#5:bb-bonelt-hdmi)
slot #6: failed verification
loader: failed load slot-6 bb-bonelt-hdmin:00a0 (prio 2)
here source file device-tree overlay:
/dts-v1/; /plugin/; / { compatible = "ti,beaglebone", "ti,beaglebone-black"; /* identification */ part-number = "bb-foo-gpio"; version = "00a0"; /* resources required */ exclusive-use = "p9.27", /* xxx */ "p9.23", /* xxx */ "gpio3_19", /* xxx */ "gpio1_17"; /* xxx */ fragment@0 { target = <&am33xx_pinmux>; __overlay__ { foo_gpio_pins: pinmux_gpio_helper_pins { pinctrl-single,pins = < 0x1a4 0x0f /* p9.27 gpio3_19: mode7 - output */ 0x044 0x2f /* p9.23 gpio1_17: mode7 - input */ >; }; }; }; fragment@1 { target = <&ocp>; /* on-chip peripherals */ __overlay__ { foo_gpio_helper { compatible = "gpio-of-helper"; pinctrl-names = "default"; pinctrl-0 = <&foo_gpio_pins>; status = "okay"; foo_test_output { gpio-name = "foo_test_output"; gpio = <&gpio4 19 0x00>; /* gpio4 => gpio-3 */ output; init-high; }; foo_test_input { gpio-name = "foo_test_input"; gpio = <&gpio2 17 0x00>; /* gpio2 => gpio-1 */ input; count-rising-edge; count-falling-edge; }; }; }; }; };
~
(i compiled so: dtc -o dtb -o bb-foo-gpio-00a0.dtbo -b 0 -@ bb-foo-gpio-00a0.dts}
now loading manually using echo bb-foo-gpio > $slots" loads fine..
dmesg -c gives me:
bone-capemgr bone_capemgr.9: part_number 'bb-foo-gpio', version 'n/a'
bone-capemgr bone_capemgr.9: slot #8: generic override
bone-capemgr bone_capemgr.9: bone: using override eeprom data @ slot 8
bone-capemgr bone_capemgr.9: slot #8: 'override board name,00a0,override manuf,bb-foo-gpio'
bone-capemgr bone_capemgr.9: slot #8: requesting part number/version based 'bb-foo-gpio-00a0.dtbo
bone-capemgr bone_capemgr.9: slot #8: requesting firmware 'bb-foo-gpio-00a0.dtbo' board-name 'override board name', version '00a0'
bone-capemgr bone_capemgr.9: slot #8: dtbo 'bb-foo-gpio-00a0.dtbo' loaded; converting live tree
bone-capemgr bone_capemgr.9: slot #8: #2 overlays
of_get_named_gpio_flags exited status 17
gpio-of-helper foo_gpio_helper.15: allocated gpio id=0
of_get_named_gpio_flags exited status 115
gpio-of-helper foo_gpio_helper.15: allocated gpio id=1
gpio-of-helper foo_gpio_helper.15: ready
bone-capemgr bone_capemgr.9: slot #8: applied #2 overlays.
and cat /sys/devices/bone_capemgr.9/slots gives me desire:
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
8: ff:p-o-l override board name,00a0,override manuf,bb-foo-gpio
so, missing? why won't load @ boot time, shell? problem seems related firmware not being loaded... don't understand.
this issue has solution described in link: http://elinux.org/beagleboard:beagleboneblack_debian#loading_custom_capes
i hope helps, george
Comments
Post a Comment