2.4 Anatop Regulator Driver
2.4.1 Introduction
Anatop Regulator 드라이버는 전원 공급 레귤레이터의 저 수준 제어와 전압 레벨의 선택을 제공한다. 이 디바이스 드라이버는 레귤레이터 코어 드라이버를 사용하여 Anatop 하드웨어의 컨트롤 레지스터에 액세스하며 i.MX 6, i.MX 7에서만 지원한다.
2.4.2 Hardware Operation
다이의 Power Management Unit은 외부 전원 인터페이스를 단순화하고 다이를 전원에 적합한 방식으로 구성할 수 있도록 제작되었다. 전원 시스템은 입력 전원 소스와 그 특성, 통합된 전원 변환과 제어 요소, 상호 연결에서 최종 부하와 요구 사항으로 구성된다.
7개의 LDO 레귤레이터를 사용하여 외부 전원의 수를 크게 줄였다. 백업 코인(backup coin)과 USB 입력을 소홀히 하면 외부 공급 장치의 수가 2개로 줄어든다. 이 외부 공급 총계에서 누락된 것은 원하는 메모리 인터페이스 전원에 필요한 외부 공급이다. 선택한 외부 메모리 종류에 따라 달라진다. I/O 전압이 위에 제공된 것과 다른 경우, 다른 I/O 전원 세그먼트에 전압을 공급하기 위한 다른 공급 장치가 필요할 수도 있다.
일부 내부 레귤레이터는 바이패스될 수 있다. 그래서 외부 PMIC가 전원을 직접 공급하여 전원 수를 줄일 수 있다(VDD_SOC, VDD_ARM등).
2.4.3 Software Operation
Anatop 레귤레이터 클라이언트 드라이버는 Anatop 하드웨어의 컨트롤 레지스터를 재구성하기 위해 작업을 수행한다. 이는 필요한 레지스터 설정을 레귤레이터 코어 API를 호출하여 수행한다.
2.4.4 Driver Features
Anatop 레귤레이터 드라이버는 레귤레이터 코어 드라이버를 기반으로 한다. 레귤레이터 컨트롤을 위해 제공되는 서비스 목록은 다음에서 찾을 수 있다.
- 모든 전압 레귤레이터의 스위치 ON/OFF
- 모든 전압 레귤레이터의 값 설정
- 모든 전압 레귤레이터의 현재 값 가져오기
2.4.5 Driver Interface Details
Anatop 레귤레이터에 대한 액세스는 레귤레이터 코어 드라이버 API를 통해 제공된다. Anatop 레귤레이터 드라이버는 다음 레귤레이터 컨트롤을 제공한다 :
- 7개의 LDO 레귤레이터
- 모든 레귤레이터 기능은 적절한 Anatop 하드웨어의 컨트롤 레지스터 값을 설정하여 처리된다. 이는 Anatop 하드웨어 레지스터에 액세스하기 위한 레귤레이터 코어 API를 호출하여 수행된다.
2.4.6 Regulator APIs
Linux Kernel에서 전압과 전류 레귤레이터에 대한 일반 인터페이스를 제공하도록 레귤레이터 전원 아키텍처는 설계되어 있다. 클라이언트나 컨슈머(consumer) 드라이버에 전압과 전류 컨트롤을 제공하고 또한 sysfs 인터페이스를 통해 사용자 영역 애플리케이션에 상태 정보를 제공한다. 이 의도는 시스템이 레귤레이터 출력을 동적으로 컨트롤하여 전력을 절약하고 배터리 수명을 연장하도록 하는 것이다. 이는 전압 레귤레이터(전압 출력을 컨트롤할 수 있는 경우)와 전류 싱크(전류 출력을 제어할 수 있는 경우)에 모두 적용된다.
자세한 내용은 opensource.wolfsonmicro.com/node/15(2022-06-10 링크 깨짐)를 참조한다.
이 프레임워크에서 대부분의 전원 작업은 다음 통합된 API 호출로 수행할 수 있다 :
- 레귤레이터에 대한 레퍼런스를 조회하고 획득하는 데 사용되는 regulator_get :
struct regulator *regulator_get(struct device *dev, const char *id);
- 레귤레이터 소스를 해제(free)하는 데 사용되는 regulator_put :
void regulator_put(struct regulator *regulator, struct device *dev);
- 레귤레이터 출력을 활성화하는 데 사용되는 regulator_enable :
int regulator_enable(struct regulator *regulator);
- 레귤레이터 출력을 비활성화하는 데 사용되는 regulator_disable :
int regulator_disable(struct regulator *regulator);
- 레귤레이터 출력이 활성화 되어있는지 확인하는 regulator_is_enabled :
int regulator_is_enabled(struct regulator *regulator);
- 레귤레이터 출력 전압을 설정하는 데 사용되는 regulator_set_voltage :
int regulator_set_voltage(struct regulator *regulator, int uV);
- 레귤레이터 출력 전압을 가져오는 데 사용되는 regulator_get_voltage :
int regulator_get_voltage(struct regulator *regulator);
Linux Kernel 내부의 레귤레이터 코어 소스 코드에 대한 자세한 API 및 세부 정보는 drivers/regulator/core.c를 참조한다.
2.4.7 Source Code Structure
Anatop 레귤레이터 드라이버는 drivers/regulator 디렉토리에 있다 :
Table 9. Anatop Power Management Driver Files
File | Description |
drivers/regulator/core.c | Regulator 인터페이스 |
drivers/regulator/anatop-regulator.c | Anatop regulator 클라이언트 드라이버 |
Anatop regulator는 arch/arm/boot/dts에서 각 SoC 지정 dts 파일에 등록된다.
2.4.8 Menu Configuration Options
menu configuration에서 다음 모듈을 활성화한다 :
- Device Drivers > Voltage and Current regulator support > Anatop Regulator Support
- System Type > Freescale i.MX on-chip ANATOP LDO regulators
'NXP i.MX SoC Family > i.MX Linux Reference Manual' 카테고리의 다른 글
i.MX Linux Reference Manual - System - OProfile (0) | 2022.06.15 |
---|---|
i.MX Linux Reference Manual - System - Power Management (0) | 2022.06.10 |
i.MX Linux Reference Manual - System - Boot Image (0) | 2022.06.10 |
i.MX Linux Reference Manual - System - System Controller (0) | 2022.06.07 |
i.MX Linux Reference Manual - System - Machine-Specific Layer (MSL) (0) | 2022.05.26 |