← Documents Documentation/devicetree/bindings/usb/atmel-usb.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

Atmel SoC USB Controllers

Atmel OHCI·EHCI host와 일반·High-Speed UDC의 compatible, clock, GPIO, 폐기 속성 및 예제를 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

atmel-usb.txt:1-125

Atmel OHCI·EHCI host와 일반·High-Speed UDC의 compatible, clock, GPIO, 폐기 속성 및 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, GPIO, PHY, endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Atmel SOC USB controllers
2
3 OHCI
4
5 Required properties:
6 - compatible: Should be "atmel,at91rm9200-ohci" for USB controllers
7 used in host mode.
8 - reg: Address and length of the register set for the device
9 - interrupts: Should contain ohci interrupt
10 - clocks: Should reference the peripheral, host and system clocks
11 - clock-names: Should contain three strings
12 "ohci_clk" for the peripheral clock
13 "hclk" for the host clock
14 "uhpck" for the system clock
15 - num-ports: Number of ports.
16 - atmel,vbus-gpio: If present, specifies a gpio that needs to be
17 activated for the bus to be powered.
18 - atmel,oc-gpio: If present, specifies a gpio that needs to be
19 activated for the overcurrent detection.
20
21 usb0: ohci@500000 {
22 compatible = "atmel,at91rm9200-ohci", "usb-ohci";
23 reg = <0x00500000 0x100000>;
24 clocks = <&uhphs_clk>, <&uhphs_clk>, <&uhpck>;
25 clock-names = "ohci_clk", "hclk", "uhpck";
26 interrupts = <20 4>;
27 num-ports = <2>;
28 };
29
30 EHCI
31
32 Required properties:
33 - compatible: Should be "atmel,at91sam9g45-ehci" for USB controllers
34 used in host mode.
35 - reg: Address and length of the register set for the device
36 - interrupts: Should contain ehci interrupt
37 - clocks: Should reference the peripheral and the UTMI clocks
38 - clock-names: Should contain two strings
39 "ehci_clk" for the peripheral clock
40 "usb_clk" for the UTMI clock
41
42 Optional properties:
43 - phy_type : For multi port host USB controllers, should be one of
44 "utmi", or "hsic".
45
46 usb1: ehci@800000 {
47 compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
48 reg = <0x00800000 0x100000>;
49 interrupts = <22 4>;
50 clocks = <&utmi>, <&uhphs_clk>;
51 clock-names = "usb_clk", "ehci_clk";
52 };
53
54 AT91 USB device controller
55
56 Required properties:
57 - compatible: Should be one of the following
58 "atmel,at91rm9200-udc"
59 "atmel,at91sam9260-udc"
60 "atmel,at91sam9261-udc"
61 "atmel,at91sam9263-udc"
62 - reg: Address and length of the register set for the device
63 - interrupts: Should contain macb interrupt
64 - clocks: Should reference the peripheral and the AHB clocks
65 - clock-names: Should contain two strings
66 "pclk" for the peripheral clock
67 "hclk" for the AHB clock
68
69 Optional properties:
70 - atmel,vbus-gpio: If present, specifies a gpio that needs to be
71 activated for the bus to be powered.
72
73 usb1: gadget@fffa4000 {
74 compatible = "atmel,at91rm9200-udc";
75 reg = <0xfffa4000 0x4000>;
76 interrupts = <10 4>;
77 clocks = <&udc_clk>, <&udpck>;
78 clock-names = "pclk", "hclk";
79 atmel,vbus-gpio = <&pioC 5 0>;
80 };
81
82 Atmel High-Speed USB device controller
83
84 Required properties:
85 - compatible: Should be one of the following
86 "atmel,at91sam9rl-udc"
87 "atmel,at91sam9g45-udc"
88 "atmel,sama5d3-udc"
89 "microchip,sam9x60-udc"
90 "microchip,lan9662-udc"
91 For "microchip,lan9662-udc" the fallback "atmel,sama5d3-udc"
92 is required.
93 - reg: Address and length of the register set for the device
94 - interrupts: Should contain usba interrupt
95 - clocks: Should reference the peripheral and host clocks
96 - clock-names: Should contain two strings
97 "pclk" for the peripheral clock
98 "hclk" for the host clock
99
100 Deprecated property:
101 - ep childnode: To specify the number of endpoints and their properties.
102
103 Optional properties:
104 - atmel,vbus-gpio: If present, specifies a gpio that allows to detect whether
105 vbus is present (USB is connected).
106
107 Deprecated child node properties:
108 - name: Name of the endpoint.
109 - reg: Num of the endpoint.
110 - atmel,fifo-size: Size of the fifo.
111 - atmel,nb-banks: Number of banks.
112 - atmel,can-dma: Boolean to specify if the endpoint support DMA.
113 - atmel,can-isoc: Boolean to specify if the endpoint support ISOC.
114
115 usb2: gadget@fff78000 {
116 #address-cells = <1>;
117 #size-cells = <0>;
118 compatible = "atmel,at91sam9rl-udc";
119 reg = <0x00600000 0x80000
120 0xfff78000 0x400>;
121 interrupts = <27 4 0>;
122 clocks = <&utmi>, <&udphs_clk>;
123 clock-names = "hclk", "pclk";
124 atmel,vbus-gpio = <&pioB 19 0>;
125 };
126

