1、電源管理 Regulator 分成靜態和動態:靜態不需要改變電壓電流,只需要開關電源,用在bootloader,firmware,kernel board 階段等。動態,根據需要改變電壓電流。
2、獲取設備的regulator,dev為驅動對應的設備指針,可以用NULL,Vcc為電源的ID,內核會查表找到電源ID對應的regulator。如:
struct regulator *ldo;
ldo=regulator_get(NULL,"act_ldo5");
regulator = regulator_get(dev, "Vcc");//獲取設備regulator.
3、regulator_put(regulator); //釋放regulator。
4、int regulator_enable(regulator);//使能電源輸出。調用之前也可能已經使能了。所以用下面函數判斷。
5、int regulaor_is_enabled(regulator); //判斷是否使能,>0 表示已經使能。
6、int regulator_disable(regulator);//關閉電源輸出。但是未必立刻關閉,有可以存在電源共享的場景。
7、int regulator_force_disable(regulator);//強制關閉電源。
8、int regulator_set_voltage(regulator,min_uV,max_uV);//調節電壓的最小和最大輸出。如果接下去調用regulator_enable ,那么這個值馬上就生效,如果調用regulator_disable等其他的,要等到下一次調用regulator_enable時才能生效。
9、int regulator_get_voltage(regulator); //通過此接口獲取配置的輸出電壓。
10、int regulator_count_voltages(regulator); //通過此接口獲取regulator的編號。
例如:
regulator_set_voltage(ldo_28, 2800000, 2800000); //設置電壓。
regulator_enable(ldo_28); //使能。
int value=regulator_get_voltage(ldo_28)); //獲取電壓值。
regulator_put(ldo_28); //釋放。
