导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. qinlinbin
    3. 最佳
    Q
    • 资料
    • 关注 0
    • 粉丝 2
    • 我的积分 5461
    • 主题 9
    • 帖子 52
    • 最佳 3
    • 群组 0

    qinlinbin 发布的最佳帖子

    • 回复: T113 spi原厂驱动有问题

      @yy_fly 仅供参考!!!spi-sunxi.c文件。

      /* reset fifo */
      static void spi_reset_fifo(void __iomem *base_addr)
      {
      	u32 reg_val = readl(base_addr + SPI_FIFO_CTL_REG);
      	u32 poll_time = 0x7ffffff;
      	reg_val |= (SPI_FIFO_CTL_RX_RST|SPI_FIFO_CTL_TX_RST);
      	/* Set the trigger level of RxFIFO/TxFIFO. */
      	reg_val &= ~(SPI_FIFO_CTL_RX_LEVEL|SPI_FIFO_CTL_TX_LEVEL);
      	reg_val |= (0x20<<16) | 0x20;
      	writel(reg_val, base_addr + SPI_FIFO_CTL_REG);
      
              /*添加的内容*/
      	reg_val = 0;
      	reg_val = readl(base_addr + SPI_FIFO_CTL_REG);
      	while((reg_val & SPI_FIFO_CTL_RX_RST || reg_val & SPI_FIFO_CTL_TX_RST) &&
      			--poll_time)
      		reg_val = readl(base_addr + SPI_FIFO_CTL_REG);
      }
      
      static int sunxi_spi_cpu_readl(struct spi_device *spi, struct spi_transfer *t)
      {
      	struct sunxi_spi *sspi = spi_master_get_devdata(spi->master);
      	void __iomem *base_addr = sspi->base_addr;
      	unsigned rx_len = t->len;	/* number of bytes sent */
      	unsigned char *rx_buf = (unsigned char *)t->rx_buf;
      	unsigned int poll_time = 0x7ffffff;
      	unsigned int i, j;
      	u8 buf[64], cnt = 0;
      
      	while (rx_len && (--poll_time > 0)) {
      	/* rxFIFO counter */
      		if (spi_query_rxfifo(base_addr)) {
      			*rx_buf++ =  readb(base_addr + SPI_RXDATA_REG);
      			--rx_len;
      		}
      	}
              /*余下的没改*/
      }
      
      发布在 T Series
      Q
      qqqlb
    • 回复: T113 spi原厂驱动有问题

      spi我也遇到过卡死的问题,不是这个大佬的代码,是代理给的代码。resetfifo后,没等reset结束,直接读数据,就会卡死。我把它改成resetfifo后,判断一下reset完成再进行下一步就不会卡死了。

      发布在 T Series
      Q
      qqqlb
    • 回复: 一个补丁,让D1-H的SDK支持T113芯片

      @jr_online 安装bison

      发布在 其它全志芯片讨论区
      Q
      qqqlb
    • 1 / 1