요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
ST Ericsson abx500 pinmux controller
Required properties:
- compatible: "stericsson,ab8500-gpio", "stericsson,ab8540-gpio",
"stericsson,ab8505-gpio", "stericsson,ab9540-gpio",
Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node".
ST Ericsson's pin configuration nodes use the generic pin multiplexing
and pin configuration bindings, see pinctrl-bindings.txt
Example board file extract:
&pinctrl_abx500 {
pinctrl-names = "default";
pinctrl-0 = <&sysclkreq2_default_mode>, <&sysclkreq3_default_mode>, <&gpio3_default_mode>, <&sysclkreq6_default_mode>, <&pwmout1_default_mode>, <&pwmout2_default_mode>, <&pwmout3_default_mode>, <&adi1_default_mode>, <&dmic12_default_mode>, <&dmic34_default_mode>, <&dmic56_default_mode>, <&sysclkreq5_default_mode>, <&batremn_default_mode>, <&service_default_mode>, <&pwrctrl0_default_mode>, <&pwrctrl1_default_mode>, <&pwmextvibra1_default_mode>, <&pwmextvibra2_default_mode>, <&gpio51_default_mode>, <&gpio52_default_mode>, <&gpio53_default_mode>, <&gpio54_default_mode>, <&pdmclkdat_default_mode>;
sysclkreq2 {
sysclkreq2_default_mode: sysclkreq2_default {
default_mux {
function = "sysclkreq";
groups = "sysclkreq2_d_1";
};
default_cfg {
pins = "GPIO1";
bias-disable;
};
};
};
sysclkreq3 {
sysclkreq3_default_mode: sysclkreq3_default {
default_mux {
function = "sysclkreq";
groups = "sysclkreq3_d_1";
};
default_cfg {
pins = "GPIO2";
output-low;
};
};
};
gpio3 {
gpio3_default_mode: gpio3_default {
default_mux {
function = "gpio";
groups = "gpio3_a_1";
};
default_cfg {
pins = "GPIO3";
output-low;
};
};
};
sysclkreq6 {
sysclkreq6_default_mode: sysclkreq6_default {
default_mux {
function = "sysclkreq";
groups = "sysclkreq6_d_1";
};
default_cfg {
pins = "GPIO4";
bias-disable;
};
};
};
pwmout1 {
pwmout1_default_mode: pwmout1_default {
default_mux {
function = "pwmout";
groups = "pwmout1_d_1";
};
default_cfg {
pins = "GPIO14";
output-low;
};
};
};
pwmout2 {
pwmout2_default_mode: pwmout2_default {
pwmout2_default_mux {
function = "pwmout";
groups = "pwmout2_d_1";
};
pwmout2_default_cfg {
pins = "GPIO15";
output-low;
};
};
};
pwmout3 {
pwmout3_default_mode: pwmout3_default {
pwmout3_default_mux {
function = "pwmout";
groups = "pwmout3_d_1";
};
pwmout3_default_cfg {
pins = "GPIO16";
output-low;
};
};
};
adi1 {
adi1_default_mode: adi1_default {
adi1_default_mux {
function = "adi1";
groups = "adi1_d_1";
};
adi1_default_cfg1 {
pins = "GPIO17","GPIO19","GPIO20";
bias-disable;
};
adi1_default_cfg2 {
pins = "GPIO18";
output-low;
};
};
};
dmic12 {
dmic12_default_mode: dmic12_default {
dmic12_default_mux {
function = "dmic";
groups = "dmic12_d_1";
};
dmic12_default_cfg1 {
pins = "GPIO27";
output-low;
};
dmic12_default_cfg2 {
pins = "GPIO28";
bias-disable;
};
};
};
dmic34 {
dmic34_default_mode: dmic34_default {
dmic34_default_mux {
function = "dmic";
groups = "dmic34_d_1";
};
dmic34_default_cfg1 {
pins = "GPIO29";
output-low;
};
dmic34_default_cfg2 {
pins = "GPIO30";
bias-disable;{
};
};
};
dmic56 {
dmic56_default_mode: dmic56_default {
dmic56_default_mux {
function = "dmic";
groups = "dmic56_d_1";
};
dmic56_default_cfg1 {
pins = "GPIO31";
output-low;
};
dmic56_default_cfg2 {
pins = "GPIO32";
bias-disable;
};
};
};
sysclkreq5 {
sysclkreq5_default_mode: sysclkreq5_default {
sysclkreq5_default_mux {
function = "sysclkreq";
groups = "sysclkreq5_d_1";
};
sysclkreq5_default_cfg {
pins = "GPIO42";
output-low;
};
};
};
batremn {
batremn_default_mode: batremn_default {
batremn_default_mux {
function = "batremn";
groups = "batremn_d_1";
};
batremn_default_cfg {
pins = "GPIO43";
bias-disable;
};
};
};
service {
service_default_mode: service_default {
service_default_mux {
function = "service";
groups = "service_d_1";
};
service_default_cfg {
pins = "GPIO44";
bias-disable;
};
};
};
pwrctrl0 {
pwrctrl0_default_mux: pwrctrl0_mux {
pwrctrl0_default_mux {
function = "pwrctrl";
groups = "pwrctrl0_d_1";
};
};
pwrctrl0_default_mode: pwrctrl0_default {
pwrctrl0_default_cfg {
pins = "GPIO45";
bias-disable;
};
};
};
pwrctrl1 {
pwrctrl1_default_mux: pwrctrl1_mux {
pwrctrl1_default_mux {
function = "pwrctrl";
groups = "pwrctrl1_d_1";
};
};
pwrctrl1_default_mode: pwrctrl1_default {
pwrctrl1_default_cfg {
pins = "GPIO46";
bias-disable;
};
};
};
pwmextvibra1 {
pwmextvibra1_default_mode: pwmextvibra1_default {
pwmextvibra1_default_mux {
function = "pwmextvibra";
groups = "pwmextvibra1_d_1";
};
pwmextvibra1_default_cfg {
pins = "GPIO47";
bias-disable;
};
};
};
pwmextvibra2 {
pwmextvibra2_default_mode: pwmextvibra2_default {
pwmextvibra2_default_mux {
function = "pwmextvibra";
groups = "pwmextvibra2_d_1";
};
pwmextvibra1_default_cfg {
pins = "GPIO48";
bias-disable;
};
};
};
gpio51 {
gpio51_default_mode: gpio51_default {
gpio51_default_mux {
function = "gpio";
groups = "gpio51_a_1";
};
gpio51_default_cfg {
pins = "GPIO51";
output-low;
};
};
};
gpio52 {
gpio52_default_mode: gpio52_default {
gpio52_default_mux {
function = "gpio";
groups = "gpio52_a_1";
};
gpio52_default_cfg {
pins = "GPIO52";
bias-pull-down;
};
};
};
gpio53 {
gpio53_default_mode: gpio53_default {
gpio53_default_mux {
function = "gpio";
groups = "gpio53_a_1";
};
gpio53_default_cfg {
pins = "GPIO53";
bias-pull-down;
};
};
};
gpio54 {
gpio54_default_mode: gpio54_default {
gpio54_default_mux {
function = "gpio";
groups = "gpio54_a_1";
};
gpio54_default_cfg {
pins = "GPIO54";
output-low;
};
};
};
pdmclkdat {
pdmclkdat_default_mode: pdmclkdat_default {
pdmclkdat_default_mux {
function = "pdm";
groups = "pdmclkdat_d_1";
};
pdmclkdat_default_cfg {
pins = "GPIO55", "GPIO56";
bias-disable;
};
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
ABx500 compatible과 공통 binding
1-13ST-Ericsson ABx500 pinmux controller의 필수 `compatible`은 `stericsson,ab8500-gpio`, `stericsson,ab8540-gpio`, `stericsson,ab8505-gpio`, `stericsson,ab9540-gpio` 중 하나입니다.
Client device가 사용하는 공통 pinctrl binding과 "pin configuration node"의 의미는 이 directory의 `pinctrl-bindings.txt`를 참조합니다. ST-Ericsson pin configuration node는 같은 문서에 정의된 generic pin multiplexing 및 pin configuration binding을 사용합니다.
Board 예제: clock request와 초기 GPIO
14-67Board file 예제는 `pinctrl_abx500`의 default state에 뒤에서 정의하는 모든 mode를 연결합니다. 먼저 GPIO1·2·4를 `sysclkreq` function으로 mux하고 GPIO3을 일반 GPIO로 둡니다. GPIO1과 GPIO4는 bias를 끄고 GPIO2와 GPIO3은 low output으로 설정합니다.
&pinctrl_abx500 {
pinctrl-names = "default";
pinctrl-0 = <&sysclkreq2_default_mode>, <&sysclkreq3_default_mode>, <&gpio3_default_mode>, <&sysclkreq6_default_mode>, <&pwmout1_default_mode>, <&pwmout2_default_mode>, <&pwmout3_default_mode>, <&adi1_default_mode>, <&dmic12_default_mode>, <&dmic34_default_mode>, <&dmic56_default_mode>, <&sysclkreq5_default_mode>, <&batremn_default_mode>, <&service_default_mode>, <&pwrctrl0_default_mode>, <&pwrctrl1_default_mode>, <&pwmextvibra1_default_mode>, <&pwmextvibra2_default_mode>, <&gpio51_default_mode>, <&gpio52_default_mode>, <&gpio53_default_mode>, <&gpio54_default_mode>, <&pdmclkdat_default_mode>;
sysclkreq2 {
sysclkreq2_default_mode: sysclkreq2_default {
default_mux {
function = "sysclkreq";
groups = "sysclkreq2_d_1";
};
default_cfg {
pins = "GPIO1";
bias-disable;
};
};
};
sysclkreq3 {
sysclkreq3_default_mode: sysclkreq3_default {
default_mux {
function = "sysclkreq";
groups = "sysclkreq3_d_1";
};
default_cfg {
pins = "GPIO2";
output-low;
};
};
};
gpio3 {
gpio3_default_mode: gpio3_default {
default_mux {
function = "gpio";
groups = "gpio3_a_1";
};
default_cfg {
pins = "GPIO3";
output-low;
};
};
};
sysclkreq6 {
sysclkreq6_default_mode: sysclkreq6_default {
default_mux {
function = "sysclkreq";
groups = "sysclkreq6_d_1";
};
default_cfg {
pins = "GPIO4";
bias-disable;
};
};
};
Board 예제: PWM output과 ADI1
68-120GPIO14·15·16을 각각 `pwmout1_d_1`, `pwmout2_d_1`, `pwmout3_d_1` group의 `pwmout` function으로 mux하고 low output으로 구성합니다. ADI1은 GPIO17·19·20의 bias를 끄고 GPIO18을 low output으로 설정합니다.
pwmout1 {
pwmout1_default_mode: pwmout1_default {
default_mux {
function = "pwmout";
groups = "pwmout1_d_1";
};
default_cfg {
pins = "GPIO14";
output-low;
};
};
};
pwmout2 {
pwmout2_default_mode: pwmout2_default {
pwmout2_default_mux {
function = "pwmout";
groups = "pwmout2_d_1";
};
pwmout2_default_cfg {
pins = "GPIO15";
output-low;
};
};
};
pwmout3 {
pwmout3_default_mode: pwmout3_default {
pwmout3_default_mux {
function = "pwmout";
groups = "pwmout3_d_1";
};
pwmout3_default_cfg {
pins = "GPIO16";
output-low;
};
};
};
adi1 {
adi1_default_mode: adi1_default {
adi1_default_mux {
function = "adi1";
groups = "adi1_d_1";
};
adi1_default_cfg1 {
pins = "GPIO17","GPIO19","GPIO20";
bias-disable;
};
adi1_default_cfg2 {
pins = "GPIO18";
output-low;
};
};
};
Board 예제: digital microphone
121-169DMIC12, DMIC34, DMIC56 group을 `dmic` function으로 mux합니다. 각 pair에서 GPIO27·29·31은 low output, GPIO28·30·32는 bias disabled로 구성됩니다.
원문 L149에는 `bias-disable;{`라는 여분의 `{`가 있습니다. 원문 코드 보존을 위해 아래 블록에서도 그대로 유지합니다.
dmic12 {
dmic12_default_mode: dmic12_default {
dmic12_default_mux {
function = "dmic";
groups = "dmic12_d_1";
};
dmic12_default_cfg1 {
pins = "GPIO27";
output-low;
};
dmic12_default_cfg2 {
pins = "GPIO28";
bias-disable;
};
};
};
dmic34 {
dmic34_default_mode: dmic34_default {
dmic34_default_mux {
function = "dmic";
groups = "dmic34_d_1";
};
dmic34_default_cfg1 {
pins = "GPIO29";
output-low;
};
dmic34_default_cfg2 {
pins = "GPIO30";
bias-disable;{
};
};
};
dmic56 {
dmic56_default_mode: dmic56_default {
dmic56_default_mux {
function = "dmic";
groups = "dmic56_d_1";
};
dmic56_default_cfg1 {
pins = "GPIO31";
output-low;
};
dmic56_default_cfg2 {
pins = "GPIO32";
bias-disable;
};
};
};
Board 예제: clock·battery·service·power control
170-233GPIO42를 `sysclkreq5_d_1`의 `sysclkreq`로 mux해 low output으로 구성합니다. GPIO43은 `batremn`, GPIO44는 `service` function으로 mux하고 둘 다 bias를 끕니다.
GPIO45와 GPIO46은 각각 `pwrctrl0_d_1`, `pwrctrl1_d_1`의 `pwrctrl` function으로 mux합니다. 이 예제는 mux node와 configuration mode node를 나누고 두 pin의 bias를 비활성화합니다.
sysclkreq5 {
sysclkreq5_default_mode: sysclkreq5_default {
sysclkreq5_default_mux {
function = "sysclkreq";
groups = "sysclkreq5_d_1";
};
sysclkreq5_default_cfg {
pins = "GPIO42";
output-low;
};
};
};
batremn {
batremn_default_mode: batremn_default {
batremn_default_mux {
function = "batremn";
groups = "batremn_d_1";
};
batremn_default_cfg {
pins = "GPIO43";
bias-disable;
};
};
};
service {
service_default_mode: service_default {
service_default_mux {
function = "service";
groups = "service_d_1";
};
service_default_cfg {
pins = "GPIO44";
bias-disable;
};
};
};
pwrctrl0 {
pwrctrl0_default_mux: pwrctrl0_mux {
pwrctrl0_default_mux {
function = "pwrctrl";
groups = "pwrctrl0_d_1";
};
};
pwrctrl0_default_mode: pwrctrl0_default {
pwrctrl0_default_cfg {
pins = "GPIO45";
bias-disable;
};
};
};
pwrctrl1 {
pwrctrl1_default_mux: pwrctrl1_mux {
pwrctrl1_default_mux {
function = "pwrctrl";
groups = "pwrctrl1_d_1";
};
};
pwrctrl1_default_mode: pwrctrl1_default {
pwrctrl1_default_cfg {
pins = "GPIO46";
bias-disable;
};
};
};
Board 예제: vibra와 GPIO51~54
234-305GPIO47·48은 각각 외부 vibra PWM group의 `pwmextvibra` function으로 mux하고 bias를 끕니다. GPIO51·52·53·54는 일반 GPIO function이며 GPIO51과 GPIO54는 low output, GPIO52와 GPIO53은 pull-down으로 설정합니다.
pwmextvibra1 {
pwmextvibra1_default_mode: pwmextvibra1_default {
pwmextvibra1_default_mux {
function = "pwmextvibra";
groups = "pwmextvibra1_d_1";
};
pwmextvibra1_default_cfg {
pins = "GPIO47";
bias-disable;
};
};
};
pwmextvibra2 {
pwmextvibra2_default_mode: pwmextvibra2_default {
pwmextvibra2_default_mux {
function = "pwmextvibra";
groups = "pwmextvibra2_d_1";
};
pwmextvibra1_default_cfg {
pins = "GPIO48";
bias-disable;
};
};
};
gpio51 {
gpio51_default_mode: gpio51_default {
gpio51_default_mux {
function = "gpio";
groups = "gpio51_a_1";
};
gpio51_default_cfg {
pins = "GPIO51";
output-low;
};
};
};
gpio52 {
gpio52_default_mode: gpio52_default {
gpio52_default_mux {
function = "gpio";
groups = "gpio52_a_1";
};
gpio52_default_cfg {
pins = "GPIO52";
bias-pull-down;
};
};
};
gpio53 {
gpio53_default_mode: gpio53_default {
gpio53_default_mux {
function = "gpio";
groups = "gpio53_a_1";
};
gpio53_default_cfg {
pins = "GPIO53";
bias-pull-down;
};
};
};
gpio54 {
gpio54_default_mode: gpio54_default {
gpio54_default_mux {
function = "gpio";
groups = "gpio54_a_1";
};
gpio54_default_cfg {
pins = "GPIO54";
output-low;
};
};
};
Board 예제: PDM clock/data
306-318마지막으로 GPIO55와 GPIO56을 `pdmclkdat_d_1` group의 `pdm` function으로 mux하고 두 pin의 bias를 비활성화합니다.
pdmclkdat {
pdmclkdat_default_mode: pdmclkdat_default {
pdmclkdat_default_mux {
function = "pdm";
groups = "pdmclkdat_d_1";
};
pdmclkdat_default_cfg {
pins = "GPIO55", "GPIO56";
bias-disable;
};
};
};
};
요약과 해설
ste,abx500.txt:1-318Clock request, PWM, ADI, DMIC, power control, vibra, GPIO, PDM까지 default state 구성을 기능별로 나누어 읽습니다.