Page 1 of 1

关于 Luckfox Lyra SD 卡电源控制的设备树实现疑问

Posted: 2025-09-24 14:29
by kvzero
你好,我正在分析 Luckfox Lyra 的设备树和相关硬件,对 SD 卡的电源控制实现有几个事实性的问题需要请教。

我观察到的硬件和软件配置如下:
  • 硬件连接:GPIO1_PB7 引脚连接到一个 PMOS 开关的栅极。这个 PMOS 负责接通或断开供给 SD 卡 VDD 的 3.3V 电源。因此,GPIO1_PB7 的电平状态直接决定了 SD 卡是否上电。
  • 设备树 pinctrl 配置:在 rk3506-luckfox-lyra.dtsi 中,&mmc 节点的 pinctrl-0 属性列表里包含了 &sdmmc_pwren 句柄。这个 &sdmmc_pwren 节点的作用是将 GPIO1_PB7 这个物理引脚配置为 GPIO 功能。
  • 设备树 regulator 配置:&mmc 节点的 vmmc-supply 属性指向了 &vcc_3v3 节点。而 &vcc_3v3 节点被定义为一个 regulator-fixed(固定稳压器),并且带有 regulator-always-on(常开)属性。
我的疑问是:
  • 既然硬件上必须通过 GPIO1_PB7 来控制电源,请问在内核的驱动模型中,是哪个模块、通过什么机制来实际驱动 GPIO1_PB7 这个引脚,以控制 PMOS 开关的呢?
  • 这个sdmmc_pwren是和sdmmc_detj结合使用实现插卡后上电的是吗?取缔pmos开关和sdmmc_pwren使SD卡VDD直连3V3不断电是硬件上安全的吗
附上相关设备树:

Code: Select all

&mmc {
	/* For SDMMC */
	max-frequency = <52000000>;
	bus-width = <4>;
	no-sdio;
	no-mmc;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	cd-gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>; //det
	disable-wp;
	//sd-uhs-sdr104;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk_pins &sdmmc_cmd_pins &sdmmc_bus4_pins &sdmmc_det &sdmmc_pwren>;
	vqmmc-supply = <&vcc_3v3>;
	vmmc-supply = <&vcc_3v3>;
	status = "okay";
};
&pinctrl {
	sdmmc {
		/omit-if-no-ref/
		sdmmc_pwren: sdmmc-pwren {
			rockchip,pins = <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>;
		};

		sdmmc_det: sdmmc-det {
			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
		};
	};
};

Re: 关于 Luckfox Lyra SD 卡电源控制的设备树实现疑问

Posted: 2025-09-25 13:53
by Crocodile
您好 Luckfox Lyra 并没有为SD卡的热拔插做适配,所以sdmmc_pwren和sdmmc_det我们只配置了一种固定状态,sdmmc_pwren默认上拉,sdmmc_det默认下拉,这样无论有没有插入卡都会强制进行扫卡操作,在最新的SDK我们将sdmmc_det配置为默认上拉配合原本的cd-gpios配置就可以检测卡的插入,sdmmc_pwren的配置也可以注册一个regulator然后用vmmc-supply去指定,但是我们只需要保持上电状态所以没有配置。
现在大部分的SD卡不仅支持CD脚检测,还支持CMD和DAT3引脚检测,驱动通过轮询 DAT3 引脚来判断卡是否存在,这种检测是需要3V3一直上电的,所以VDD直连3V3不断电硬件上没有问题

Re: 关于 Luckfox Lyra SD 卡电源控制的设备树实现疑问

Posted: 2025-09-26 7:27
by kvzero
好的,感谢您的回复