Toybrick

请教个dw_mci_card_busy读取控制器状态阻塞问题

jfs771

新手上路

积分
25
发表于 2023-7-23 22:14:58    查看: 1088|回复: 1 | [复制链接]    打印 | 显示全部楼层
本帖最后由 jfs771 于 2023-7-23 22:16 编辑


背景:使用PX30-evb的板子,使用SDIO接口;目前的情况是在初始化时可以成功,已经生成bus和对应的设备;
但是在用户态程序打开 /dev/sdio0设备时,阻塞在 dw_mci_card_busy 接口中,通过打印调试,确认是在mci_readl 接口中无法返回
相同的接口,在加载内核时时没有问题的,读取STATUS寄存器
请教下大家有碰上过类似的问题吗?目前实在是没有头绪


[root@buildroot:/]#
[root@buildroot:/]# ls /dev/sdio0
/dev/sdio0
[root@buildroot:/]#
[root@buildroot:/]#  ls /sys/bus/sdio/devices/
mmc0:2ab1:1
[root@buildroot:/]#
[root@buildroot:/]# cat /sys/devices/platform/ff380000.dwmmc/of_node/name
dwmmc
[root@buildroot:/]#
[root@buildroot:/]#
[root@buildroot:/]# cat /sys/devices/platform/ff380000.dwmmc/of_node/compatible
rockchip,px30-dw-mshcrockchip,rk3288-dw-mshc
[root@buildroot:/]#
[root@buildroot:/]#
  1. <blockquote>static int dw_mci_card_busy(struct mmc_host *mmc)
复制代码



SDIO的设备树配置
  1. /* EVB-X301 micro SD card */
  2. &sdio {

  3.         status = "okay";

  4.         clock-frequency = <50000000>;
  5.         clock-freq-min-max = <200000 20000000>;
  6.         bus-width = <4>;
  7.         cap-sd-highspeed;
  8.         //cap-sdio-irq;
  9.         disable-wp;
  10.         keep-power-in-suspend;
  11.         //mmc-pwrseq = <&sdio_pwrseq>;
  12.         non-removable;
  13.         num-slots = <1>;
  14.         supports-sdio;

  15. };
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jfs771

新手上路

积分
25
 楼主| 发表于 2023-8-22 00:21:26 | 显示全部楼层
解决,SDIO的设备树描述文件,缺少电源的描述 power-domains
  1.         sdio: dwmmc@ff380000 {
  2.                 compatible = "rockchip,px30-dw-mshc", "rockchip,rk3288-dw-mshc";
  3.                 reg = <0x0 0xff380000 0x0 0x4000>;
  4.                 max-frequency = <150000000>;
  5.                 clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
  6.                          <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
  7.                 clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
  8.                 assigned-clocks = <&cru SCLK_SDIO>;
  9.                 assigned-clock-parents = <&cru SCLK_SDIO_DIV50>;
  10.                 power-domains = <&power PX30_PD_MMC_NAND>;
  11.                 fifo-depth = <0x100>;
  12.                 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
  13.                 pinctrl-names = "default";
  14.                 pinctrl-0 = <&sdio_bus4 &sdio_cmd &sdio_clk>;
  15.                 status = "disabled";
  16.         };
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表