Uno, uso del regulador
1.1. El regulador de administración de energía se divide en estático y dinámico: estático no necesita cambiar el voltaje y la corriente, solo cambiar la fuente de alimentación, se usa en BootLoader, frameware, etapa de la placa del núcleo, etc.; Dinámico es cambiar el voltaje y la corriente según necesidades.
1.2. Obtener el regulador y dev del dispositivo como el puntero del dispositivo correspondiente al controlador. Puede usar NULL, y Vcc es el ID de la fuente de alimentación. El kernel buscará en la tabla el regulador correspondiente a la fuente de alimentación. IDENTIFICACIÓN. Tales como: struct regulator * ldo; ldo = regualtor_get (NULL, "act_ldo5");
regulator = regulator_get (dev, "Vcc"); // Obtener regulador de dispositivo
1,3 、 regulator_put (regulador); // 释放 regulador
1.4. Int regulator_enable (regulador); // Habilita la salida de potencia. Es posible que se haya habilitado antes de la llamada. Entonces usa la siguiente función para juzgar.
1.5. Int regulator_is_enabled (regulador); // Determine si está habilitado,> 0 significa que ha sido habilitado.
1.6, int regulator_disable (regulador); // Apague la salida de energía. Sin embargo, es posible que no se apague de inmediato y que exista un escenario de uso compartido de energía.
1.7, int regulator_force_disable (regulator); // Apague la energía a la fuerza.
1.8, int regulator_set_volatage (regulador, min_uV, max_uV); // La salida mínima y máxima del voltaje del regulador. Si llama a regulator_enable a continuación, este valor entrará en vigor inmediatamente. Si llama a regulator_disable y otros, no entrará en vigor hasta la próxima vez que se llame a regulator_enable.
1.9. Int regulator_get_voltage (regulador); // Obtiene el voltaje de salida configurado a través de esta interfaz.
Los ejemplos son los siguientes:
regulator_set_voltage(ldo_28, 2800000, 2800000); //设置电压
regulator_enable(ldo_28); //使能
int value = regulator_get_voltage(ldo_28); //获取电压值
regulator_put(ldo_28); //释放
2. Casos de uso específicos
2.1 La configuración del árbol de dispositivos es la siguiente
ldo8: ldo8 {
regulator-compatible = "LDO8";
regulator-name = "ldo8_1v5";
regulator-min-microvolt = <1500000>;
regulator-max-microvolt = <1600000>;
//regulator-boot-on; //boot 时打开
//regulator-always-on; //一直打开
sleep-slot = <15>;
poweron-slot = <0x20>;
};
2.2 El código fuente del controlador es el siguiente
//打开
struct regulator *reg;
reg = devm_regulator_get(&i2c->dev, "ldo8_1v5");
regulator_set_volatage(reg, 1500000, 1500000);
regulator_enable(reg);
//关闭
struct regulator *reg;
reg = devm_regualtor_get(&i2c->dev, "ldo8_1v5");
regulator_disable(reg);