MA35D1使用spi-config 设置speed无效

cwlin0 |浏览153次
收藏|2023/03/17 13:41

通过spi-config 设置speed无效,如下

# spi-config -d /dev/spidev0.1 -s 2000000

#

# spi-config -d /dev/spidev0.1 -q

/dev/spidev0.1: mode=0, lsb=0, bits=8, speed=1000000, spiready=0


满意回答

2023/03/17 13:53

可以查看MA35D1_Buildroot/output/build/linux-custom/drivers/spi/spidev.c 里面 spidev_release()这个函数,把下面函数的spidev->speed_hz = spidev->spi->max_speed_hz;语句移除即可。

 

static int spidev_release(struct inode *inode, struct file *filp)

{

...

      if (!spidev->users) {

 

            kfree(spidev->tx_buffer);

            spidev->tx_buffer = NULL;

 

            kfree(spidev->rx_buffer);

            spidev->rx_buffer = NULL;

 

            if (dofree)

                  kfree(spidev);

            else

                  spidev->speed_hz = spidev->spi->max_speed_hz;

      }

...

}

 

 意思就是spi-config操作过程会执行spedev open ,操作 close speed 会恢复默认值。验证方式可以参考林工的做法加 “-w &”

 

表示在后台一直“spedev open”,所以speed会改动,后台不运行,speed就恢复默认值。

至于内核为什么这么做,猜测是考虑spi设备有很多,不同设备有不同速度要求,一个设备操作完,那么close后,恢复默认speed

当然修改speed,可以直接修改设备树这个参数spi-max-frequency = <1000000>;


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...