linux 使用regulator

linux 使用regulator

简要说明一下在Rockchip平台regulator的使用方法

//在pmic这个节点中可以看到一个子节点vcc_sd,表明有一路电源从pmic中引出来连接到sdmmc的外设上,给sdmmc进行供电,那这一路电源如何使用呢?可以看下面的dts sdmmc 这个节点的vqmmc-supply
vcc_sd: LDO_REG4 {
    
    
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-name = "vcc_sd";
				regulator-state-mem {
    
    
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3000000>;
				};
			};
			

&sdmmc {
    
    
	clock-frequency = <50000000>;
	clock-freq-min-max = <400000 150000000>;
	supports-sd;
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	num-slots = <1>;
	//sd-uhs-sdr104;
	vqmmc-supply = <&vcc_sd>;   //指定vqmmc-supply 使用pmic是使用那一路电源
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
	status = "okay";
};

在代码中使用vqmmc-supply这一路电源代码调用如下:
kernel\drivers\mmc\host\dw_mmc-pltfm.c

//step 1
static const struct of_device_id dw_mci_rockchip_match[] = {
    
    
	{
    
     .compatible = "rockchip,rk2928-dw-mshc",
		.data = &rk2928_drv_data },
	{
    
     .compatible = "rockchip,rk3288-dw-mshc",
		.data = &rk3288_drv_data },
	{
    
    },
};

//step 2
static struct platform_driver dw_mci_rockchip_pltfm_driver = {
    
    
	.probe		= dw_mci_rockchip_probe,
	.remove		= dw_mci_pltfm_remove,
	.driver		= {
    
    
		.name		= "dwmmc_rockchip",
		.of_match_table	= dw_mci_rockchip_match,
		.pm		= &dw_mci_rockchip_pmops,
	},
};

static int dw_mci_rockchip_probe(struct platform_device *pdev)
    dw_mci_pltfm_register(pdev, drv_data);
        dw_mci_probe(host);
           ret = dw_mci_init_slot(host, i);
               ret = mmc_regulator_get_supply(mmc);
                  mmc->supply.vmmc  = devm_regulator_get_optional(dev, "vmmc");
	              mmc->supply.vqmmc = devm_regulator_get_optional(dev, "vqmmc");
	               /"代码里通过“vqmmc” 找到 vqmmc-supply = <&vcc_sd>;,从而找到vcc_sd,电源配置*/

Guess you like

Origin blog.csdn.net/qq_27809619/article/details/115940174