3. 한국어 전문 번역

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

Atmel OHCI host controller

1-29

Atmel SoC OHCI controller를 host mode로 사용할 때 `compatible`은 `atmel,at91rm9200-ohci`여야 합니다. `reg`는 register set의 주소와 길이이고 `interrupts`에는 OHCI interrupt가 들어갑니다.

`clocks`는 peripheral, host, system clock을 참조하며 이름은 각각 `ohci_clk`, `hclk`, `uhpck`입니다. `num-ports`는 port 수입니다. `atmel,vbus-gpio`는 bus 전원을 켜는 GPIO이고 `atmel,oc-gpio`는 overcurrent 검출용 GPIO이며, 두 속성은 존재할 때 해당 GPIO를 활성화해야 함을 뜻합니다.

예제 `ohci@500000`은 Atmel OHCI와 일반 `usb-ohci` compatible을 함께 사용하고 0x100000-byte 영역, 세 clock, interrupt 20, port 2개를 지정합니다.

usb0: ohci@500000 {
        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
        reg = <0x00500000 0x100000>;
        clocks = <&uhphs_clk>, <&uhphs_clk>, <&uhpck>;
        clock-names = "ohci_clk", "hclk", "uhpck";
        interrupts = <20 4>;
        num-ports = <2>;
};

Atmel EHCI host controller

30-53

EHCI host controller의 `compatible`은 `atmel,at91sam9g45-ehci`입니다. `reg`는 register set, `interrupts`는 EHCI interrupt를 지정합니다. `clocks`는 peripheral clock과 UTMI clock을 참조하고 이름은 각각 `ehci_clk`, `usb_clk`입니다.

여러 port를 가진 host controller의 선택적 `phy_type`은 `utmi` 또는 `hsic`입니다. 예제 `ehci@800000`은 Atmel EHCI와 `usb-ehci`, interrupt 22, `utmi`와 `uhphs_clk`을 사용하며 clock 이름은 참조 순서에 맞춰 `usb_clk`, `ehci_clk`입니다.

usb1: ehci@800000 {
        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
        reg = <0x00800000 0x100000>;
        interrupts = <22 4>;
        clocks = <&utmi>, <&uhphs_clk>;
        clock-names = "usb_clk", "ehci_clk";
};

AT91 USB device controller

54-81

일반 AT91 UDC의 `compatible`은 `atmel,at91rm9200-udc`, `atmel,at91sam9260-udc`, `atmel,at91sam9261-udc`, `atmel,at91sam9263-udc` 중 하나입니다. `reg`는 register set을 지정하고, 원문은 `interrupts`에 macb interrupt가 들어가야 한다고 명시합니다.

Clock은 peripheral과 AHB clock이며 이름은 각각 `pclk`, `hclk`입니다. 선택적 `atmel,vbus-gpio`는 bus 전원을 켜는 GPIO입니다. 예제 `gadget@fffa4000`은 RM9200 UDC, interrupt 10, `udc_clk`·`udpck`, PIOC 5번 VBUS GPIO를 사용합니다.

usb1: gadget@fffa4000 {
        compatible = "atmel,at91rm9200-udc";
        reg = <0xfffa4000 0x4000>;
        interrupts = <10 4>;
        clocks = <&udc_clk>, <&udpck>;
        clock-names = "pclk", "hclk";
        atmel,vbus-gpio = <&pioC 5 0>;
};

Atmel High-Speed USB device controller

82-114

High-Speed UDC compatible은 `atmel,at91sam9rl-udc`, `atmel,at91sam9g45-udc`, `atmel,sama5d3-udc`, `microchip,sam9x60-udc`, `microchip,lan9662-udc` 중 하나입니다. LAN9662는 fallback `atmel,sama5d3-udc`도 반드시 함께 사용해야 합니다.

`reg`는 register set, `interrupts`는 USBA interrupt를 지정합니다. Clock은 peripheral과 host clock이고 이름은 `pclk`, `hclk`입니다. 선택적 `atmel,vbus-gpio`는 VBUS 존재 여부, 즉 USB 연결 여부를 검출합니다.

Endpoint 수와 속성을 지정하던 `ep` child node는 폐기되었습니다. 그 child의 `name`, endpoint 번호 `reg`, `atmel,fifo-size`, `atmel,nb-banks`, DMA 지원 boolean `atmel,can-dma`, isochronous 지원 boolean `atmel,can-isoc`도 모두 폐기된 속성입니다.

High-Speed UDC 예제

115-125

예제 `gadget@fff78000`은 한 개의 address cell과 크기 cell 0개를 사용합니다. AT91SAM9RL UDC의 두 register 영역, interrupt 27, UTMI·UDPHS clock을 연결하고 이름은 `hclk`, `pclk` 순서입니다. VBUS 검출에는 PIOB 19번 GPIO를 사용합니다.

usb2: gadget@fff78000 {
        #address-cells = <1>;
        #size-cells = <0>;
        compatible = "atmel,at91sam9rl-udc";
        reg = <0x00600000 0x80000
               0xfff78000 0x400>;
        interrupts = <27 4 0>;
        clocks = <&utmi>, <&udphs_clk>;
        clock-names = "hclk", "pclk";
        atmel,vbus-gpio = <&pioB 19 0>;
};