Search code examples
beagleboneblackdevice-tree

Device Tree for SPI0 not loading during Beaglebone Black Boots up


I am presently using Debian GNU/Linux 7.9 (wheezy) [Kernel version 3.8.13-bone70] on the BBB. Everything works fine until I reboot the BBB. Before rebooting, I do the following to verify If the SPI0 is enabled.

root@beaglebone:/sys/devices/bone_capemgr.9# echo ADAFRUIT-SPI0 > slots
root@beaglebone:/sys/devices/bone_capemgr.9# cat 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
**8: ff:P-O-L Override Board Name,00A0,Override Manuf,ADAFRUIT-SPI0**

The 8th slot is loaded with SPI 0

root@beaglebone:~# ls -al /dev/spidev*
crw-rw---T 1 root spi 153, 0 Feb 14 05:53 /dev/spidev1.0

Its showing spidev1.0, so its fine

root@beaglebone:~#  cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups
group: spi0_pins_s0
pin 84 (44e10950),
pin 85 (44e10954),
pin 86 (44e10958),

Its showing the SPI pins.

root@beaglebone:~# sudo nano /boot/uEnv.txt 

I opened the uEnv.txt file and added this line, so that the SPI0 DT will load during system boot up

optargs=capemgr.enable_partno=ADAFRUIT-SPI0

Problem: Why isn't my SPI0 DT being loaded during system boot up?, after a reboot I did the first three steps mentioned above to check, but noticed that the DT fails to load after rebooting. why is this happening?


Solution

  • After a while of researching, I got the solution for this. Sadly, entering "optargs=capemgr.enable_partno=ADAFRUIT-SPI0" in the uEnv.txt does not load the device tress during system boot up.

    1. One solution I found was to include line "echo ADAFRUIT-SPI0 > /sys/devices/bone_capemgr.9/slots" in /etc/rc.local as mentioned here!.
    2. Another solution is also simple, just include the line "CAPE=ADAFRUIT-SP0" in /etc/default/capemgr file. Then reboot and all should work fine.