在RK3399上打开spidev节点,只需要修改一个文件=>kernel/arch/arm64/boot/dts/rockchip/rk3399-xxxx-xxxx.dtsi
&spi1 { - status = "disabled"; - pinctrl-names = "default", "sleep"; - pinctrl-1 = <&spi1_gpio>; + status = "okay"; + //pinctrl-names = "default", "sleep"; + //pinctrl-1 = <&spi1_gpio>; spidev0: spidev@0 { compatible = "rockchip,spidev"; reg = <0>; - spi-max-frequency = <10000000>; + spi-max-frequency = <48000000>; status = "okay"; }; }; @@ -423,9 +423,6 @@ status = "okay"; }; -&uart4 { - status = "okay"; -};
当时主要是不知道compatible的意义,就去修改它了。
参考https://blog.csdn.net/pwl999/article/details/79631434 1.1.1、compatible “compatible”属性通常用来device和driver的适配,推荐的格式为”manufacturer,model”。
1. Spi_rockchip.c为硬件驱动,它在rk3399.dtsi中有体现
spi1: spi@ff1d0000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff1d0000 0x0 0x1000>; clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>; clock-names = "spiclk", "apb_pclk"; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH 0>; pinctrl-names = "default"; pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; };
2. Spidev.c不是硬件驱动,而是为用户态提供SPI操作接口软驱动,它负责响应对/dev/spidev节点的操作。
1. Spi_rockchip.c为硬件驱动
2. Spidev.c不是硬件驱动,而是为用户态提供操作接口软驱动,它负责响应对/dev/spidev节点的操作。