2.5 Power Management
2.5.1 Low Level Power Management (PM)
2.5.1.1 Introduction
여기에 있는 정보는 저전력 모드를 제어하는 저수준의 전원 관리(PM : Power Management) 드라이버에 대한 설명이다.
다음은 각 i.MX 제품군에서 지원되는 전원 관리 처리 방식의 차이점을 설명한다.
Table 10. Power Management Modes
i.MX Family | Supported Low Power Modes |
i.MX 6 | RUN, WAIT, STOP, DORMANT |
i.MX 7 | RUN, WAIT, STOP, DORMANT, LPSR |
i.MX 8M | RUN, IDLE, SUSPEND, SNVS |
i.MX 8, i.MX 8X | System Controller에서 처리 |
아래 테이블에는 다양한 저전력 모드에 대한 자세한 클록 정보가 나와 있다.
Table 11. Low Power Modes
Mode | Core | Modules | PLL | CKIH/FPM | CKIL |
RUN | Active | Active, Idle or Disable | On | On | On |
WAIT | Disable | Active, Idle or Disable | On | On | On |
STOP | Disable | Disable | Off | On | On |
LPSR | Power off | Disable | Off | Off | On |
DORMANT | Power off | Disable | Off | Off | On |
SNVS | Power off | Disable | Off | Off | On |
저전력 모드에 대한 자세한 내용은 SoC와 관련된 Application Processor Reference Manual을 참조한다.
2.5.1.2 Software Operation
i.MX 6, i.MX 7 전원 관리 드라이버는 저전력 모드를 커널 전원 관리 상태에 아래와 같이 매핑한다 :
- Standby는 상당한 절전을 제공하는 STOP 모드로 매핑한다. 시스템의 모든 블록은 저전력 상태로 전환하고, 예외로 Arm® core는 여전히 전원이 공급되고 메모리는 그 내용을 유지하는 self-refresh 모드로 전환된다.
- Mem (RAM 일시 중지)은 가장 큰 절전을 제공하는 DORMANT 모드로 매핑한다. 시스템의 모든 블록은 저전력 상태로 전환하고, 예외로 메모리만 그 내용을 유지하는 self-refresh 모드로 전환된다. DTB ocrams node에 "fsl,enable-lpsr"이 정의되어 있으면, mem은 DORMANT 대신에 LPSR 모드로 매핑된다. 그리고 시스템의 모든 블록은 전원 차단 상태로 전환된다. LPSR, SNVS, DRAM 전원 도메인은 예외이다.
- System Idle은 WAIT 모드로 매핑한다.
- 커널이 standby/mem 모드로 진입하기 전에, Arm Cortex®-M4 프로세서가 Arm Cortex-A 프로세서와 함께 활성 상태이고 Arm Cortex-M4 프로세서가 저전력 Idle 모드가 아닌 경우, Arm Cortex-M4 프로세서가 계속 실행될 수 있도록 STOP 모드 대신에 WAIT 모드로 진입하도록 Arm Cortex-A 프로세서는 SOC를 트리거 한다.
i.MX 6, i.MX 7 전원 관리 드라이버는 저전력 모드로 진입/종료하기 위해 다음 단계를 수행한다 :
- deep sleep mode 요청을 발행하도록 Cortex-A 플랫폼이 허용한다.
- 만약 STOP나 DORMANT 모드이면 :
- i.MX 6 CCM_CLPCR이나 i.MX 7 GPC_LPCR_A7_BSC, GPC_SLPCR 레지스터를 프로그램하여 저전력 컨트롤 레지스터를 설정한다.
- DORMANT 모드이면, pdn_req가 assert될 때 CPU 전원을 차단하도록 요청한다.
- pdn_req가 assert될 때 내장 메모리의 주변기기 전원을 차단하도록 요청한다.
- wakeup 인터럽트 마스크를 해제하려고 GPC 마스크 레지스터를 프로그램한다.
- cpu_do_idle을 호출하여 wait 모드에 대한 WFI 보류 명령(pending instruction)을 실행한다.
- IRAM에서 imx6_suspend나 imx7_suspend를 실행한다.
- DORMANT 모드에서 Arm 컨텍스트를 저장하고 DDR PAD의 드라이브 강도(drive strength)를 "low"로 변경하여 DDR PAD의 전력 누출을 최소화한다. stop 모드에 대한 WFI 보류 명령을 실행한다.
- wakeup 인터럽트를 생성하고 저전력 모드를 종료한다. DORMANT 모드에서 Arm core와 DDR 드라이브 강도를 복원한다.
DORMANT 모드에서 i.MX 6와 i.MX 7은 PMIC로 PMIC_STBY_REQ 핀을 assert하고 전압 변경을 요청할 수 있다. U-Boot나 MSL(Machine-Specific Layer)은 일반적으로 i.MX 6와 i.MX 7 데이터시트에 따라 STOP 모드에서 대기 전압(standby voltage)을 설정한다.
i.MX 8M 제품군의 전원 관리 드라이버는 다음 모드를 사용한다.
- RUN 모드 : 이 모드에서 Quad-A53 CPU core가 활성화되어 실행된다. 절전을 위해 일부분을 차단할 수 있다.
- IDLE 모드 : 이 모드는 실행 중인 스레드가 없고 모든 고속 디바이스가 비활성화인 경우에 CPU가 자동으로 진입하는 모드로 정의된다. CPU는 전원 차단 상태로 전환될 수 있지만, L2 데이터가 유지되면 DRAM과 버스 클록은 감소하고 대부분의 내부 로직은 클록이 차단 되지만 여전히 전원은 공급된다.
- SUSPEND 모드 : 이 모드는 모든 clock이 꺼져 있고 모든 불필요한 전원 공급이 꺼져 있는 가장 큰 절전 모드로 정의된다. Cortex-A53 CPU 플랫폼은 완전하게 전원이 차단된다. 전원을 끌 수 있는 모든 내부 디지털 논리와 아날로그 회로가 꺼진다.
- SNVS 모드 : 이 모드를 RTC 모드라고 한다. 이 모드에서는 RTC와 SNVS 로직을 활성 상태로 유지하기 위해 SVNS 도메인의 전원만 켜진 상태로 유지한다.
i.MX 8, i.MX 8X :
- 하드웨어에서 저전력 모드를 사용할 수 없다.
- 모든 저전력 모드는 소프트웨어 방식을 사용하여 시스템 컨트롤 펌웨어(SCFW)에서 구현된다.
- SCFW는 시스템이 일시 중단되면 클러스터/CPU의 전원을 끈다.
2.5.1.3 Source Code Structure
아래 테이블은 Power Management 드라이버 소스 파일이다.
Table 12. Power Management Driver Files
File | Description |
|
i.MX 6 QuadPlus/Quad/Dual/Solo 전원 관리 지원 |
|
i.MX 6 SLL 전원 관리 지원 |
|
i.MX 6 UltraLite 전원 관리 지원 |
|
i.MX 6 ULL 전원 관리 지원 |
|
i.MX 6 SoloX 전원 관리 지원 |
|
i.MX 7Dual 전원 관리 지원 |
|
i.MX 7ULP 전원 관리 지원 |
|
i.MX 8, 8X, 8M 전원 도메인 지원 |
code aurora forum/의 imx-atf에 있는 ARM Trusted 펌웨어 | 전원 관리 작업을 위해 i.MX 8, 8X, 8M에서 Arm Trusted 펌웨어 사용을 지원 |
2.5.1.4 Menu Configuration Options
메뉴 규성에서 CONFIG_PM을 활성화 : CONFIG_PM은 전원 관리에 대한 지원을 빌드한다. 기본 값으로 이 옵션은 "Y"이다. menuconfig에서 이 옵션은 다음에서 유효하다 : Power management options > Power Management support.
메뉴 구성에서 CONFIG_SUSPEND를 활성화한다. CONFIG_SUSPEND는 suspend에 대한 지원을 빌드한다. menuconfig에서 이 옵션 다음에서 유효하다 : Power management options > Suspend to RAM and standby.
2.5.1.5 Programming Interface
Source Code Structure 테이블에 표시된 대로 각 SoC의 cpu_idle에서 lpm을 검색한다. 이는 저전력 모드를 위한 API가 될 것이다. 이는 시스템을 WAIT, STOP 모드로 전환하는 데 필요한 모든 단계를 구현한다.
2.5.2 PMIC PF Regulator
2.5.2.1 Introduction
PF100/200/300은 PMIC 칩이다.
PF200/PF300은 동일한 PF100 드라이버를 공유하기 때문에 거의 변경없이 PF100을 기반으로 한다. PF100 레귤레이터 드라이버는 파워 서플라이 레귤레이터의 저수준 컨트롤, 전압 레벨 선택, 레귤레이터의 활성화/비활성화를 제공한다. 이 디바이스 드라이버는 PF100 레귤레이터 드라이버를 사용하여 PF100 하드웨어 컨트롤 레지스터에 액세스한다. PF100 레귤레이터 드라이버는 레귤레이터 core 드라이버를 기반으로 커널 I2C 버스에 부착된다.
PF8100/8200 PMIC는 i.MX 8과 i.MX 8X 제품군용으로 설계되었고 시스템 레벨의 디바이스이기 때문에 System Controller Firmware(SCFW)에 의해 컨트롤된다. SCFW는 "SC_R_BOARD_R0"과 같은 Linux 터치용 특정 전원 리소스를 생성한다.
2.5.2.2 Hardware Operation
PMIC PF 레귤레이터는 Application Processor와 주변 디바이스에 대해 기준(reference) 및 공급(supply) 전압을 제공한다.
4개의 buck(스텝 다운) 컨버터(최대 6개의 독립된 출력)와 하나의 boost(스텝 업) 컨버터가 포함되어 있다. buck 컨버터는 프로세서 core와 다른 저전압 회로(메모리 같은)에 전원을 공급한다. 프로세서 core와/나 기타 회로에 대한 공급 레일 조정(supply rail adjustment)을 컨트롤할 수 있도록 동적 전압 조정(dynamic voltage scaling)이 제공된다.
리니어 레귤레이터(linear regulator)는 배터리나 스위처(switcher)에 직접 공급되고 I/O, 주변 디바이스, 오디오, 카메라, BT, WLAN 등에 공급을 포함한다. 명명 규칙은 애플리케이션 사례로 일반적이거나 가능한 사용을 암시하지만, 스위처(switcher)와 레귤레이터는 지정된 기능의 가이드라인 내에서 다른 시스템 전원 요구 사항에 활용될 수 있다.
PF100의 유일한 power-on 이벤트는 PWRON이 high이고, PF100의 유일한 power-off 이벤트는 PWRON이 low이다. i.MX 6의 SNVS 블록에 의해 컨트롤되는 i.MX 6의 PMIC_ON_REQ 핀은 PF100의 PWRON 핀과 연결하여 PF100 on/off를 컨트롤하여 시스템 전원을 끌 수 있다.
2.5.2.3 Software Operation
PMIC PF 레귤레이터 클라이언트 드라이버는 PMIC 하드웨어 컨트롤 레지스터를 재구성하여 작업을 수행한다.
일부 PMIC 전원 관리 작업은 시스템 설계와 구성에 따라 다르다. 예를 들어, 시스템이 PMIC 이외의 전원으로 전원을 공급받으면, PMIC 전압 레귤레이터를 끄거나 조정해도 아무 효과가 없다. 반대로 시스템이 PMIC에서 전원을 공급 받으면, 전원 관리 드라이버와 레귤레이터 클라이언트 드라이버를 사용하는 모든 변경 사항은 전체 시스템의 작동이나 안전성에 영향을 줄 수 있다.
2.5.2.4 Driver Features
PMIC PF 레귤레이터 드라이버는 레귤레이터 core 드라이버를 기반으로 한다. PMIC 컴포넌트의 레귤레이터를 컨트롤하기 위해 다음 서비스를 제공한다 :
- 모든 전압 레귤레이터 ON/OFF 스위치
- 모든 전압 레귤레이터 값 설정
- 모든 전압 레귤레이터의 현재 값을 가져오기
2.5.2.5 Regulator APIs
레귤레이터 전원 아키텍처는 Linux Kernel에서 전압과 전류 레귤레이터를 위한 일반적인 인터페이스를 제공하도록 설계되었다.
이는 클라이언트나 사용자 드라이버에 전압과 전류 컨트롤을 제공하고 sysfs 인터페이스를 통해 사용자 영역 애플리케이션으로 상태 정보를 제공하기 위한 것이다. 그 의도는 시스템이 레귤레이터 출력을 동적으로 컨트롤하여 전력을 절약하고 배터리 수명을 연장할 수 있도록 하는 것이다. 이것은 전압 레귤레이터(전압 출력을 제어할 수 있는 경우)와 전류 싱크(전류 출력을 제어할 수 있는 경우)에 모두 적용된다.
자세한 내용은 opensource.wolfsonmicro.com/node/15(링크깨져 있음)를 참조한다.
이 프레임워크에서 대부분의 전원 작업은 다음의 통합된 API 호출로 수행할 수 있다 :
- regulator_get은 레귤레이터에 대한 레퍼런스를 조회하고 얻기 위한 통합된 API 호출이다 :
struct regulator *regulator_get(struct device *dev, const char *id);
- regulator_put은 레귤레이터 소스를 해제하기 위한 통합된 API 호출이다 :
void regulator_put(struct regulator *regulator, struct device *dev);
- regulator_enable은 레귤레이터 출력을 활성화하기 위한 통합된 API 호출이다 :
int regulator_enable(struct regulator *regulator);
- regulator_disable은 레귤레이터 출력을 비활성화하기 위한 통합된 API 호출이다 :
int regulator_disable(struct regulator *regulator);
- regulator_is_enabled은 레귤레이터 출력이 활성화되어 있는지 확인한다 :
int regulator_is_enabled(struct regulator *regulator);
- regulator_set_voltage은 레귤레이터 출력 전압을 설정하기 위한 통합된 API 호출이다 :
int regulator_set_voltage(struct regulator *regulator, int uV);
- regulator_get_voltage은 레귤레이터 출력 전압을 얻기 위한 통합된 API 호출이다 :
int regulator_get_voltage(struct regulator *regulator);
Linux Kernel 내부의 레귤레이터 core 소스 코드에서 더 많은 API와 세부 정보를 찾을 수 있다 :
drivers/regulator/core.c
2.5.2.6 Driver Architecture
다음 그림은 PMIC PF 레귤레이터 드라이버의 기본 아키텍처를 보여준다.
2.5.2.7 Driver Interface Details
PFUZE100 레귤레이터에 대한 액세스는 레귤레이터 core 드라이버의 API를 통해 제공된다.
PFUZE100 레귤레이터 드라이버는 다음 레귤레이터 컨트롤을 제공한다 :
- 일반 모드(최대 6개의 독립 레일)에서 4개의 buck switch 레귤레이터 : SW1AB, SW1C, SW2, SW3A, SW3B, SW4
- buck switch는 미리 특정 레지스터(PFUZE100_SWxSTANDBY)를 사용하여 standby 상태로 프로그램할 수 있다.
- 6개의 리니어 레귤레이터 : VGEN1, VGEN2, VGEN3, VGEN4, VGEN5, VGEN6
- i.MX 프로세서의 VSNVS 지원을 위한 1개의 LDO/Switch 제공
- DDR 메모리 레퍼런스 전압에 대한 1개의 저전류, 고정확도, 전압 레퍼런스
- USB OTG를 지원하는 1개의 Boost 레귤레이터
- PFUZE100의 대부분의 전원 레일은 하드웨어 설계에 따라 올바르게 프로그램되었다. 따라서 PFUZE100 레귤레이터를 사용하는 커널을 찾을 수 없다. PFUZE100 레귤레이터 드라이버는 PFUZE100 기본 값이 하드웨어 설계에 맞지 않을 경우 사용자가 자유롭게 사용할 수 있도록 이러한 레귤레이터를 구현했다.
2.5.2.8 Source Code Structure
PFUZE 레귤레이터 드라이버는 drivers/regulator 디렉토리에 있다 :
Table 13. PFUZE Driver Files
File | Description |
drivers/regulator/pfuze100-regulator.c | PFUZE100 레귤레이터 클라이언트 드라이버 구현 |
drivers/regulator/pf1550.c | PFUZE1550 레귤레이터 클라이언트 드라이버 구현 |
drivers/regulator/pf1550-regulator-rpmsg.c | PFUZE150 레귤레이터 RPMSG 코드 구현 |
PMIC와 관련된 보드 파일이 없다. standby 전압 설정등 일부 PFUZE 드라이버 코드가 U-Boot로 이동되었다. 일부 코드는 DTS 파일로 구현된다. Uboot 소스에서 PFUZE100와 디바이스 트리 dtsi 파일에서 pfuze를 검색한다. i.MX 6, i.MX 7은 arch/arm/boot/dts에 있고, i.MX 8M은 arch/arm64/boot/dts에 있다.
2.5.2.9 Menu Configuration Options
menu configuration에서 다음 모듈을 활성화한다 :
Device Drivers > Voltage and Current regulator support > Freescale PFUZE100/200/300 regulator driver
2.5.3 CPU Frequency Scaling (CPUFREQ)
2.5.3.1 Introduction
CPU 주파수 조정(frequency scaling) 디바이스 드라이버는 CPU의 클록 속도를 즉시 변경할 수 있도록 해준다. CPU 주파수가 변경되면, 필요한 전원 공급 장치의 전압이 DTS(device tree script)에 정의된 전압 값으로 변경된다. 이 방법은 전력 소비(따라서 배터리 전력 절약)를 줄일 수 있기 때문에 클록 속도가 감소함에 따라 CPU는 더 적은 전력을 사용한다.
2.5.3.2 Software Operation
CPUFREQ 디바이스 드라이버는 CPU 주파수와 전압이 즉시 변경되도록 설계되었다.
주파수가 DTS에 정의되어 있지 않으면, CPUFREQ 드라이버는 어레이(array)에서 가장 가까운 주파수로 CPU 주파수를 변경한다. 전압이 레귤레이터 API를 사용하여 설정되는 동안, 주파수는 클록 프레임워크 API를 사용하여 처리된다. 어레이에서 CPU 주파수는 부팅시 CPU 주파수를 기반으로 한다. 수동으로 변경할 수 없는 경우 Interactive CPU frequency governor가 사용된다. CPU 주파수를 수동으로 변경하려면, 사용자 영역 CPU 주파수 거버너를 사용할 수 있다. 기본으로 Conservative CPU frequency governor가 사용된다.
드라이버에 구현된 함수에 대한 자세한 내용은 API 문서를 참조한다.
CPU 주파수를 KHz(첫 번재 열의 값이 주파수 값) 단위로 변경할 수 있는 값을 보려면 다음 명령을 사용한다 :
cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
위의 명령을 사용하여 지정된 값(예 : 792MHz)으로 CPU 주파수를 변경하려면 다음 명령을 사용한다 :
echo 792000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
주파수 792000은 792Mhz의 KHz 단위이다.
최대 주파수는 다음 명령을 사용하여 확인할 수 있다 :
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
다음 명령을 사용하여 KHz 단위의 현재 CPU 주파수를 확인한다 :
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
다음 명령을 사용하여 사용 가능한 governor를 확인한다 :
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
다음 명령을 사용하여 Interactive CPU frequency governor로 변경한다 :
echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2.5.3.3 Source Code Structure
아래 테이블은 다음 디렉토리에서 사용할 수 있는 소스 파일과 헤더를 보여준다.
Table 14. CPUFREQ Driver Files
File | Description |
drivers/cpufreq/imx6q-cpufreq.c | i.MX 6 CPUFREQ 함수 |
drivers/cpufreq/imx7-cpufreq.c | i.MX 7 CPUFREQ 함수 |
drivers/cpufreq/imx7ulp-cpufreq.c | i.MX 7ULP CPUFREQ 함수 |
drivers/cpufreq/imx8-cpufreq.c | i.MX 8, i.MX 8X CPUFREQ 함수 |
drivers/cpufreq/imx8mq-cpufreq.c | i.MX 8M CPUFREQ 함수 |
CPU 주파수 작업 지점 설정은 i.MX 6, i.MX 7의 경우 arch/arm/boot/dts에 i.MX 8, i.MX 8X, i.MX 8M의 경우 arch/arm64/boot/dts에서 SoC에 해당하는 dtsi 파일을 참조한다.
2.5.3.4 Menu Configuration Options
이 모듈에 대해 다음 Linux Kernel 구성이 제공된다 :
- CONFIG_CPU_FREQ : menuconfig에서 이 옵션은 다음 위치에 있다 :
ㅡ CPU Power Management > CPU Frequency scaling - 다음 옵션을 선택할 수 있다 :
ㅡ CPU Frequency scaling
ㅡ CPU frequency translation statistics
ㅡ Default CPU frequency governor (conservative)(interactive)
ㅡ Performance governor
ㅡ Powersave governor
ㅡ Userspace governor for userspace frequency scaling
ㅡ Interactive CPU frequency policy governor
ㅡ Conservative CPU frequency governor
ㅡ Schedutil CPU frequency governor
ㅡ CPU frequency driver for i.MX CPUs
2.5.4 Dynamic Bus Frequency
2.5.4.1 Introduction
전력 소비를 개선하기 위해, Bus Frequency 드라이버는 i.MX 6, i.MX 7, i.MX 8M 제품군에서 다양한 시스템 주파수를 동적으로 관리한다.
주파수 변경은 상위 레이어에 투명하고 드라이버나 미들웨어의 개입이 필요하지 않다. 주변 디바이스의 활동과 CPU 로드에 따라 Bus Frequency 드라이버는 DDR 주파수를 24MHz와 최대 주파수 사이에서 변경한다. 마찬가지로 AHB 주파수는 24MHz와 최대 주파수 사이에서 변경된다.
2.5.4.2 Operation
Bus Frequency 드라이버는 Linux BSP의 전원 관리 모듈의 일부이다. 이 드라이버의 주요 목적은 주변 디바이스의 활동과 CPU 로드를 기반으로 시스템 클록(예 : AHB, DDR, AXI 등)의 다양한 동작 주파수를 조정하는 것이다.
2.5.4.3 Software Operation
Bus Frequency의 작동은 디바이스 드라이버의 요청과 해제(release)에 따라 다르다. 드라이버는 원하는 bus setpoint(설정값)으로 요청이나 해제하기 위해 Bus Frequency API를 호출할 수 있다. Bus Frequency는 현재 요청한 주변 디바이스를 기반으로 가장 높은 주파수 setpoint로 시스템 주파수를 설정한다.
Bus Frequency 드라이버를 활성화하려면 다음 명령을 사용한다 :
echo 1 > /sys/bus/platform/drivers/imx_busfreq/soc\:busfreq/enable
Bus Frequency 드라이버를 비활성화하려면 다음 명령을 사용한다 :
echo 0 > /sys/bus/platform/drivers/imx_busfreq/soc\:busfreq/enable
Arm Cortex-M4 프로세서가 Arm Cortex-A 프로세서와 함께 작동하면, Arm Cortex-M4 프로세서도 작동을 위해 높은 setpoint의 Bus Frequency를 요청이나 해제한다. 이것은 Arm Cortex-A 프로세서가 고속 디바이스 중 하나로 Arm Cortex-M4를 취급한다는 것을 의미한다.
설정값(setpoint) 모드는 다음을 수행한다 :
- High Frequency Setpoint 모드는 우수한 성능을 위해 더 높은 주파수가 필요한 대부분의 주변 디바이스가 활성화되어 있을 때 사용된다. 예로 비디오 재생과 그래픽 처리가 있다.
- Audio Playback Setpoint 모드는 오디오 재생 모드에서 사용된다.
- Low Frequency Setpoint 모드는 시스템이 사용자 입력을 기다리는 유휴 상태일 때 사용된다(디스플레이 꺼짐). i.MX 8M에서 이 모드는 주변 디바이스가 High 모드나 오디오 모드를 요청하지 않을 때 사용된다.
다음 테이블은 각 제품군에 대한 소프트웨어 설정값을 설명한다.
Table 15. Bus Frequency Set Points
SoC | Setpoints |
i.MX 6 |
|
i.MX 7Dual |
|
i.MX 8M |
|
2.5.4.4 Source Code Structure
다음 테이블에는 소스 파일과 헤더가 나와 있다.
Table 16. BusFrequency Driver Files
File | Description |
arch/arm/mach-imx/busfreq-imx.c | i.MX 6, i.MX 7 Bus Frequency 함수 |
include/linux/busfreq-imx.h | i.MX Bus Frequency API 정의 |
arch/arm/mach-imx/busfreq_ddr3.c | i.MX 6, i.MX 7 DDR3 Bus Frequency 함수 |
arch/arm/mach-imx/busfreq_lpddr2.c | i.MX 6, i.MX 7 LPDDR2 Bus Frequency 함수 |
arch/arm/mach-imx/lpddr2_freq_imx6.S | i.MX 6 LPDDR2 Bus Frequency 함수 |
arch/arm/mach-imx/lpddr2_freq_imx6q.S | i.MX 6 QuadPlus/Quad/Dual/Solo LPDDR2 Bus Frequency 함수 |
arch/arm/mach-imx/lpddr2_freq_imx6sll.S | i.MX 6 SLL LPDDR2 Bus Frequency 함수 |
arch/arm/mach-imx/lpddr2_freq_imx6sx.S | i.MX 6 SoloX LPDDR2 Bus Frequency 함수 |
arch/arm/mach-imx/lpddr3_freq_imx.S | i.MX 6, i.MX 7 LPDDR3 Bus Frequency 함수 |
arch/arm/mach-imx/ddr3_freq_imx6.S | i.MX 6 Bus Frequency 함수 |
arch/arm/mach-imx/ddr3_freq_imx6sx.S | i.MX 6 SoloX Bus Frequency 함수 |
arch/arm/mach-imx/ddr3_freq_imx7d.S | i.MX 7 Dual DDR3 Bus Frequency 함수 |
drivers/doc/imx/busfreq-imx8mq.c | i.MX 8M Bus Frequency 함수 |
Bus Frequency 모드는 i.MX 6와 i.MX 7의 경우 arch/arm/boot/dts, i.MX 8M의 경우 arch/arm64/boot/dts에 있는 SoC dtsi 파일에 정의되어 있다.
2.5.4.5 Menu Configuration Options
이 드라이버에 대한 구성 옵션은 없다. Bus Frequency 드라이버를 지원하는 SoC에서 기본으로 Bus Frequency 드라이버는 포함되고 활성화된다.
2.5.5 Battery Charging
2.5.5.1 Introduction
Battery Charging(배터리 충전)은 i.MX 6 SABRE SD 보드의 max8903-charger에서 지원된다.
2.5.5.2 Software Operation
None(없음).
2.5.5.3 Source Code Structure
배터리 충전 소스는 drivers/power/supply/sabresd_battery.c가 기반으로 한다.
2.5.5.4 Menu Configuration Options
menu configuration에서 다음 모듈을 활성화 한다 :
Device Drivers > Power supply class support > Sabresd Board Battery DC-DC Charger for USB and Adapter Power
'NXP i.MX SoC Family > i.MX Linux Reference Manual' 카테고리의 다른 글
i.MX Linux Reference Manual - System - Pulse-Width Modulator (PWM) (0) | 2022.06.16 |
---|---|
i.MX Linux Reference Manual - System - OProfile (0) | 2022.06.15 |
i.MX Linux Reference Manual - System - Anatop Regulator Driver (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 |