요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Nuvoton NPCM7XX Pin Controllers
The Nuvoton BMC NPCM7XX Pin Controller multi-function routed through
the multiplexing block, Each pin supports GPIO functionality (GPIOx)
and multiple functions that directly connect the pin to different
hardware blocks.
Required properties:
- #address-cells : should be 1.
- #size-cells : should be 1.
- compatible : "nuvoton,npcm750-pinctrl" for Poleg NPCM7XX.
- ranges : defines mapping ranges between pin controller node (parent)
to GPIO bank node (children).
=== GPIO Bank Subnode ===
The NPCM7XX has 8 GPIO Banks each GPIO bank supports 32 GPIO.
Required GPIO Bank subnode-properties:
- reg : specifies physical base address and size of the GPIO
bank registers.
- gpio-controller : Marks the device node as a GPIO controller.
- #gpio-cells : Must be <2>. The first cell is the gpio pin number
and the second cell is used for optional parameters.
- interrupts : contain the GPIO bank interrupt with flags for falling edge.
- gpio-ranges : defines the range of pins managed by the GPIO bank controller.
For example, GPIO bank subnodes like the following:
gpio0: gpio@f0010000 {
gpio-controller;
#gpio-cells = <2>;
reg = <0x0 0x80>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
gpio-ranges = <&pinctrl 0 0 32>;
};
=== Pin Mux Subnode ===
- pin: A string containing the name of the pin
An array of strings, each string containing the name of a pin.
These pin are used for selecting pin configuration.
The following are the list of pins available:
"GPIO0/IOX1DI", "GPIO1/IOX1LD", "GPIO2/IOX1CK", "GPIO3/IOX1D0",
"GPIO4/IOX2DI/SMB1DSDA", "GPIO5/IOX2LD/SMB1DSCL", "GPIO6/IOX2CK/SMB2DSDA",
"GPIO7/IOX2D0/SMB2DSCL", "GPIO8/LKGPO1", "GPIO9/LKGPO2", "GPIO10/IOXHLD",
"GPIO11/IOXHCK", "GPIO12/GSPICK/SMB5BSCL", "GPIO13/GSPIDO/SMB5BSDA",
"GPIO14/GSPIDI/SMB5CSCL", "GPIO15/GSPICS/SMB5CSDA", "GPIO16/LKGPO0",
"GPIO17/PSPI2DI/SMB4DEN","GPIO18/PSPI2D0/SMB4BSDA", "GPIO19/PSPI2CK/SMB4BSCL",
"GPIO20/SMB4CSDA/SMB15SDA", "GPIO21/SMB4CSCL/SMB15SCL", "GPIO22/SMB4DSDA/SMB14SDA",
"GPIO23/SMB4DSCL/SMB14SCL", "GPIO24/IOXHDO", "GPIO25/IOXHDI", "GPIO26/SMB5SDA",
"GPIO27/SMB5SCL", "GPIO28/SMB4SDA", "GPIO29/SMB4SCL", "GPIO30/SMB3SDA",
"GPIO31/SMB3SCL", "GPIO32/nSPI0CS1","SPI0D2", "SPI0D3", "GPIO37/SMB3CSDA",
"GPIO38/SMB3CSCL", "GPIO39/SMB3BSDA", "GPIO40/SMB3BSCL", "GPIO41/BSPRXD",
"GPO42/BSPTXD/STRAP11", "GPIO43/RXD1/JTMS2/BU1RXD", "GPIO44/nCTS1/JTDI2/BU1CTS",
"GPIO45/nDCD1/JTDO2", "GPIO46/nDSR1/JTCK2", "GPIO47/nRI1/JCP_RDY2",
"GPIO48/TXD2/BSPTXD", "GPIO49/RXD2/BSPRXD", "GPIO50/nCTS2", "GPO51/nRTS2/STRAP2",
"GPIO52/nDCD2", "GPO53/nDTR2_BOUT2/STRAP1", "GPIO54/nDSR2", "GPIO55/nRI2",
"GPIO56/R1RXERR", "GPIO57/R1MDC", "GPIO58/R1MDIO", "GPIO59/SMB3DSDA",
"GPIO60/SMB3DSCL", "GPO61/nDTR1_BOUT1/STRAP6", "GPO62/nRTST1/STRAP5",
"GPO63/TXD1/STRAP4", "GPIO64/FANIN0", "GPIO65/FANIN1", "GPIO66/FANIN2",
"GPIO67/FANIN3", "GPIO68/FANIN4", "GPIO69/FANIN5", "GPIO70/FANIN6", "GPIO71/FANIN7",
"GPIO72/FANIN8", "GPIO73/FANIN9", "GPIO74/FANIN10", "GPIO75/FANIN11",
"GPIO76/FANIN12", "GPIO77/FANIN13","GPIO78/FANIN14", "GPIO79/FANIN15",
"GPIO80/PWM0", "GPIO81/PWM1", "GPIO82/PWM2", "GPIO83/PWM3", "GPIO84/R2TXD0",
"GPIO85/R2TXD1", "GPIO86/R2TXEN", "GPIO87/R2RXD0", "GPIO88/R2RXD1", "GPIO89/R2CRSDV",
"GPIO90/R2RXERR", "GPIO91/R2MDC", "GPIO92/R2MDIO", "GPIO93/GA20/SMB5DSCL",
"GPIO94/nKBRST/SMB5DSDA", "GPIO95/nLRESET/nESPIRST", "GPIO96/RG1TXD0",
"GPIO97/RG1TXD1", "GPIO98/RG1TXD2", "GPIO99/RG1TXD3","GPIO100/RG1TXC",
"GPIO101/RG1TXCTL", "GPIO102/RG1RXD0", "GPIO103/RG1RXD1", "GPIO104/RG1RXD2",
"GPIO105/RG1RXD3", "GPIO106/RG1RXC", "GPIO107/RG1RXCTL", "GPIO108/RG1MDC",
"GPIO109/RG1MDIO", "GPIO110/RG2TXD0/DDRV0", "GPIO111/RG2TXD1/DDRV1",
"GPIO112/RG2TXD2/DDRV2", "GPIO113/RG2TXD3/DDRV3", "GPIO114/SMB0SCL",
"GPIO115/SMB0SDA", "GPIO116/SMB1SCL", "GPIO117/SMB1SDA", "GPIO118/SMB2SCL",
"GPIO119/SMB2SDA", "GPIO120/SMB2CSDA", "GPIO121/SMB2CSCL", "GPIO122/SMB2BSDA",
"GPIO123/SMB2BSCL", "GPIO124/SMB1CSDA", "GPIO125/SMB1CSCL","GPIO126/SMB1BSDA",
"GPIO127/SMB1BSCL", "GPIO128/SMB8SCL", "GPIO129/SMB8SDA", "GPIO130/SMB9SCL",
"GPIO131/SMB9SDA", "GPIO132/SMB10SCL", "GPIO133/SMB10SDA","GPIO134/SMB11SCL",
"GPIO135/SMB11SDA", "GPIO136/SD1DT0", "GPIO137/SD1DT1", "GPIO138/SD1DT2",
"GPIO139/SD1DT3", "GPIO140/SD1CLK", "GPIO141/SD1WP", "GPIO142/SD1CMD",
"GPIO143/SD1CD/SD1PWR", "GPIO144/PWM4", "GPIO145/PWM5", "GPIO146/PWM6",
"GPIO147/PWM7", "GPIO148/MMCDT4", "GPIO149/MMCDT5", "GPIO150/MMCDT6",
"GPIO151/MMCDT7", "GPIO152/MMCCLK", "GPIO153/MMCWP", "GPIO154/MMCCMD",
"GPIO155/nMMCCD/nMMCRST", "GPIO156/MMCDT0", "GPIO157/MMCDT1", "GPIO158/MMCDT2",
"GPIO159/MMCDT3", "GPIO160/CLKOUT/RNGOSCOUT", "GPIO161/nLFRAME/nESPICS",
"GPIO162/SERIRQ", "GPIO163/LCLK/ESPICLK", "GPIO164/LAD0/ESPI_IO0",
"GPIO165/LAD1/ESPI_IO1", "GPIO166/LAD2/ESPI_IO2", "GPIO167/LAD3/ESPI_IO3",
"GPIO168/nCLKRUN/nESPIALERT", "GPIO169/nSCIPME", "GPIO170/nSMI", "GPIO171/SMB6SCL",
"GPIO172/SMB6SDA", "GPIO173/SMB7SCL", "GPIO174/SMB7SDA", "GPIO175/PSPI1CK/FANIN19",
"GPIO176/PSPI1DO/FANIN18", "GPIO177/PSPI1DI/FANIN17", "GPIO178/R1TXD0",
"GPIO179/R1TXD1", "GPIO180/R1TXEN", "GPIO181/R1RXD0", "GPIO182/R1RXD1",
"GPIO183/SPI3CK", "GPO184/SPI3D0/STRAP9", "GPO185/SPI3D1/STRAP10",
"GPIO186/nSPI3CS0", "GPIO187/nSPI3CS1", "GPIO188/SPI3D2/nSPI3CS2",
"GPIO189/SPI3D3/nSPI3CS3", "GPIO190/nPRD_SMI", "GPIO191", "GPIO192", "GPIO193/R1CRSDV",
"GPIO194/SMB0BSCL", "GPIO195/SMB0BSDA", "GPIO196/SMB0CSCL", "GPIO197/SMB0DEN",
"GPIO198/SMB0DSDA", "GPIO199/SMB0DSCL", "GPIO200/R2CK", "GPIO201/R1CK",
"GPIO202/SMB0CSDA", "GPIO203/FANIN16", "GPIO204/DDC2SCL", "GPIO205/DDC2SDA",
"GPIO206/HSYNC2", "GPIO207/VSYNC2", "GPIO208/RG2TXC/DVCK", "GPIO209/RG2TXCTL/DDRV4",
"GPIO210/RG2RXD0/DDRV5", "GPIO211/RG2RXD1/DDRV6", "GPIO212/RG2RXD2/DDRV7",
"GPIO213/RG2RXD3/DDRV8", "GPIO214/RG2RXC/DDRV9", "GPIO215/RG2RXCTL/DDRV10",
"GPIO216/RG2MDC/DDRV11", "GPIO217/RG2MDIO/DVHSYNC", "GPIO218/nWDO1",
"GPIO219/nWDO2", "GPIO220/SMB12SCL", "GPIO221/SMB12SDA", "GPIO222/SMB13SCL",
"GPIO223/SMB13SDA", "GPIO224/SPIXCK", "GPO225/SPIXD0/STRAP12", "GPO226/SPIXD1/STRAP13",
"GPIO227/nSPIXCS0", "GPIO228/nSPIXCS1", "GPO229/SPIXD2/STRAP3", "GPIO230/SPIXD3",
"GPIO231/nCLKREQ", "GPI255/DACOSEL"
Optional Properties:
bias-disable, bias-pull-down, bias-pull-up, input-enable,
input-disable, output-high, output-low, drive-push-pull,
drive-open-drain, input-debounce, slew-rate, drive-strength
slew-rate valid arguments are:
<0> - slow
<1> - fast
drive-strength valid arguments are:
<2> - 2mA
<4> - 4mA
<8> - 8mA
<12> - 12mA
<16> - 16mA
<24> - 24mA
For example, pinctrl might have pinmux subnodes like the following:
gpio0_iox1d1_pin: gpio0-iox1d1-pin {
pins = "GPIO0/IOX1DI";
output-high;
};
gpio0_iox1ck_pin: gpio0-iox1ck-pin {
pins = "GPIO2/IOX1CK";
output_high;
};
=== Pin Group Subnode ===
Required pin group subnode-properties:
- groups : A string containing the name of the group to mux.
- function: A string containing the name of the function to mux to the
group.
The following are the list of the available groups and functions :
smb0, smb0b, smb0c, smb0d, smb0den, smb1, smb1b, smb1c, smb1d,
smb2, smb2b, smb2c, smb2d, smb3, smb3b, smb3c, smb3d, smb4, smb4b,
smb4c, smb4d, smb4den, smb5, smb5b, smb5c, smb5d, ga20kbc, smb6,
smb7, smb8, smb9, smb10, smb11, smb12, smb13, smb14, smb15, fanin0,
fanin1, fanin2, fanin3, fanin4, fanin5, fanin6, fanin7, fanin8,
fanin9, fanin10, fanin11 fanin12 fanin13, fanin14, fanin15, faninx,
pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, rg1, rg1mdio, rg2,
rg2mdio, ddr, uart1, uart2, bmcuart0a, bmcuart0b, bmcuart1, iox1,
iox2, ioxh, gspi, mmc, mmcwp, mmccd, mmcrst, mmc8, r1, r1err, r1md,
r2, r2err, r2md, sd1, sd1pwr, wdog1, wdog2, scipme, sci, serirq,
jtag2, spix, spixcs1, pspi1, pspi2, ddc, clkreq, clkout, spi3, spi3cs1,
spi3quad, spi3cs2, spi3cs3, spi0cs1, lpc, lpcclk, espi, lkgpo0, lkgpo1,
lkgpo2, nprd_smi
For example, pinctrl might have group subnodes like the following:
r1err_pins: r1err-pins {
groups = "r1err";
function = "r1err";
};
r1md_pins: r1md-pins {
groups = "r1md";
function = "r1md";
};
r1_pins: r1-pins {
groups = "r1";
function = "r1";
};
Examples
========
pinctrl: pinctrl@f0800000 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "nuvoton,npcm750-pinctrl";
ranges = <0 0xf0010000 0x8000>;
gpio0: gpio@f0010000 {
gpio-controller;
#gpio-cells = <2>;
reg = <0x0 0x80>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
gpio-ranges = <&pinctrl 0 0 32>;
};
....
gpio7: gpio@f0017000 {
gpio-controller;
#gpio-cells = <2>;
reg = <0x7000 0x80>;
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
gpio-ranges = <&pinctrl 0 224 32>;
};
gpio0_iox1d1_pin: gpio0-iox1d1-pin {
pins = "GPIO0/IOX1DI";
output-high;
};
iox1_pins: iox1-pins {
groups = "iox1";
function = "iox1";
};
iox2_pins: iox2-pins {
groups = "iox2";
function = "iox2";
};
....
clkreq_pins: clkreq-pins {
groups = "clkreq";
function = "clkreq";
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
NPCM7XX pin controller
1-14Nuvoton BMC NPCM7XX pin controller는 multiplexing block을 통해 여러 function을 route합니다. 각 pin은 GPIO function과 서로 다른 hardware block에 직접 연결되는 복수의 function을 지원합니다.
필수 속성은 값이 1인 `#address-cells`와 `#size-cells`, Poleg NPCM7XX용 `compatible = "nuvoton,npcm750-pinctrl"`, parent pin controller와 child GPIO bank 사이의 mapping range를 정의하는 `ranges`입니다.
GPIO bank subnode
15-36NPCM7XX에는 8개 GPIO bank가 있고 각 bank는 GPIO 32개를 지원합니다. 각 subnode에는 register base와 size를 지정하는 `reg`, `gpio-controller`, 값이 2인 `#gpio-cells`, falling-edge flag를 포함한 bank `interrupts`, bank가 관리하는 pin 범위인 `gpio-ranges`가 필요합니다.
두 GPIO cell 가운데 첫 cell은 GPIO pin 번호이고 두 번째 cell은 선택적 parameter에 사용됩니다.
gpio0: gpio@f0010000 {
gpio-controller;
#gpio-cells = <2>;
reg = <0x0 0x80>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
gpio-ranges = <&pinctrl 0 0 32>;
};
Pin mux subnode와 전체 pin 목록
37-106`pin`은 pin 이름 문자열 또는 여러 pin 이름의 문자열 배열이며, 이 pin들이 pin configuration 선택에 사용됩니다. 아래 표는 원문에 열거된 pin 이름 전체를 순서대로 보존합니다.
| Index | Pin name |
|---|---|
| 1 | GPIO0/IOX1DI |
| 2 | GPIO1/IOX1LD |
| 3 | GPIO2/IOX1CK |
| 4 | GPIO3/IOX1D0 |
| 5 | GPIO4/IOX2DI/SMB1DSDA |
| 6 | GPIO5/IOX2LD/SMB1DSCL |
| 7 | GPIO6/IOX2CK/SMB2DSDA |
| 8 | GPIO7/IOX2D0/SMB2DSCL |
| 9 | GPIO8/LKGPO1 |
| 10 | GPIO9/LKGPO2 |
| 11 | GPIO10/IOXHLD |
| 12 | GPIO11/IOXHCK |
| 13 | GPIO12/GSPICK/SMB5BSCL |
| 14 | GPIO13/GSPIDO/SMB5BSDA |
| 15 | GPIO14/GSPIDI/SMB5CSCL |
| 16 | GPIO15/GSPICS/SMB5CSDA |
| 17 | GPIO16/LKGPO0 |
| 18 | GPIO17/PSPI2DI/SMB4DEN |
| 19 | GPIO18/PSPI2D0/SMB4BSDA |
| 20 | GPIO19/PSPI2CK/SMB4BSCL |
| 21 | GPIO20/SMB4CSDA/SMB15SDA |
| 22 | GPIO21/SMB4CSCL/SMB15SCL |
| 23 | GPIO22/SMB4DSDA/SMB14SDA |
| 24 | GPIO23/SMB4DSCL/SMB14SCL |
| 25 | GPIO24/IOXHDO |
| 26 | GPIO25/IOXHDI |
| 27 | GPIO26/SMB5SDA |
| 28 | GPIO27/SMB5SCL |
| 29 | GPIO28/SMB4SDA |
| 30 | GPIO29/SMB4SCL |
| 31 | GPIO30/SMB3SDA |
| 32 | GPIO31/SMB3SCL |
| 33 | GPIO32/nSPI0CS1 |
| 34 | SPI0D2 |
| 35 | SPI0D3 |
| 36 | GPIO37/SMB3CSDA |
| 37 | GPIO38/SMB3CSCL |
| 38 | GPIO39/SMB3BSDA |
| 39 | GPIO40/SMB3BSCL |
| 40 | GPIO41/BSPRXD |
| 41 | GPO42/BSPTXD/STRAP11 |
| 42 | GPIO43/RXD1/JTMS2/BU1RXD |
| 43 | GPIO44/nCTS1/JTDI2/BU1CTS |
| 44 | GPIO45/nDCD1/JTDO2 |
| 45 | GPIO46/nDSR1/JTCK2 |
| 46 | GPIO47/nRI1/JCP_RDY2 |
| 47 | GPIO48/TXD2/BSPTXD |
| 48 | GPIO49/RXD2/BSPRXD |
| 49 | GPIO50/nCTS2 |
| 50 | GPO51/nRTS2/STRAP2 |
| 51 | GPIO52/nDCD2 |
| 52 | GPO53/nDTR2_BOUT2/STRAP1 |
| 53 | GPIO54/nDSR2 |
| 54 | GPIO55/nRI2 |
| 55 | GPIO56/R1RXERR |
| 56 | GPIO57/R1MDC |
| 57 | GPIO58/R1MDIO |
| 58 | GPIO59/SMB3DSDA |
| 59 | GPIO60/SMB3DSCL |
| 60 | GPO61/nDTR1_BOUT1/STRAP6 |
| 61 | GPO62/nRTST1/STRAP5 |
| 62 | GPO63/TXD1/STRAP4 |
| 63 | GPIO64/FANIN0 |
| 64 | GPIO65/FANIN1 |
| 65 | GPIO66/FANIN2 |
| 66 | GPIO67/FANIN3 |
| 67 | GPIO68/FANIN4 |
| 68 | GPIO69/FANIN5 |
| 69 | GPIO70/FANIN6 |
| 70 | GPIO71/FANIN7 |
| 71 | GPIO72/FANIN8 |
| 72 | GPIO73/FANIN9 |
| 73 | GPIO74/FANIN10 |
| 74 | GPIO75/FANIN11 |
| 75 | GPIO76/FANIN12 |
| 76 | GPIO77/FANIN13 |
| 77 | GPIO78/FANIN14 |
| 78 | GPIO79/FANIN15 |
| 79 | GPIO80/PWM0 |
| 80 | GPIO81/PWM1 |
| 81 | GPIO82/PWM2 |
| 82 | GPIO83/PWM3 |
| 83 | GPIO84/R2TXD0 |
| 84 | GPIO85/R2TXD1 |
| 85 | GPIO86/R2TXEN |
| 86 | GPIO87/R2RXD0 |
| 87 | GPIO88/R2RXD1 |
| 88 | GPIO89/R2CRSDV |
| 89 | GPIO90/R2RXERR |
| 90 | GPIO91/R2MDC |
| 91 | GPIO92/R2MDIO |
| 92 | GPIO93/GA20/SMB5DSCL |
| 93 | GPIO94/nKBRST/SMB5DSDA |
| 94 | GPIO95/nLRESET/nESPIRST |
| 95 | GPIO96/RG1TXD0 |
| 96 | GPIO97/RG1TXD1 |
| 97 | GPIO98/RG1TXD2 |
| 98 | GPIO99/RG1TXD3 |
| 99 | GPIO100/RG1TXC |
| 100 | GPIO101/RG1TXCTL |
| 101 | GPIO102/RG1RXD0 |
| 102 | GPIO103/RG1RXD1 |
| 103 | GPIO104/RG1RXD2 |
| 104 | GPIO105/RG1RXD3 |
| 105 | GPIO106/RG1RXC |
| 106 | GPIO107/RG1RXCTL |
| 107 | GPIO108/RG1MDC |
| 108 | GPIO109/RG1MDIO |
| 109 | GPIO110/RG2TXD0/DDRV0 |
| 110 | GPIO111/RG2TXD1/DDRV1 |
| 111 | GPIO112/RG2TXD2/DDRV2 |
| 112 | GPIO113/RG2TXD3/DDRV3 |
| 113 | GPIO114/SMB0SCL |
| 114 | GPIO115/SMB0SDA |
| 115 | GPIO116/SMB1SCL |
| 116 | GPIO117/SMB1SDA |
| 117 | GPIO118/SMB2SCL |
| 118 | GPIO119/SMB2SDA |
| 119 | GPIO120/SMB2CSDA |
| 120 | GPIO121/SMB2CSCL |
| 121 | GPIO122/SMB2BSDA |
| 122 | GPIO123/SMB2BSCL |
| 123 | GPIO124/SMB1CSDA |
| 124 | GPIO125/SMB1CSCL |
| 125 | GPIO126/SMB1BSDA |
| 126 | GPIO127/SMB1BSCL |
| 127 | GPIO128/SMB8SCL |
| 128 | GPIO129/SMB8SDA |
| 129 | GPIO130/SMB9SCL |
| 130 | GPIO131/SMB9SDA |
| 131 | GPIO132/SMB10SCL |
| 132 | GPIO133/SMB10SDA |
| 133 | GPIO134/SMB11SCL |
| 134 | GPIO135/SMB11SDA |
| 135 | GPIO136/SD1DT0 |
| 136 | GPIO137/SD1DT1 |
| 137 | GPIO138/SD1DT2 |
| 138 | GPIO139/SD1DT3 |
| 139 | GPIO140/SD1CLK |
| 140 | GPIO141/SD1WP |
| 141 | GPIO142/SD1CMD |
| 142 | GPIO143/SD1CD/SD1PWR |
| 143 | GPIO144/PWM4 |
| 144 | GPIO145/PWM5 |
| 145 | GPIO146/PWM6 |
| 146 | GPIO147/PWM7 |
| 147 | GPIO148/MMCDT4 |
| 148 | GPIO149/MMCDT5 |
| 149 | GPIO150/MMCDT6 |
| 150 | GPIO151/MMCDT7 |
| 151 | GPIO152/MMCCLK |
| 152 | GPIO153/MMCWP |
| 153 | GPIO154/MMCCMD |
| 154 | GPIO155/nMMCCD/nMMCRST |
| 155 | GPIO156/MMCDT0 |
| 156 | GPIO157/MMCDT1 |
| 157 | GPIO158/MMCDT2 |
| 158 | GPIO159/MMCDT3 |
| 159 | GPIO160/CLKOUT/RNGOSCOUT |
| 160 | GPIO161/nLFRAME/nESPICS |
| 161 | GPIO162/SERIRQ |
| 162 | GPIO163/LCLK/ESPICLK |
| 163 | GPIO164/LAD0/ESPI_IO0 |
| 164 | GPIO165/LAD1/ESPI_IO1 |
| 165 | GPIO166/LAD2/ESPI_IO2 |
| 166 | GPIO167/LAD3/ESPI_IO3 |
| 167 | GPIO168/nCLKRUN/nESPIALERT |
| 168 | GPIO169/nSCIPME |
| 169 | GPIO170/nSMI |
| 170 | GPIO171/SMB6SCL |
| 171 | GPIO172/SMB6SDA |
| 172 | GPIO173/SMB7SCL |
| 173 | GPIO174/SMB7SDA |
| 174 | GPIO175/PSPI1CK/FANIN19 |
| 175 | GPIO176/PSPI1DO/FANIN18 |
| 176 | GPIO177/PSPI1DI/FANIN17 |
| 177 | GPIO178/R1TXD0 |
| 178 | GPIO179/R1TXD1 |
| 179 | GPIO180/R1TXEN |
| 180 | GPIO181/R1RXD0 |
| 181 | GPIO182/R1RXD1 |
| 182 | GPIO183/SPI3CK |
| 183 | GPO184/SPI3D0/STRAP9 |
| 184 | GPO185/SPI3D1/STRAP10 |
| 185 | GPIO186/nSPI3CS0 |
| 186 | GPIO187/nSPI3CS1 |
| 187 | GPIO188/SPI3D2/nSPI3CS2 |
| 188 | GPIO189/SPI3D3/nSPI3CS3 |
| 189 | GPIO190/nPRD_SMI |
| 190 | GPIO191 |
| 191 | GPIO192 |
| 192 | GPIO193/R1CRSDV |
| 193 | GPIO194/SMB0BSCL |
| 194 | GPIO195/SMB0BSDA |
| 195 | GPIO196/SMB0CSCL |
| 196 | GPIO197/SMB0DEN |
| 197 | GPIO198/SMB0DSDA |
| 198 | GPIO199/SMB0DSCL |
| 199 | GPIO200/R2CK |
| 200 | GPIO201/R1CK |
| 201 | GPIO202/SMB0CSDA |
| 202 | GPIO203/FANIN16 |
| 203 | GPIO204/DDC2SCL |
| 204 | GPIO205/DDC2SDA |
| 205 | GPIO206/HSYNC2 |
| 206 | GPIO207/VSYNC2 |
| 207 | GPIO208/RG2TXC/DVCK |
| 208 | GPIO209/RG2TXCTL/DDRV4 |
| 209 | GPIO210/RG2RXD0/DDRV5 |
| 210 | GPIO211/RG2RXD1/DDRV6 |
| 211 | GPIO212/RG2RXD2/DDRV7 |
| 212 | GPIO213/RG2RXD3/DDRV8 |
| 213 | GPIO214/RG2RXC/DDRV9 |
| 214 | GPIO215/RG2RXCTL/DDRV10 |
| 215 | GPIO216/RG2MDC/DDRV11 |
| 216 | GPIO217/RG2MDIO/DVHSYNC |
| 217 | GPIO218/nWDO1 |
| 218 | GPIO219/nWDO2 |
| 219 | GPIO220/SMB12SCL |
| 220 | GPIO221/SMB12SDA |
| 221 | GPIO222/SMB13SCL |
| 222 | GPIO223/SMB13SDA |
| 223 | GPIO224/SPIXCK |
| 224 | GPO225/SPIXD0/STRAP12 |
| 225 | GPO226/SPIXD1/STRAP13 |
| 226 | GPIO227/nSPIXCS0 |
| 227 | GPIO228/nSPIXCS1 |
| 228 | GPO229/SPIXD2/STRAP3 |
| 229 | GPIO230/SPIXD3 |
| 230 | GPIO231/nCLKREQ |
| 231 | GPI255/DACOSEL |
선택적 pin configuration 속성
107-122선택 속성은 `bias-disable`, `bias-pull-down`, `bias-pull-up`, `input-enable`, `input-disable`, `output-high`, `output-low`, `drive-push-pull`, `drive-open-drain`, `input-debounce`, `slew-rate`, `drive-strength`입니다.
`slew-rate`는 0이면 slow, 1이면 fast입니다. `drive-strength`는 2, 4, 8, 12, 16, 24 mA 중 하나를 받습니다.
Pinmux subnode 예제
123-133GPIO0/IOX1DI를 high output으로, GPIO2/IOX1CK도 high output으로 구성하는 두 pinmux subnode 예제입니다. 두 번째 node의 `output_high` 표기는 원문 그대로 보존합니다.
gpio0_iox1d1_pin: gpio0-iox1d1-pin {
pins = "GPIO0/IOX1DI";
output-high;
};
gpio0_iox1ck_pin: gpio0-iox1ck-pin {
pins = "GPIO2/IOX1CK";
output_high;
};
Pin group subnode와 전체 group/function 목록
134-155Pin group subnode에는 mux할 group 이름인 `groups`와 그 group에 mux할 function 이름인 `function`이 필요합니다. 아래 표는 원문에 제시된 사용 가능 group과 function 이름 전체입니다.
| Group/function |
|---|
| smb0 |
| smb0b |
| smb0c |
| smb0d |
| smb0den |
| smb1 |
| smb1b |
| smb1c |
| smb1d |
| smb2 |
| smb2b |
| smb2c |
| smb2d |
| smb3 |
| smb3b |
| smb3c |
| smb3d |
| smb4 |
| smb4b |
| smb4c |
| smb4d |
| smb4den |
| smb5 |
| smb5b |
| smb5c |
| smb5d |
| ga20kbc |
| smb6 |
| smb7 |
| smb8 |
| smb9 |
| smb10 |
| smb11 |
| smb12 |
| smb13 |
| smb14 |
| smb15 |
| fanin0 |
| fanin1 |
| fanin2 |
| fanin3 |
| fanin4 |
| fanin5 |
| fanin6 |
| fanin7 |
| fanin8 |
| fanin9 |
| fanin10 |
| fanin11 |
| fanin12 |
| fanin13 |
| fanin14 |
| fanin15 |
| faninx |
| pwm0 |
| pwm1 |
| pwm2 |
| pwm3 |
| pwm4 |
| pwm5 |
| pwm6 |
| pwm7 |
| rg1 |
| rg1mdio |
| rg2 |
| rg2mdio |
| ddr |
| uart1 |
| uart2 |
| bmcuart0a |
| bmcuart0b |
| bmcuart1 |
| iox1 |
| iox2 |
| ioxh |
| gspi |
| mmc |
| mmcwp |
| mmccd |
| mmcrst |
| mmc8 |
| r1 |
| r1err |
| r1md |
| r2 |
| r2err |
| r2md |
| sd1 |
| sd1pwr |
| wdog1 |
| wdog2 |
| scipme |
| sci |
| serirq |
| jtag2 |
| spix |
| spixcs1 |
| pspi1 |
| pspi2 |
| ddc |
| clkreq |
| clkout |
| spi3 |
| spi3cs1 |
| spi3quad |
| spi3cs2 |
| spi3cs3 |
| spi0cs1 |
| lpc |
| lpcclk |
| espi |
| lkgpo0 |
| lkgpo1 |
| lkgpo2 |
| nprd_smi |
Group subnode 예제
156-169`r1err`, `r1md`, `r1` group을 각각 같은 이름의 function으로 mux하는 예제입니다.
r1err_pins: r1err-pins {
groups = "r1err";
function = "r1err";
};
r1md_pins: r1md-pins {
groups = "r1md";
function = "r1md";
};
r1_pins: r1-pins {
groups = "r1";
function = "r1";
};
NPCM750 pinctrl 전체 예제
170-216NPCM750 controller의 address mapping, GPIO bank 0과 7, 개별 pin 구성, IOX group, CLKREQ group을 한 node에 구성한 전체 예제입니다. 중간의 `....`는 원문이 생략을 표시한 그대로입니다.
pinctrl: pinctrl@f0800000 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "nuvoton,npcm750-pinctrl";
ranges = <0 0xf0010000 0x8000>;
gpio0: gpio@f0010000 {
gpio-controller;
#gpio-cells = <2>;
reg = <0x0 0x80>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
gpio-ranges = <&pinctrl 0 0 32>;
};
....
gpio7: gpio@f0017000 {
gpio-controller;
#gpio-cells = <2>;
reg = <0x7000 0x80>;
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
gpio-ranges = <&pinctrl 0 224 32>;
};
gpio0_iox1d1_pin: gpio0-iox1d1-pin {
pins = "GPIO0/IOX1DI";
output-high;
};
iox1_pins: iox1-pins {
groups = "iox1";
function = "iox1";
};
iox2_pins: iox2-pins {
groups = "iox2";
function = "iox2";
};
....
clkreq_pins: clkreq-pins {
groups = "clkreq";
function = "clkreq";
};
};
요약과 해설
nuvoton,npcm7xx-pinctrl.txt:1-2168개 GPIO bank와 전체 pin·group 목록, slew/drive 설정, DTS 예제를 구조화해 제공합니다.