Hello everyone
I recently took on a project to create a Linux image with basic hardware support for the NanoPi Neo SOM. This is my first experience working with embedded Linux, as my background has primarily been in developing hardware for microcontrollers.
For this task, I am utilizing Buildroot. While the output image works well, I have encountered an issue: I cannot find SPI support in the
/dev/ directory, which I believe is crucial for my application. However, I do see some SPI-related files located in other parts of the system, such as
/sys/bus/,
/sys/class/, and
/lib/modules/6.10.9/kernel/drivers/.
While calling
make linux-menuconfig command and searching for SPI configuration it seems enabled:
Symbol: SPI_SPIDEV [=y]
│ Type : tristate
│ Defined at drivers/spi/Kconfig:1222
│ Prompt: User mode SPI device driver support
│ Depends on: SPI [=y] && SPI_MASTER [=y]
│ Location:
│ -> Device Drivers
│ -> SPI support (SPI [=y])
│ (1) -> User mode SPI device driver support (SPI_SPIDEV [=y])
This is what I found in
./buildroot/output/target/boot/sun8i-h3-nanopi-neo.dtb:
Quote:
pinctrl@1c20800 {
spi0-pins {
pins = "PC0\0PC1\0PC2\0PC3";
function = "spi0";
phandle = <0x14>;
};
spi1-pins {
pins = "PA15\0PA16\0PA14\0PA13";
function = "spi1";
phandle = <0x15>;
};
};
soc {
spi@1c68000 {
compatible = "allwinner,sun8i-h3-spi";
reg = <0x1c68000 0x1000>;
interrupts = <0x00 0x41 0x04>;
clocks = <0x03 0x1e 0x03 0x52>;
clock-names = "ahb\0mod";
dmas = <0x13 0x17 0x13 0x17>;
dma-names = "rx\0tx";
pinctrl-names = "default";
pinctrl-0 = <0x14>;
resets = <0x03 0x0f>;
status = "disabled";
#address-cells = <0x01>;
#size-cells = <0x00>;
phandle = <0x4e>;
};
spi@1c69000 {
compatible = "allwinner,sun8i-h3-spi";
reg = <0x1c69000 0x1000>;
interrupts = <0x00 0x42 0x04>;
clocks = <0x03 0x1f 0x03 0x53>;
clock-names = "ahb\0mod";
dmas = <0x13 0x18 0x13 0x18>;
dma-names = "rx\0tx";
pinctrl-names = "default";
pinctrl-0 = <0x15>;
resets = <0x03 0x10>;
status = "disabled";
#address-cells = <0x01>;
#size-cells = <0x00>;
phandle = <0x4f>;
};
};
__symbols__ {
spi0_pins = "/soc/pinctrl@1c20800/spi0-pins";
spi1_pins = "/soc/pinctrl@1c20800/spi1-pins";
spi0 = "/soc/spi@1c68000";
spi1 = "/soc/spi@1c69000";
};
|
I changed status from
"disabled" to
"okay" but it did not help.
Does anyone have insights into why this might be happening or suggestions for resolving this issue?
Thank you!