hikey960 SPI调试进阶之进阶篇(0)  

分享到:

DragonCat
Level 2Admin
注册时间:7年 前
帖子数: 42
2017年6月21日 上午10:32  

SPI 设备树配置

我们使用hikey960 开发板上低速40pin SPI ,如图所示。

我们看到这组SPICS 对应gpio 218,对应dts hi3660.dtsi)的spi4,如下:

 

 

spi4: spi@fdf06000 {

 

compatible = "arm,pl022", "arm,primecell";

 

reg = <0x0 0xfdf06000 0x0 0x1000>;

 

#address-cells = <1>;

 

#size-cells = <0>;

 

interrupts = <0 313 4>;

 

clocks = <&crg_ctrl HI3660_CLK_GATE_SPI4>;

 

clock-names = "apb_pclk";

 

pinctrl-names = "default";

 

pinctrl-0 = <&spi4_pmx_func &spi4_cfg_func>;

 

num-cs = <1>;

 

cs-gpios = <&gpio27 2 0>; /*cs : 218*/

 

status = "disabled";

 

};

 

 

 

我们在SPI dts下面添加设备,先将 spi4 status 设置为OK,这样spi4就可以编译进kernel中;然后将外挂设备spidev的设备描述添加到spi4中,如下图:

 

 

 

spi4: spi@fdf06000 {

 

compatible = "arm,pl022", "arm,primecell";

 

reg = <0x0 0xfdf06000 0x0 0x1000>;

 

#address-cells = <1>;

 

#size-cells = <0>;

 

interrupts = <0 313 4>;

 

clocks = <&crg_ctrl HI3660_CLK_GATE_SPI4>;

 

clock-names = "apb_pclk";

 

pinctrl-names = "default";

 

pinctrl-0 = <&spi4_pmx_func &spi4_cfg_func>;

 

num-cs = <1>;

 

cs-gpios = <&gpio27 2 0>; /*cs : 218*/

 

//status = "disabled";

 

status = "ok";

 

 

 

spidev@0 {

 

compatible = "dcb,spidev";

 

reg = <0 0>;

 

spi-max-frequency = <9600000>;

 

......

 

};

 

};

 

 

 

备注:spidev@0 中:

 

  1. spidev代表挂在spi4上的设备名称;

  2. spidev@0 代表 spi4上片选CS0上的挂载了名为spidev设备。

 

num-cs = <1>;代表了spi4 控制器片选信号数量为1;所以向这个spi上挂载设备dts配置,应该如下:

 

spi4: spi@fdf06000 {

 

.......

 

num-cs = <1>;

 

.......

 

status = "ok";

 

 

 

spidev@0 {

 

......

 

reg = <0 0>;

 

......

 

};

 

};

 

 

 

如果 num-cs = <2> 代表了spi4 控制器片选信号数量为2,所以向这个spi上挂载设备dts配置如下:

 

spi4: spi@fdf06000 {

 

.......

 

num-cs = <2>;

 

.......

 

status = "ok";

 

 

 

spidev@0 { /*CS 0 上面挂在的设备*/

 

......

 

reg = <0 0>;

 

......

 

};

 

 

 

Spidev_test@1 { /*CS 1 上面挂在的设备*/

 

......

 

reg = <1 0>;

 

......

 

};

 

 

 

};

 

 

 

 

 

 


回复引用
  
Working

登陆 或者 注册