요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
OMAP HS USB Host
Required properties:
- compatible: should be "ti,usbhs-host"
- reg: should contain one register range i.e. start and length
- ti,hwmods: must contain "usb_host_hs"
Optional properties:
- num-ports: number of USB ports. Usually this is automatically detected
from the IP's revision register but can be overridden by specifying
this property. A maximum of 3 ports are supported at the moment.
- portN-mode: String specifying the port mode for port N, where N can be
from 1 to 3. If the port mode is not specified, that port is treated
as unused. When specified, it must be one of the following.
"ehci-phy",
"ehci-tll",
"ehci-hsic",
"ohci-phy-6pin-datse0",
"ohci-phy-6pin-dpdm",
"ohci-phy-3pin-datse0",
"ohci-phy-4pin-dpdm",
"ohci-tll-6pin-datse0",
"ohci-tll-6pin-dpdm",
"ohci-tll-3pin-datse0",
"ohci-tll-4pin-dpdm",
"ohci-tll-2pin-datse0",
"ohci-tll-2pin-dpdm",
- single-ulpi-bypass: Must be present if the controller contains a single
ULPI bypass control bit. e.g. OMAP3 silicon <= ES2.1
- clocks: a list of phandles and clock-specifier pairs, one for each entry in
clock-names.
- clock-names: should include:
For OMAP3
* "usbhost_120m_fck" - 120MHz Functional clock.
For OMAP4+
* "refclk_60m_int" - 60MHz internal reference clock for UTMI clock mux
* "refclk_60m_ext_p1" - 60MHz external ref. clock for Port 1's UTMI clock mux.
* "refclk_60m_ext_p2" - 60MHz external ref. clock for Port 2's UTMI clock mux
* "utmi_p1_gfclk" - Port 1 UTMI clock mux.
* "utmi_p2_gfclk" - Port 2 UTMI clock mux.
* "usb_host_hs_utmi_p1_clk" - Port 1 UTMI clock gate.
* "usb_host_hs_utmi_p2_clk" - Port 2 UTMI clock gate.
* "usb_host_hs_utmi_p3_clk" - Port 3 UTMI clock gate.
* "usb_host_hs_hsic480m_p1_clk" - Port 1 480MHz HSIC clock gate.
* "usb_host_hs_hsic480m_p2_clk" - Port 2 480MHz HSIC clock gate.
* "usb_host_hs_hsic480m_p3_clk" - Port 3 480MHz HSIC clock gate.
* "usb_host_hs_hsic60m_p1_clk" - Port 1 60MHz HSIC clock gate.
* "usb_host_hs_hsic60m_p2_clk" - Port 2 60MHz HSIC clock gate.
* "usb_host_hs_hsic60m_p3_clk" - Port 3 60MHz HSIC clock gate.
Required properties if child node exists:
- #address-cells: Must be 1
- #size-cells: Must be 1
- ranges: must be present
Properties for children:
The OMAP HS USB Host subsystem contains EHCI and OHCI controllers.
See Documentation/devicetree/bindings/usb/generic-ehci.yaml and
Documentation/devicetree/bindings/usb/generic-ohci.yaml.
Example for OMAP4:
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>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
OMAP HS USB Host와 필수 속성
1-8이 바인딩은 OMAP High-Speed USB Host 하위 시스템을 설명합니다. `compatible`은 `ti,usbhs-host`, `reg`는 시작 주소와 길이로 이루어진 하나의 레지스터 범위, `ti,hwmods`는 `usb_host_hs`를 포함해야 합니다.
하나의 USB Host MFD가 포트 모드와 클록을 관리하고 EHCI·OHCI 자식 컨트롤러를 제공합니다.
포트 수와 포트 모드
9-34선택 속성 `num-ports`는 USB 포트 수입니다. 보통 IP revision register에서 자동 감지하지만 이 속성으로 덮어쓸 수 있으며, 현재 지원되는 최대 포트 수는 3개입니다.
`portN-mode`는 N이 1부터 3인 포트 N의 모드를 지정하는 문자열입니다. 지정하지 않은 포트는 사용하지 않는 것으로 처리합니다. 지정할 때는 아래 값 중 하나여야 합니다.
원문의 허용 문자열을 컨트롤러와 인터페이스 유형별로 정리했습니다.
`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를 이름으로 지정합니다.
원문에 열거된 클록 이름과 역할을 빠짐없이 보존했습니다.
자식 노드 주소와 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-103OMAP4 예제는 `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>;
};
요약과 해설
omap-usb-host.txt:1-103세 포트의 PHY·TLL·HSIC 연결과 OMAP3·OMAP4+ 클록 차이, 자식 주소 전달과 OMAP4 예제를 설명합니다.