AR# 47532

Zynq-7000 SoC、SDIO - 软件复位序列可避免互连挂起

描述

SDIO 控制器需要激活 SDIO 时钟才能写入软件复位 CMD 和 DAT。

如果SDIO时钟未激活,则控制器和互连将挂起。

解决方案

影响:

问题产生的影响较小,请参考解决方法。
解决方案:

向控制器发出软复位之前,请启用 SDIO 时钟。

受影响的配置:

使用 SDIO 控制器的系统。

受影响的器件版本:全部,无修复计划。请参考(Xilinx Answer 47916) Zynq-7000 设计咨询主答复记录
解决方案详情:主机驱动程序软件流程。


可选:CMD 和 DAT 复位:

如果主机驱动程序在主机控制器初始化期间发出 CMD 和 DAT 重置,则该选项将优先于以下主机驱动程序流程。

如果主机驱动程序在主机控制器初始化期间仅发出软复位(Software_Reset_for_All),则不需要此选项。需要 SDIO 时钟来清除软复位 CMD 和 DAT 位。

1) 启用 SDIO 时钟。
执行 CMD 及 DAT 复位: 将 1 和 0 先后写入 sdio.Clock_Control_Timeout_control_Software_reset[25、26]。

示例:主机驱动程序流程:

1) 等待卡插入。配置卡检测中断。

2) 插入卡后,执行 Software_Reset_for_All。将 1 和 0 先后写入 sdio.Clock_Control_Timeout_control_Software_reset[24]。

3) 启用主机中断并启用 SDIO 时钟。

  • SDIO_CLK_CTRL 寄存器为 @0XF8000150
  • 位 0 用于 SD0 Clk 控制(0:禁用,1:启用)
  • 位 1 用于 SD1 Clk 控制(0:禁用,1:启用)

4) 初始化 SD 卡。

全部软复位:

断言 Software_Reset_for_All,将重置所有 SDIO 寄存器,包括 sdio.Clock_Control_Timeout_control_Software_reset。

复位后,驱动程序必须启用 SDIO 时钟。

AR# 47532
日期 03/19/2020
状态 活跃
Type 设计咨询
器件