Hello all,
I decided to try to implement the BONE-SPI1_0 overlay. I have the overlay loading but when I run the spidev_test program I get the following output:
debian@BeagleBone:~/src/spi_test$ sudo ./spidev_test --device /dev/spidev1.0 -v
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................
Any ideas on what could be wrong?
Here are the details of what I have done so far:
git clone -b v5.10.x-ti-arm64 https://github.com/beagleboard/BeagleBoard-DeviceTrees/
Edited k3-j721e-main.dtsi
adding main_spi7 just below main_spi6:
main_spi6: spi@2160000 {
compatible = "ti,omap4-mcspi";
reg = <0x0 0x2160000 0x0 0x400>;
interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clock-names = "fck";
clocks = <&k3_clks 272 1>;
power-domains = <&k3_pds 272 TI_SCI_PD_EXCLUSIVE>;
};
main_spi7: spi@2170000 {
compatible = "ti,omap4-mcspi";
reg = <0x0 0x2170000 0x0 0x400>;
interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clock-names = "fck";
clocks = <&k3_clks 273 1>;
power-domains = <&k3_pds 273 TI_SCI_PD_EXCLUSIVE>;
};
Edited k3-j721e-beagleboneai64-bone-buses.dtsi
adding bone_spi_1 just below bone_spi_0:
bone_spi_0: &main_spi6 {
};
bone_spi_1: &main_spi7 {
};
Created BONE-SPI1_0.dts:
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2023 BeagleBoard.org - https://beagleboard.org/
*
* https://elinux.org/Beagleboard:BeagleBone_cape_interface_spec#SPI
*/
/dts-v1/;
/plugin/;
/*
* Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
*/
&{/chosen} {
overlays {
BONE-SPI1_0.kernel = __TIMESTAMP__;
};
};
&bone_spi_1 {
/* TODO test with: sudo ./spidev_test -v --device /dev/spidev1.0 */
pinctrl-names = "default";
&P9_28_spi_pin /* spi7_cs0 */
&P9_31_spi_pin /* spi7_clk */
&P9_30_spi_pin /* spi7_d0 */
&P9_29_spi_pin /* spi7_d1 */
>;
ti,spi-num-cs = <1>;
ti,pindir-d0-out-d1-in;
status = "okay";
spidev@1 {
symlink = "bone/spi/1.0";
compatible = "rohm,dh2228fv";
reg = <0>; /* CE0 */
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <125000000>;
};
};
make all
sudo make install
Added new BONE-SPI1_0.dtbo to extlinux.conf
label Linux microSD
kernel /Image
append console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk1p2 ro rootfstype=ext4 rootwait net.ifnames=0 quiet
fdtdir /
fdtoverlays /overlays/BONE-SPI0_0.dtbo /overlays/BONE-SPI0_1.dtbo /overlays/BONE-SPI1_0.dtbo
initrd /initrd.img
rebooted and confirmed spi overlays loaded:
sudo beagle-version | grep UBOOT
UBOOT: Booted Device-Tree:[k3-j721e-beagleboneai64.dts]
UBOOT: Loaded Overlay:[BONE-SPI0_0.kernel]
UBOOT: Loaded Overlay:[BONE-SPI0_1.kernel]
UBOOT: Loaded Overlay:[BONE-SPI1_0.kernel]
loaded kernel driver:
sudo insmod /lib/modules/5.10.153-ti-arm64-r87/kernel/drivers/spi/spidev.ko.xz
tested:
debian@BeagleBone:~/src/spi_test$ ls /dev/bone/
pwm spi uart
debian@BeagleBone:~/src/spi_test$ tree /dev/bone/
/dev/bone/
├── pwm
├── spi
│ ├── 0.0 -> ../../spidev0.0
│ ├── 0.1 -> ../../spidev0.1
│ └── 1.0 -> ../../spidev1.0
└── uart
└── 0 -> ../../ttyS2
3 directories, 4 files
debian@BeagleBone:~/src/spi_test$ sudo ./spidev_test --device /dev/spidev0.0 -v
[sudo] password for debian:
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
debian@BeagleBone:~/src/spi_test$ sudo ./spidev_test --device /dev/spidev0.1 -v
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
debian@BeagleBone:~/src/spi_test$ sudo ./spidev_test --device /dev/spidev1.0 -v
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................
NOTE1: If i run the test on BONE-SPI0_0 with the loopback unplugged I see:
debian@BeagleBone:~/src/spi_test$ sudo ./spidev_test --device /dev/spidev0.0 -v
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@....�..................�.
RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................................
NOTE2: Not sure about the data in structure main_spi7
in the k3-j721e-main.dtsi
. I used an educated guess on that.