← Documents Documentation/devicetree/bindings/mfd/omap-usb-host.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

OMAP HS USB Host

OMAP USBHS의 포트 모드, UTMI·HSIC 클록과 EHCI·OHCI 자식 바인딩입니다.

Source pathDocumentation/devicetree/bindings/mfd/omap-usb-host.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

omap-usb-host.txt:1-103

세 포트의 PHY·TLL·HSIC 연결과 OMAP3·OMAP4+ 클록 차이, 자식 주소 전달과 OMAP4 예제를 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 OMAP HS USB Host
2
3 Required properties:
4
5 - compatible: should be "ti,usbhs-host"
6 - reg: should contain one register range i.e. start and length
7 - ti,hwmods: must contain "usb_host_hs"
8
9 Optional properties:
10
11 - num-ports: number of USB ports. Usually this is automatically detected
12 from the IP's revision register but can be overridden by specifying
13 this property. A maximum of 3 ports are supported at the moment.
14
15 - portN-mode: String specifying the port mode for port N, where N can be
16 from 1 to 3. If the port mode is not specified, that port is treated
17 as unused. When specified, it must be one of the following.
18 "ehci-phy",
19 "ehci-tll",
20 "ehci-hsic",
21 "ohci-phy-6pin-datse0",
22 "ohci-phy-6pin-dpdm",
23 "ohci-phy-3pin-datse0",
24 "ohci-phy-4pin-dpdm",
25 "ohci-tll-6pin-datse0",
26 "ohci-tll-6pin-dpdm",
27 "ohci-tll-3pin-datse0",
28 "ohci-tll-4pin-dpdm",
29 "ohci-tll-2pin-datse0",
30 "ohci-tll-2pin-dpdm",
31
32 - single-ulpi-bypass: Must be present if the controller contains a single
33 ULPI bypass control bit. e.g. OMAP3 silicon <= ES2.1
34
35 - clocks: a list of phandles and clock-specifier pairs, one for each entry in
36 clock-names.
37
38 - clock-names: should include:
39 For OMAP3
40 * "usbhost_120m_fck" - 120MHz Functional clock.
41
42 For OMAP4+
43 * "refclk_60m_int" - 60MHz internal reference clock for UTMI clock mux
44 * "refclk_60m_ext_p1" - 60MHz external ref. clock for Port 1's UTMI clock mux.
45 * "refclk_60m_ext_p2" - 60MHz external ref. clock for Port 2's UTMI clock mux
46 * "utmi_p1_gfclk" - Port 1 UTMI clock mux.
47 * "utmi_p2_gfclk" - Port 2 UTMI clock mux.
48 * "usb_host_hs_utmi_p1_clk" - Port 1 UTMI clock gate.
49 * "usb_host_hs_utmi_p2_clk" - Port 2 UTMI clock gate.
50 * "usb_host_hs_utmi_p3_clk" - Port 3 UTMI clock gate.
51 * "usb_host_hs_hsic480m_p1_clk" - Port 1 480MHz HSIC clock gate.
52 * "usb_host_hs_hsic480m_p2_clk" - Port 2 480MHz HSIC clock gate.
53 * "usb_host_hs_hsic480m_p3_clk" - Port 3 480MHz HSIC clock gate.
54 * "usb_host_hs_hsic60m_p1_clk" - Port 1 60MHz HSIC clock gate.
55 * "usb_host_hs_hsic60m_p2_clk" - Port 2 60MHz HSIC clock gate.
56 * "usb_host_hs_hsic60m_p3_clk" - Port 3 60MHz HSIC clock gate.
57
58 Required properties if child node exists:
59
60 - #address-cells: Must be 1
61 - #size-cells: Must be 1
62 - ranges: must be present
63
64 Properties for children:
65
66 The OMAP HS USB Host subsystem contains EHCI and OHCI controllers.
67 See Documentation/devicetree/bindings/usb/generic-ehci.yaml and
68 Documentation/devicetree/bindings/usb/generic-ohci.yaml.
69
70 Example for OMAP4:
71
72 usbhshost: usbhshost@4a064000 {
73 compatible = "ti,usbhs-host";
74 reg = <0x4a064000 0x800>;
75 ti,hwmods = "usb_host_hs";
76 #address-cells = <1>;
77 #size-cells = <1>;
78 ranges;
79
80 usbhsohci: ohci@4a064800 {
81 compatible = "ti,ohci-omap3";
82 reg = <0x4a064800 0x400>;
83 interrupt-parent = <&gic>;
84 interrupts = <0 76 0x4>;
85 };
86
87 usbhsehci: ehci@4a064c00 {
88 compatible = "ti,ehci-omap";
89 reg = <0x4a064c00 0x400>;
90 interrupt-parent = <&gic>;
91 interrupts = <0 77 0x4>;
92 };
93 };
94
95 &usbhshost {
96 port1-mode = "ehci-phy";
97 port2-mode = "ehci-tll";
98 port3-mode = "ehci-phy";
99 };
100
101 &usbhsehci {
102 phys = <&hsusb1_phy 0 &hsusb3_phy>;
103 };
104

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

OMAP HS USB Host와 필수 속성

1-8

이 바인딩은 OMAP High-Speed USB Host 하위 시스템을 설명합니다. `compatible`은 `ti,usbhs-host`, `reg`는 시작 주소와 길이로 이루어진 하나의 레지스터 범위, `ti,hwmods`는 `usb_host_hs`를 포함해야 합니다.

OMAP HS USB Host 구성
OMAP USBHS hostPort 1 / Port 2 / Port 3
OMAP USBHS hostUTMI / HSIC clock gates
OMAP USBHS hostEHCI child
OMAP USBHS hostOHCI child

하나의 USB Host MFD가 포트 모드와 클록을 관리하고 EHCI·OHCI 자식 컨트롤러를 제공합니다.

