Enabling SPI

Using the Beagleboard Debian release 2014-04-23, I’m trying to enable SPI1 but I’m getting the following:`
root@beaglebone:/lib/firmware# dmesg |grep SPI
[ 0.000000] Kernel command line: console=tty0 console=ttyO0,115200n8 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-SPIDEV1-01 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc quiet init=/lib/systemd/systemd
[ 0.728748] bone-capemgr bone_capemgr.9: enabled_partno part_number ‘BB-SPIDEV1-01’, version ‘N/A’, prio ‘0’
[ 0.728793] bone-capemgr bone_capemgr.9: slot #7: ‘Override Board Name,00A0,Override Manuf,BB-SPIDEV1-01’
[ 0.733266] bone-capemgr bone_capemgr.9: loader: before slot-7 BB-SPIDEV1-01:00A0 (prio 0)
[ 0.733281] bone-capemgr bone_capemgr.9: loader: check slot-7 BB-SPIDEV1-01:00A0 (prio 0)
[ 0.733298] bone-capemgr bone_capemgr.9: loader: after slot-7 BB-SPIDEV1-01:00A0 (prio 0)
[ 0.733315] bone-capemgr bone_capemgr.9: slot #7: Requesting part number/version based 'BB-SPIDEV1-01-00A0.dtbo
[ 0.733332] bone-capemgr bone_capemgr.9: slot #7: Requesting firmware ‘BB-SPIDEV1-01-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 1.104587] bone-capemgr bone_capemgr.9: failed to load firmware ‘BB-SPIDEV1-01-00A0.dtbo’
[ 1.113325] bone-capemgr bone_capemgr.9: loader: failed to load slot-7 BB-SPIDEV1-01:00A0 (prio 0)
root@beaglebone:/lib/firmware#

`

I did a
`
root@beaglebone:/lib/firmware# echo BB-SPIDEV1 > /sys/devices/bone_capemgr.9/slots
root@beaglebone:/lib/firmware#

`

followed by editing uEnv.txt on the SD card to add:

optargs=quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-SPIDEV1

After rebooting I get the message above.

Whats my problem?
James.

Looks to me a copy/paste error, review the above.
"capemgr.enable_partno=BB-SPIDEV1-01" & "echo BB-SPIDEV1"

Please clarify.

Regards,

Thanks! Looks like a stupid mistake, I’ll check it out.

I followed the instructions here http://elinux.org/BeagleBone_Black_Enable_SPIDEV but SPI1 is still not initialising properly.

uEnv.txt

`

optargs=quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-SPI1-01

`

The result is:

`

root@beaglebone:~# dmesg | grep SPI
[ 0.000000] Kernel command line: console=tty0 console=ttyO0,115200n8 quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-SPI1-01 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc quiet init=/lib/systemd/systemd
[ 0.732452] bone-capemgr bone_capemgr.9: enabled_partno part_number ‘BB-SPI1-01’, version ‘N/A’, prio ‘0’
[ 0.732498] bone-capemgr bone_capemgr.9: slot #7: ‘Override Board Name,00A0,Override Manuf,BB-SPI1-01’
[ 0.736957] bone-capemgr bone_capemgr.9: loader: before slot-7 BB-SPI1-01:00A0 (prio 0)
[ 0.736974] bone-capemgr bone_capemgr.9: loader: check slot-7 BB-SPI1-01:00A0 (prio 0)
[ 0.736990] bone-capemgr bone_capemgr.9: loader: after slot-7 BB-SPI1-01:00A0 (prio 0)
[ 0.737006] bone-capemgr bone_capemgr.9: slot #7: Requesting part number/version based 'BB-SPI1-01-00A0.dtbo
[ 0.737024] bone-capemgr bone_capemgr.9: slot #7: Requesting firmware ‘BB-SPI1-01-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 1.110253] bone-capemgr bone_capemgr.9: failed to load firmware ‘BB-SPI1-01-00A0.dtbo’
[ 1.118721] bone-capemgr bone_capemgr.9: loader: failed to load slot-7 BB-SPI1-01:00A0 (prio 0)
root@beaglebone:~# cat /sys/devices/bone_capemgr.*/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

`

