Toybrick

标题: 请教个dw_mci_card_busy读取控制器状态阻塞问题 [打印本页]

作者: jfs771    时间: 2023-7-23 22:14
标题: 请教个dw_mci_card_busy读取控制器状态阻塞问题
本帖最后由 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. };
复制代码



作者: jfs771    时间: 2023-8-22 00:21
解决,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.         };
复制代码





欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3