포트 수와 포트 모드

9-34

선택 속성 `num-ports`는 USB 포트 수입니다. 보통 IP revision register에서 자동 감지하지만 이 속성으로 덮어쓸 수 있으며, 현재 지원되는 최대 포트 수는 3개입니다.

`portN-mode`는 N이 1부터 3인 포트 N의 모드를 지정하는 문자열입니다. 지정하지 않은 포트는 사용하지 않는 것으로 처리합니다. 지정할 때는 아래 값 중 하나여야 합니다.

OMAP USB 포트 모드
허용 값의미
ehci-phyEHCI PHY
ehci-tllEHCI TLL
ehci-hsicEHCI HSIC
ohci-phy-6pin-datse0OHCI PHY 6-pin DAT/SE0
ohci-phy-6pin-dpdmOHCI PHY 6-pin DP/DM
ohci-phy-3pin-datse0OHCI PHY 3-pin DAT/SE0
ohci-phy-4pin-dpdmOHCI PHY 4-pin DP/DM
ohci-tll-6pin-datse0OHCI TLL 6-pin DAT/SE0
ohci-tll-6pin-dpdmOHCI TLL 6-pin DP/DM
ohci-tll-3pin-datse0OHCI TLL 3-pin DAT/SE0
ohci-tll-4pin-dpdmOHCI TLL 4-pin DP/DM
ohci-tll-2pin-datse0OHCI TLL 2-pin DAT/SE0
ohci-tll-2pin-dpdmOHCI TLL 2-pin DP/DM

원문의 허용 문자열을 컨트롤러와 인터페이스 유형별로 정리했습니다.

`single-ulpi-bypass`는 컨트롤러에 ULPI bypass 제어 비트가 하나뿐일 때 반드시 있어야 합니다. 예를 들어 OMAP3 silicon ES2.1 이하가 이에 해당합니다.

OMAP3·OMAP4+ 클록

35-57

`clocks`는 `clock-names`의 각 항목에 대응하는 phandle과 clock-specifier 쌍의 목록입니다. OMAP3의 `clock-names`에는 120MHz functional clock인 `usbhost_120m_fck`가 포함되어야 합니다.

OMAP4 이상에서는 UTMI mux의 내부·외부 60MHz 기준 클록, 포트별 UTMI mux와 gate, 포트별 480MHz·60MHz HSIC gate를 이름으로 지정합니다.

OMAP USBHS clock-names
클록 이름역할
usbhost_120m_fckOMAP3 120MHz functional clock
refclk_60m_intUTMI mux 내부 60MHz 기준 클록
refclk_60m_ext_p1Port 1 UTMI mux 외부 60MHz 기준 클록
refclk_60m_ext_p2Port 2 UTMI mux 외부 60MHz 기준 클록
utmi_p1_gfclkPort 1 UTMI clock mux
utmi_p2_gfclkPort 2 UTMI clock mux
usb_host_hs_utmi_p1_clkPort 1 UTMI clock gate
usb_host_hs_utmi_p2_clkPort 2 UTMI clock gate
usb_host_hs_utmi_p3_clkPort 3 UTMI clock gate
usb_host_hs_hsic480m_p1_clkPort 1 480MHz HSIC clock gate
usb_host_hs_hsic480m_p2_clkPort 2 480MHz HSIC clock gate
usb_host_hs_hsic480m_p3_clkPort 3 480MHz HSIC clock gate
usb_host_hs_hsic60m_p1_clkPort 1 60MHz HSIC clock gate
usb_host_hs_hsic60m_p2_clkPort 2 60MHz HSIC clock gate
usb_host_hs_hsic60m_p3_clkPort 3 60MHz HSIC clock gate

원문에 열거된 클록 이름과 역할을 빠짐없이 보존했습니다.

자식 노드 주소와 EHCI·OHCI

58-69

자식 노드가 있으면 `#address-cells`와 `#size-cells`는 모두 1이어야 하고 `ranges`가 반드시 있어야 합니다.

OMAP HS USB Host 하위 시스템에는 EHCI와 OHCI 컨트롤러가 들어 있습니다. 자식 속성은 각각 `Documentation/devicetree/bindings/usb/generic-ehci.yaml`과 `Documentation/devicetree/bindings/usb/generic-ohci.yaml`을 따릅니다.

OMAP4 EHCI·OHCI 예제

70-103

OMAP4 예제는 `0x4a064000`의 USBHS host가 OHCI `0x4a064800`과 EHCI `0x4a064c00` 자식을 노출하는 구성을 보여 줍니다. 두 자식은 GIC interrupt 76과 77을 사용합니다.

host 참조에서 port 1과 3은 `ehci-phy`, port 2는 `ehci-tll`로 정하고, EHCI 노드의 `phys`는 `hsusb1_phy`와 `hsusb3_phy`를 가리킵니다.

usbhshost: usbhshost@4a064000 {
        compatible = "ti,usbhs-host";
        reg = <0x4a064000 0x800>;
        ti,hwmods = "usb_host_hs";
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        usbhsohci: ohci@4a064800 {
                compatible = "ti,ohci-omap3";
                reg = <0x4a064800 0x400>;
                interrupt-parent = <&gic>;
                interrupts = <0 76 0x4>;
        };

        usbhsehci: ehci@4a064c00 {
                compatible = "ti,ehci-omap";
                reg = <0x4a064c00 0x400>;
                interrupt-parent = <&gic>;
                interrupts = <0 77 0x4>;
        };
};

&usbhshost {
        port1-mode = "ehci-phy";
        port2-mode = "ehci-tll";
        port3-mode = "ehci-phy";
};

&usbhsehci {
        phys = <&hsusb1_phy 0 &hsusb3_phy>;
};