Then doing a

`
echo BB-SPI1-01 > /sys/devices/bone_capemgr.9/slots

`

the output is

`

root@beaglebone:~# dmesg | grep SPI
[ 0.000000] Kernel command line: console=tty0 console=ttyO0,115200n8 quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-SPI1-01 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc quiet init=/lib/systemd/systemd
[ 0.732452] bone-capemgr bone_capemgr.9: enabled_partno part_number ‘BB-SPI1-01’, version ‘N/A’, prio ‘0’
[ 0.732498] bone-capemgr bone_capemgr.9: slot #7: ‘Override Board Name,00A0,Override Manuf,BB-SPI1-01’
[ 0.736957] bone-capemgr bone_capemgr.9: loader: before slot-7 BB-SPI1-01:00A0 (prio 0)
[ 0.736974] bone-capemgr bone_capemgr.9: loader: check slot-7 BB-SPI1-01:00A0 (prio 0)
[ 0.736990] bone-capemgr bone_capemgr.9: loader: after slot-7 BB-SPI1-01:00A0 (prio 0)
[ 0.737006] bone-capemgr bone_capemgr.9: slot #7: Requesting part number/version based 'BB-SPI1-01-00A0.dtbo
[ 0.737024] bone-capemgr bone_capemgr.9: slot #7: Requesting firmware ‘BB-SPI1-01-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 1.110253] bone-capemgr bone_capemgr.9: failed to load firmware ‘BB-SPI1-01-00A0.dtbo’
[ 1.118721] bone-capemgr bone_capemgr.9: loader: failed to load slot-7 BB-SPI1-01:00A0 (prio 0)
[ 353.544405] bone-capemgr bone_capemgr.9: part_number ‘BB-SPI1-01’, version ‘N/A’
[ 353.544700] bone-capemgr bone_capemgr.9: slot #8: ‘Override Board Name,00A0,Override Manuf,BB-SPI1-01’
[ 353.544960] bone-capemgr bone_capemgr.9: slot #8: Requesting part number/version based 'BB-SPI1-01-00A0.dtbo
[ 353.545012] bone-capemgr bone_capemgr.9: slot #8: Requesting firmware ‘BB-SPI1-01-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 353.552302] bone-capemgr bone_capemgr.9: slot #8: dtbo ‘BB-SPI1-01-00A0.dtbo’ loaded; converting to live tree

`

I then changed uEnv.txt to:

`

##Disable HDMI
optargs=quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
#capemgr.enable_partno=BB-SPI1-01

`

After reboot I get:

`

root@beaglebone:~# dmesg | grep SPI
root@beaglebone:~#

`

When I enter:

`

root@beaglebone:~# cat /sys/devices/bone_capemgr.*/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
root@beaglebone:~#

`

And then type:

`
root@beaglebone:~# echo BB-SPI1-01 > /sys/devices/bone_capemgr.9/slots

`

I get:

`

root@beaglebone:~# cat /sys/devices/bone_capemgr.*/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
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-SPI1-01
root@beaglebone:~#

`

It looks like SPI1 is there!

Correct,

Due to userspace limitations, the initrd and the kernel config, all
"capes" must be built-in to use the
"capemgr.enable_partno=BB-SPIDEV1".

With built-in capes it works fine:
http://pastebin.com/pFfFuG7G

However, as your "custom" cape is not actually available at boot time
as /lib/firmware isn't mounted yet the kernel can't see your cape. So
if you don't mind waiting 2 minutes for bootup i can change that for
wheezy. (that's sarcasm, i'm not going to make people wait 2 minutes).

So add "BB-SPI1-01" as "CAPE=BB-SPI1-01" to /etc/default/capemgr and
it'll be shortly loaded on startup after the rootfs is mounted.

Regards,

btw: i also added this to elinux faq website i have printed everywhere
on the debian default image.

http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Loading_custom_capes

Regards,