mt6797上spi1问题
时间:10-02
整理:3721RD
点击:
MT6797上调试指纹使用SPI1
fifo模式通讯挣常,DMA模式提示
"Warning!Tx_DMA address range error in 4G mode,dma:0
按照FAQ17880:
测试可参考FAQ17506.
无法通讯。请开启/kernel-3.18/drivers/spi/mediatek/mt6797/spi.c 下的debug feature(#define SPI_DEBUG,#define SPI_VERBOSE),并抓取LOG。
问题原因可能如下:
1.未开启针对4gb ram测试的feature。
关键LOG类似: <6>[ 146.135788] (0)[2742:sh][name:spi_dev&][SPI-UT]: [spi_setup_xfer]:[115]Wanning: If using SPI1, you should define <USE_SPI1_4GB_TEST = 1>
solution:开启/kernel-3.18/drivers/spi/mediatek/mt6797/spi-dev.c 文件中的下面的feature
#define USE_SPI1_4GB_TEST (0)
2.未给spi1传输分配memory空间(问题常发生在dma方式下)
关键LOG类似:<3>[ 126.993964] -(0)[2527:sh]mt-spi 11012000.spi: Warning!Tx_DMA address range error in 4G mode,dma:0
从log中可看到dma的地址为0,所以dma mode下无法发送数据。
solution:/kernel-3.18/arch/ARM64/boot/dts/mt6797.dtsi 中加入spi使用分配的空间,
spi-reserve-memory {
compatible = "mediatek,spi-reserve-memory";
no-map;
size = <0 0x8000>; /* SPI USER MEMORY SIZE*/ ----大小需要与spi-dev.c的reserve_memory_spi_fn一致
alignment = <0 0x10000>;
alloc-ranges = <0 0x40000000 0 0x80000000>;
};
3.接收没有数据。
关键LOG:
<3>[ 271.269428] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[242]tx xfer 0 is:1
<3>[ 271.269439] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[243]rx xfer 0 is:0
<3>[ 271.269452] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[242]tx xfer 1 is:2
<3>[ 271.269463] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[243]rx xfer 1 is:0
从LOG看发送有数据,但是接收没有,发送有说明平台transfer已经成功,接收没有的原因应该是SPI的MOSI和MISOpin未短接,造成MISO上没有数据信号。
solution:硬件上短接MISO和MOSI。
测试没有问题,但是使用指纹通讯读取数据时spi通讯还是不行,只是没有在报错Warning!Tx_DMA address range error in 4G mode,dma:0
有谁遇到过吗
fifo模式通讯挣常,DMA模式提示
"Warning!Tx_DMA address range error in 4G mode,dma:0
按照FAQ17880:
测试可参考FAQ17506.
无法通讯。请开启/kernel-3.18/drivers/spi/mediatek/mt6797/spi.c 下的debug feature(#define SPI_DEBUG,#define SPI_VERBOSE),并抓取LOG。
问题原因可能如下:
1.未开启针对4gb ram测试的feature。
关键LOG类似: <6>[ 146.135788] (0)[2742:sh][name:spi_dev&][SPI-UT]: [spi_setup_xfer]:[115]Wanning: If using SPI1, you should define <USE_SPI1_4GB_TEST = 1>
solution:开启/kernel-3.18/drivers/spi/mediatek/mt6797/spi-dev.c 文件中的下面的feature
#define USE_SPI1_4GB_TEST (0)
2.未给spi1传输分配memory空间(问题常发生在dma方式下)
关键LOG类似:<3>[ 126.993964] -(0)[2527:sh]mt-spi 11012000.spi: Warning!Tx_DMA address range error in 4G mode,dma:0
从log中可看到dma的地址为0,所以dma mode下无法发送数据。
solution:/kernel-3.18/arch/ARM64/boot/dts/mt6797.dtsi 中加入spi使用分配的空间,
spi-reserve-memory {
compatible = "mediatek,spi-reserve-memory";
no-map;
size = <0 0x8000>; /* SPI USER MEMORY SIZE*/ ----大小需要与spi-dev.c的reserve_memory_spi_fn一致
alignment = <0 0x10000>;
alloc-ranges = <0 0x40000000 0 0x80000000>;
};
3.接收没有数据。
关键LOG:
<3>[ 271.269428] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[242]tx xfer 0 is:1
<3>[ 271.269439] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[243]rx xfer 0 is:0
<3>[ 271.269452] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[242]tx xfer 1 is:2
<3>[ 271.269463] (4)[2560:sh][SPI-UT]: [spi_recv_check_all]:[243]rx xfer 1 is:0
从LOG看发送有数据,但是接收没有,发送有说明平台transfer已经成功,接收没有的原因应该是SPI的MOSI和MISOpin未短接,造成MISO上没有数据信号。
solution:硬件上短接MISO和MOSI。
测试没有问题,但是使用指纹通讯读取数据时spi通讯还是不行,只是没有在报错Warning!Tx_DMA address range error in 4G mode,dma:0
有谁遇到过吗
請問一下,你spi-reserve-memory是加在SPI@0x1100A000那個node中嗎?
请问后面通讯问题解决了吗? 什么解决的?谢谢