Documentation/power/regulator/consumer.txt
번역: 양정석 <dasomoli@gmailREMOVETHIS.com>
레귤레이터 컨슈머 드라이버 인터페이스
이 문서는 컨슈머 디바이스 드라이버를 위한 레귤레이터 인터페이스에 대해
컨슈머 드라이버는 그 공급 레귤레이터를 다음 호출로 접근 할 수 있습니다 :-
regulator = regulator_get(dev, “Vcc”);
컨슈머는 그 struct device 포인터와 전원 공급자 ID를 넘깁니다. 코어는 해당하는
레귤레이터를 컨슈머 드라이버에서 제거하기 위해서는 다음을 호출해야 합니다 :-
regulator_put(regulator);
컨슈머들은 하나 이상의 레귤레이터에 의해 전원이 공급될 수 있습니다. 예를 들면,
digital = regulator_get(dev, “Vcc”); /* digital core */
그 레귤레이터 접근 함수 regulator_get()과 regulator_put() 는 일반적으로
컨슈머는 그 전원 공급을 다음을 통해 켤 수 있습니다:-
int regulator_enable(regulator);
알림: 그 공급자는 이미 regulator_enabled()가 호출되기 전에 켜져 있을 겁니다.
컨슈머는 다음 호출을 통해 레귤레이터가 켜져 있는지 알아볼 수 있습니다 :-
int regulator_is_enabled(regulator);
이것은 레귤레이터가 켜져 있으면, 0보다 큰 값을 반환할 것입니다.
int regulator_disable(regulator);
알림: 이것은 만약 그것을 다른 컨슈머와 공유하고 있으면, 그 전원 공급을 끄지
마지막으로, 레귤레이터는 긴급한 경우에 강제로 끌 수 있습니다 :-
int regulator_force_disable(regulator);
알림: 이것은 즉시 그리고 강제로 레귤레이터 출력을 끌 겁니다. 모든 컨슈머는
3. 레귤레이터 전압 제어 & 상태(동적 드라이버)
어떤 컨슈머 드라이버는 시스템 동작 시점에 맞게 동적으로 그들의 전압 공급을
컨슈머들은 그들의 전압 공급을 다음을 통해 제어할 수 있습니다 :-
int regulator_set_voltage(regulator, min_uV, max_uV);
여기서 min_uV 와 max_uV 는 최소 그리고 최대 허용가능한 마이크로 볼트 전압입니다.
알림: 이것은 레귤레이터가 켜져있거나 꺼져 있을 때, 호출될 수 있습니다. 켜져
설정된 레귤레이터의 출력 전압은 다음을 통해 얻을 수 있습니다 :-
int regulator_get_voltage(regulator);
알림: get_voltage() 는 레귤레이터가 켜져있건 꺼져있건 설정된 전압을 반환합니다.
어떤 컨슈머 드라이버는 그 공급 전류 제한을 시스템 동작 시점에 맞춰 바꿔야 할
컨슈머들은 그 공급 전류 제한을 다음으로 제어할 수 있습니다 :-
int regulator_set_current_limit(regulator, min_uA, max_uA);
여기서 min_uA 와 max_uA 는 최소, 최대 허용가능한 마이크로 암페어 전류 제한입니다.
알림: 이것은 레귤레이터가 켜져 있거나 꺼져 있을 때 호출 될 수 있습니다. 만약 켜져
레귤레이터는 전류 제한 값을 다음으로 얻을 수 있습니다 :-
int regulator_get_current_limit(regulator);
알림: get_current_limit() 는 그 레귤레이터가 켜져 있거나 꺼져 있거나 상관없이
어떤 컨슈머들은 컨슈머들의 동작 상태 변경 때 더 효율적이도록 전원 공급
레귤레이터 동작 모드는 직접 혹은 간접적으로 변경될 수 있습니다.
간접 동작 모드 제어
int regulator_set_optimum_mode(struct regulator *regulator, int load_uA);
이것은 코어가 레귤레이터 상의 (모든 그 컨슈머에 기초해서) 총 부하를 재계산하도록
load_uA 값은 컨슈머 데이터시트로부터 결정될 수 있습니다. 예를 들면, 대부분의
대부분의 컨슈머는 그들이 레귤레이터에 대해 모를 때 또는 그 레귤레이터가
직접 동작 모드 제어
int regulator_set_mode(struct regulator *regulator, unsigned int mode);
직접 모드는 그 레귤레이터에 대해서, 그리고 다른 컨슈머들과 공유되지 않음을
컨슈머들은 다음 호출을 통해 레귤레이터 이벤트에 대한 관심을 등록할 수 있습니다 :-
int regulator_register_notifier(struct regulator *regulator,
컨슈머들은 다음 호출을 통해 그들의 관심을 해제할 수 있습니다 :-
int regulator_unregister_notifier(struct regulator *regulator,
레귤레이터들은 그들에게 관심있어 하는 컨슈머들에게 이벤트를 보내는데 커널