MA35D1使用spi-config 设置LBS无效

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

通过spi-config工具不能把SPI设置为LSB first,但是TRM手册是支持的: Supports MSB first or LSB first transfer sequence

操作如下

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

[ 900.241414] spidev spi0.1: setup: unsupported mode bits 8

SPI_IOC_WR_LSB_FIRST: Invalid argument


满意回答

2023/03/17 13:53

关于此问题,内核spi驱动和spi-tool源码,需修改以下两个位置:

位置1

MA35D1_Buildroot/output/build/linux-custom/drivers/spi/spidev.c

case SPI_IOC_RD_LSB_FIRST:

        retval = put_user((spi->mode & SPI_LSB_FIRST) ? 1 : 0,

                    (__u8 __user *)arg);

        break;

 

上面的"1" 改为 SPI_LSB_FIRST,如下:

case SPI_IOC_RD_LSB_FIRST:

        retval = put_user((spi->mode & SPI_LSB_FIRST) ? SPI_LSB_FIRST : 0,

                    (__u8 __user *)arg);

        break;

 

位置2

MA35D1_Buildroot/output/build/linux-custom/drivers/spi/spi.c

spi_setup()函数里面

bad_bits = spi->mode & ~(spi->controller->mode_bits | SPI_CS_WORD);

改为以下,添加SPI_LSB_FIRST

bad_bits = spi->mode & ~(spi->controller->mode_bits | SPI_CS_WORD | SPI_LSB_FIRST);


nuvoton2022

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