요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/chipidea,usb2-imx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP USB2 ChipIdea USB controller
maintainers:
- Xu Yang <[email protected]>
properties:
compatible:
oneOf:
- enum:
- fsl,imx27-usb
- items:
- enum:
- fsl,imx23-usb
- fsl,imx25-usb
- fsl,imx28-usb
- fsl,imx35-usb
- fsl,imx50-usb
- fsl,imx51-usb
- fsl,imx53-usb
- fsl,imx6q-usb
- fsl,imx6sl-usb
- fsl,imx6sx-usb
- fsl,imx6ul-usb
- fsl,imx7d-usb
- fsl,vf610-usb
- const: fsl,imx27-usb
- items:
- enum:
- fsl,imx8dxl-usb
- fsl,imx8ulp-usb
- const: fsl,imx7ulp-usb
- const: fsl,imx6ul-usb
- items:
- enum:
- fsl,imx8mm-usb
- fsl,imx8mn-usb
- fsl,imx93-usb
- fsl,imx95-usb
- const: fsl,imx7d-usb
- const: fsl,imx27-usb
- items:
- enum:
- fsl,imx6sll-usb
- fsl,imx7ulp-usb
- const: fsl,imx6ul-usb
- const: fsl,imx27-usb
reg:
maxItems: 1
interrupts:
minItems: 1
items:
- description: USB controller interrupt or combine USB controller
and wakeup interrupts.
- description: Wakeup interrupt
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
fsl,usbmisc:
description:
Phandler of non-core register device, with one argument that
indicate usb controller index
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to usbmisc node
- description: index of usb controller
disable-over-current:
type: boolean
description: disable over current detect
over-current-active-low:
type: boolean
description: over current signal polarity is active low
over-current-active-high:
type: boolean
description:
Over current signal polarity is active high. It's recommended to
specify the over current polarity.
power-active-high:
type: boolean
description: power signal polarity is active high
external-vbus-divider:
type: boolean
description: enables off-chip resistor divider for Vbus
samsung,picophy-pre-emp-curr-control:
description:
HS Transmitter Pre-Emphasis Current Control. This signal controls
the amount of current sourced to the USB_OTG*_DP and USB_OTG*_DN
pins after a J-to-K or K-to-J transition. The range is from 0x0 to
0x3, the default value is 0x1. Details can refer to TXPREEMPAMPTUNE0
bits of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0x3
samsung,picophy-dc-vol-level-adjust:
description:
HS DC Voltage Level Adjustment. Adjust the high-speed transmitter DC
level voltage. The range is from 0x0 to 0xf, the default value is
0x3. Details can refer to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0xf
fsl,picophy-rise-fall-time-adjust:
description:
HS Transmitter Rise/Fall Time Adjustment. Adjust the rise/fall times
of the high-speed transmitter waveform. It has no unit. The rise/fall
time will be increased or decreased by a certain percentage relative
to design default time. (0:-10%; 1:design default; 2:+15%; 3:+20%)
Details can refer to TXRISETUNE0 bit of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 3
default: 1
fsl,usbphy:
description: phandle of usb phy that connects to the port. Use "phys" instead.
$ref: /schemas/types.yaml#/definitions/phandle
deprecated: true
required:
- compatible
allOf:
- $ref: chipidea,usb2-common.yaml#
- if:
properties:
phy_type:
const: hsic
required:
- phy_type
then:
properties:
pinctrl-names:
items:
- const: idle
- const: active
# imx27 Soc needs three clocks
- if:
properties:
compatible:
const: fsl,imx27-usb
then:
properties:
clocks:
minItems: 3
clock-names:
items:
- const: ipg
- const: ahb
- const: per
# imx25 and imx35 Soc need three clocks
- if:
properties:
compatible:
contains:
enum:
- fsl,imx25-usb
- fsl,imx35-usb
then:
properties:
clocks:
minItems: 3
clock-names:
items:
- const: ipg
- const: ahb
- const: per
# imx93 Soc needs two clocks
- if:
properties:
compatible:
contains:
enum:
- fsl,imx93-usb
- fsl,imx95-usb
then:
properties:
clocks:
minItems: 2
maxItems: 2
clock-names:
items:
- const: usb_ctrl_root
- const: usb_wakeup
# imx7d Soc need one clock
- if:
properties:
compatible:
items:
- const: fsl,imx7d-usb
- const: fsl,imx27-usb
then:
properties:
clocks:
maxItems: 1
clock-names: false
# other Soc need one clock
- if:
properties:
compatible:
contains:
enum:
- fsl,imx23-usb
- fsl,imx28-usb
- fsl,imx50-usb
- fsl,imx51-usb
- fsl,imx53-usb
- fsl,imx6q-usb
- fsl,imx6sl-usb
- fsl,imx6sx-usb
- fsl,imx6ul-usb
- fsl,imx8mm-usb
- fsl,imx8mn-usb
- fsl,vf610-usb
then:
properties:
clocks:
maxItems: 1
clock-names: false
# imx95 soc use two interrupts
- if:
properties:
compatible:
contains:
enum:
- fsl,imx95-usb
then:
properties:
interrupts:
minItems: 2
else:
properties:
interrupts:
maxItems: 1
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx7d-clock.h>
usb@30b10000 {
compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
reg = <0x30b10000 0x200>;
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_USB_CTRL_CLK>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc1 0>;
phy-clkgate-delay-us = <400>;
};
# Example for HSIC:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx6qdl-clock.h>
usb@2184400 {
compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
reg = <0x02184400 0x200>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6QDL_CLK_USBOH3>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc 2>;
phy_type = "hsic";
dr_mode = "host";
ahb-burst-config = <0x0>;
tx-burst-size-dword = <0x10>;
rx-burst-size-dword = <0x10>;
pinctrl-names = "idle", "active";
pinctrl-0 = <&pinctrl_usbh2_idle>;
pinctrl-1 = <&pinctrl_usbh2_active>;
#address-cells = <1>;
#size-cells = <0>;
ethernet@1 {
compatible = "usb424,9730";
reg = <1>;
};
};
...
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
NXP USB2 ChipIdea controller
1-11GPL-2.0-only 또는 BSD-2-Clause 라이선스의 이 schema는 NXP USB2 ChipIdea controller를 정의합니다. 관리자는 Xu Yang입니다.
i.MX·Vybrid compatible fallback chain
12-53`fsl,imx27-usb`는 단독 compatible입니다. i.MX23·25·28·35·50·51·53·6Q·6SL·6SX·6UL·7D와 VF610은 SoC compatible 다음에 `fsl,imx27-usb` fallback을 둡니다.
i.MX8DXL과 i.MX8ULP는 `fsl,imx7ulp-usb`, `fsl,imx6ul-usb` 순서의 fallback을 둡니다. i.MX8MM·8MN·93·95는 `fsl,imx7d-usb`, `fsl,imx27-usb`를 뒤따릅니다. i.MX6SLL과 i.MX7ULP는 `fsl,imx6ul-usb`, `fsl,imx27-usb`를 뒤따릅니다.
properties:
compatible:
oneOf:
- enum:
- fsl,imx27-usb
- items:
- enum:
- fsl,imx23-usb
- fsl,imx25-usb
- fsl,imx28-usb
- fsl,imx35-usb
- fsl,imx50-usb
- fsl,imx51-usb
- fsl,imx53-usb
- fsl,imx6q-usb
- fsl,imx6sl-usb
- fsl,imx6sx-usb
- fsl,imx6ul-usb
- fsl,imx7d-usb
- fsl,vf610-usb
- const: fsl,imx27-usb
- items:
- enum:
- fsl,imx8dxl-usb
- fsl,imx8ulp-usb
- const: fsl,imx7ulp-usb
- const: fsl,imx6ul-usb
- items:
- enum:
- fsl,imx8mm-usb
- fsl,imx8mn-usb
- fsl,imx93-usb
- fsl,imx95-usb
- const: fsl,imx7d-usb
- const: fsl,imx27-usb
- items:
- enum:
- fsl,imx6sll-usb
- fsl,imx7ulp-usb
- const: fsl,imx6ul-usb
- const: fsl,imx27-usb
Interrupt, clock, USBMISC와 전원 신호
54-103`reg`는 최대 한 항목입니다. Interrupt의 첫 항목은 USB controller interrupt 또는 controller와 wakeup을 결합한 interrupt이고, 두 번째 항목은 별도 wakeup interrupt입니다. Clock과 clock 이름은 각각 1~3개입니다.
`fsl,usbmisc`는 non-core register device의 phandle과 USB controller index 한 개를 함께 담습니다. `disable-over-current`는 overcurrent 검출을 끄고, `over-current-active-low`와 `over-current-active-high`는 신호 극성을 지정합니다. 극성을 명시하는 것이 권장됩니다. `power-active-high`는 power 신호를 active-high로 만들며 `external-vbus-divider`는 외부 VBUS resistor divider를 활성화합니다.
reg:
maxItems: 1
interrupts:
minItems: 1
items:
- description: USB controller interrupt or combine USB controller
and wakeup interrupts.
- description: Wakeup interrupt
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
fsl,usbmisc:
description:
Phandler of non-core register device, with one argument that
indicate usb controller index
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to usbmisc node
- description: index of usb controller
disable-over-current:
type: boolean
description: disable over current detect
over-current-active-low:
type: boolean
description: over current signal polarity is active low
over-current-active-high:
type: boolean
description:
Over current signal polarity is active high. It's recommended to
specify the over current polarity.
power-active-high:
type: boolean
description: power signal polarity is active high
external-vbus-divider:
type: boolean
description: enables off-chip resistor divider for Vbus
Samsung·FSL picoPHY tuning
104-140`samsung,picophy-pre-emp-curr-control`은 J-to-K 또는 K-to-J 전환 뒤 USB OTG DP/DN pin에 공급되는 HS transmitter pre-emphasis current를 조절합니다. 범위는 0x0~0x3, 기본값은 0x1이며 USBNC_n_PHY_CFG1의 TXPREEMPAMPTUNE0 bit에 대응합니다.
`samsung,picophy-dc-vol-level-adjust`는 HS transmitter DC level voltage를 조절합니다. 범위는 0x0~0xf, 기본값은 0x3이며 TXVREFTUNE0 bit에 대응합니다.
`fsl,picophy-rise-fall-time-adjust`는 단위 없이 HS waveform의 rise/fall time을 설계 기본값 대비 조절합니다. 0은 -10%, 1은 기본값, 2는 +15%, 3은 +20%이고 기본값은 1입니다. 예전 PHY phandle `fsl,usbphy`는 폐기되었으므로 `phys`를 사용해야 합니다.
samsung,picophy-pre-emp-curr-control:
description:
HS Transmitter Pre-Emphasis Current Control. This signal controls
the amount of current sourced to the USB_OTG*_DP and USB_OTG*_DN
pins after a J-to-K or K-to-J transition. The range is from 0x0 to
0x3, the default value is 0x1. Details can refer to TXPREEMPAMPTUNE0
bits of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0x3
samsung,picophy-dc-vol-level-adjust:
description:
HS DC Voltage Level Adjustment. Adjust the high-speed transmitter DC
level voltage. The range is from 0x0 to 0xf, the default value is
0x3. Details can refer to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0xf
fsl,picophy-rise-fall-time-adjust:
description:
HS Transmitter Rise/Fall Time Adjustment. Adjust the rise/fall times
of the high-speed transmitter waveform. It has no unit. The rise/fall
time will be increased or decreased by a certain percentage relative
to design default time. (0:-10%; 1:design default; 2:+15%; 3:+20%)
Details can refer to TXRISETUNE0 bit of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 3
default: 1
fsl,usbphy:
description: phandle of usb phy that connects to the port. Use "phys" instead.
$ref: /schemas/types.yaml#/definitions/phandle
deprecated: true
공통 schema와 HSIC pinctrl
141-158`compatible`은 필수이며 모든 공통 속성은 `chipidea,usb2-common.yaml`을 따릅니다. `phy_type = "hsic"`이면 `pinctrl-names`가 `idle`, `active` 두 state를 순서대로 가져야 합니다.
required:
- compatible
allOf:
- $ref: chipidea,usb2-common.yaml#
- if:
properties:
phy_type:
const: hsic
required:
- phy_type
then:
properties:
pinctrl-names:
items:
- const: idle
- const: active
i.MX27의 세 clock
159-173i.MX27 SoC는 clock이 최소 3개이고 이름은 `ipg`, `ahb`, `per` 순서입니다.
# imx27 Soc needs three clocks
- if:
properties:
compatible:
const: fsl,imx27-usb
then:
properties:
clocks:
minItems: 3
clock-names:
items:
- const: ipg
- const: ahb
- const: per
i.MX25·i.MX35의 세 clock
174-191Compatible에 i.MX25 또는 i.MX35 USB가 포함되면 clock이 최소 3개이고 이름은 `ipg`, `ahb`, `per` 순서입니다.
# imx25 and imx35 Soc need three clocks
- if:
properties:
compatible:
contains:
enum:
- fsl,imx25-usb
- fsl,imx35-usb
then:
properties:
clocks:
minItems: 3
clock-names:
items:
- const: ipg
- const: ahb
- const: per
i.MX93·i.MX95의 두 clock
192-209Compatible에 i.MX93 또는 i.MX95 USB가 포함되면 clock은 정확히 2개이고 이름은 `usb_ctrl_root`, `usb_wakeup` 순서입니다.
# imx93 Soc needs two clocks
- if:
properties:
compatible:
contains:
enum:
- fsl,imx93-usb
- fsl,imx95-usb
then:
properties:
clocks:
minItems: 2
maxItems: 2
clock-names:
items:
- const: usb_ctrl_root
- const: usb_wakeup
i.MX7D의 단일 clock
210-222Compatible 배열이 `fsl,imx7d-usb`, `fsl,imx27-usb`인 i.MX7D는 clock이 최대 한 개이며 `clock-names`를 사용하지 않습니다.
# imx7d Soc need one clock
- if:
properties:
compatible:
items:
- const: fsl,imx7d-usb
- const: fsl,imx27-usb
then:
properties:
clocks:
maxItems: 1
clock-names: false
그 밖의 SoC 단일 clock
223-246i.MX23·28·50·51·53·6Q·6SL·6SX·6UL·8MM·8MN과 VF610은 clock이 최대 한 개이며 `clock-names`를 사용하지 않습니다.
# other Soc need one clock
- if:
properties:
compatible:
contains:
enum:
- fsl,imx23-usb
- fsl,imx28-usb
- fsl,imx50-usb
- fsl,imx51-usb
- fsl,imx53-usb
- fsl,imx6q-usb
- fsl,imx6sl-usb
- fsl,imx6sx-usb
- fsl,imx6ul-usb
- fsl,imx8mm-usb
- fsl,imx8mn-usb
- fsl,vf610-usb
then:
properties:
clocks:
maxItems: 1
clock-names: false
i.MX95의 두 interrupt
247-264Compatible에 `fsl,imx95-usb`가 포함되면 interrupt가 최소 2개입니다. 그 밖의 SoC에서는 interrupt가 최대 한 개입니다. Schema에 평가되지 않은 추가 속성은 허용하지 않습니다.
# imx95 soc use two interrupts
- if:
properties:
compatible:
contains:
enum:
- fsl,imx95-usb
then:
properties:
interrupts:
minItems: 2
else:
properties:
interrupts:
maxItems: 1
unevaluatedProperties: false
i.MX7D 예제
265-279예제 `usb@30b10000`은 i.MX7D와 i.MX27 fallback compatible, 0x200-byte register 영역, level-high GIC SPI 43, `IMX7D_USB_CTRL_CLK` clock을 사용합니다. 폐기된 `fsl,usbphy`로 `usbphynop1`을 참조하고 `fsl,usbmisc`는 controller index 0을 지정하며 PHY clock gate 지연은 400 us입니다.
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx7d-clock.h>
usb@30b10000 {
compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
reg = <0x30b10000 0x200>;
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_USB_CTRL_CLK>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc1 0>;
phy-clkgate-delay-us = <400>;
};
i.MX6Q HSIC host 예제
280-309HSIC 예제 `usb@2184400`은 i.MX6Q와 i.MX27 fallback, 0x200-byte 영역, level-high interrupt 41, USBOH3 clock을 사용합니다. USBMISC controller index는 2이고 `phy_type`은 `hsic`, mode는 `host`입니다.
AHB burst config는 0이므로 TX와 RX burst 크기 0x10 dword 설정이 적용됩니다. `idle`, `active` pinctrl state를 각각 연결합니다. Child `ethernet@1`은 `usb424,9730` compatible과 USB address 1을 사용합니다.
# Example for HSIC:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx6qdl-clock.h>
usb@2184400 {
compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
reg = <0x02184400 0x200>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6QDL_CLK_USBOH3>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc 2>;
phy_type = "hsic";
dr_mode = "host";
ahb-burst-config = <0x0>;
tx-burst-size-dword = <0x10>;
rx-burst-size-dword = <0x10>;
pinctrl-names = "idle", "active";
pinctrl-0 = <&pinctrl_usbh2_idle>;
pinctrl-1 = <&pinctrl_usbh2_active>;
#address-cells = <1>;
#size-cells = <0>;
ethernet@1 {
compatible = "usb424,9730";
reg = <1>;
};
};
...
요약과 해설
chipidea,usb2-imx.yaml:1-309NXP i.MX·Vybrid ChipIdea USB2의 compatible fallback, picoPHY tuning, SoC별 clock·interrupt와 HSIC 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, PHY, mux, pinctrl, endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.