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

Linux 6.18.37 · Devicetree Bindings / USB

Ux500 MUSB

Ux500 MUSB의 dual-role mode와 endpoint별 DMA channel 구성을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

ux500-usb.txt:1-50

Ux500 MUSB의 dual-role mode와 endpoint별 DMA channel 구성을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, property, symbol, phandle, example, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Ux500 MUSB
2
3 Required properties:
4 - compatible : Should be "stericsson,db8500-musb"
5 - reg : Offset and length of registers
6 - interrupts : Interrupt; mode, number and trigger
7 - dr_mode : Dual-role; either host mode "host", peripheral mode "peripheral"
8 or both "otg"
9
10 Optional properties:
11 - dmas : A list of dma channels;
12 dma-controller, event-line, fixed-channel, flags
13 - dma-names : An ordered list of channel names affiliated to the above
14
15 Example:
16
17 usb_per5@a03e0000 {
18 compatible = "stericsson,db8500-musb";
19 reg = <0xa03e0000 0x10000>;
20 interrupts = <0 23 0x4>;
21 interrupt-names = "mc";
22
23 dr_mode = "otg";
24
25 dmas = <&dma 38 0 0x2>, /* Logical - DevToMem */
26 <&dma 38 0 0x0>, /* Logical - MemToDev */
27 <&dma 37 0 0x2>, /* Logical - DevToMem */
28 <&dma 37 0 0x0>, /* Logical - MemToDev */
29 <&dma 36 0 0x2>, /* Logical - DevToMem */
30 <&dma 36 0 0x0>, /* Logical - MemToDev */
31 <&dma 19 0 0x2>, /* Logical - DevToMem */
32 <&dma 19 0 0x0>, /* Logical - MemToDev */
33 <&dma 18 0 0x2>, /* Logical - DevToMem */
34 <&dma 18 0 0x0>, /* Logical - MemToDev */
35 <&dma 17 0 0x2>, /* Logical - DevToMem */
36 <&dma 17 0 0x0>, /* Logical - MemToDev */
37 <&dma 16 0 0x2>, /* Logical - DevToMem */
38 <&dma 16 0 0x0>, /* Logical - MemToDev */
39 <&dma 39 0 0x2>, /* Logical - DevToMem */
40 <&dma 39 0 0x0>; /* Logical - MemToDev */
41
42 dma-names = "iep_1_9", "oep_1_9",
43 "iep_2_10", "oep_2_10",
44 "iep_3_11", "oep_3_11",
45 "iep_4_12", "oep_4_12",
46 "iep_5_13", "oep_5_13",
47 "iep_6_14", "oep_6_14",
48 "iep_7_15", "oep_7_15",
49 "iep_8", "oep_8";
50 };
51

3. 한국어 전문 번역

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

Ux500 MUSB controller

1-2

이 binding은 ST-Ericsson Ux500 계열의 MUSB dual-role controller를 설명합니다.

register, interrupt, role과 DMA

3-14

필수 `compatible`은 `stericsson,db8500-musb`입니다. `reg`는 register의 offset과 length, `interrupts`는 interrupt mode·number·trigger를 지정합니다.

`dr_mode`는 dual-role controller를 `host`, `peripheral`, `otg` 중 하나로 설정합니다. 선택적인 `dmas`는 DMA controller, event line, fixed channel과 flag로 구성된 channel 목록이고 `dma-names`는 그 channel과 같은 순서의 이름 목록입니다.

Required properties:
 - compatible : Should be "stericsson,db8500-musb"
 - reg        : Offset and length of registers
 - interrupts : Interrupt; mode, number and trigger
 - dr_mode    : Dual-role; either host mode "host", peripheral mode "peripheral"
                or both "otg"

Optional properties:
 - dmas       : A list of dma channels;
                dma-controller, event-line, fixed-channel, flags
 - dma-names  : An ordered list of channel names affiliated to the above

OTG endpoint DMA channel 예제

15-50

예제 `usb_per5@a03e0000` controller는 OTG mode로 동작합니다. endpoint 1~7은 두 endpoint number를 공유하고 endpoint 8은 단독으로, 각 endpoint마다 DevToMem 입력 channel과 MemToDev 출력 channel을 짝지어 선언합니다.

`dma-names`의 `iep_*`와 `oep_*` 이름은 `dmas`에 나열된 input·output channel 순서와 정확히 대응합니다.

Example:

usb_per5@a03e0000 {
        compatible = "stericsson,db8500-musb";
        reg = <0xa03e0000 0x10000>;
        interrupts = <0 23 0x4>;
        interrupt-names = "mc";

        dr_mode = "otg";

        dmas = <&dma 38 0 0x2>, /* Logical - DevToMem */
               <&dma 38 0 0x0>, /* Logical - MemToDev */
               <&dma 37 0 0x2>, /* Logical - DevToMem */
               <&dma 37 0 0x0>, /* Logical - MemToDev */
               <&dma 36 0 0x2>, /* Logical - DevToMem */
               <&dma 36 0 0x0>, /* Logical - MemToDev */
               <&dma 19 0 0x2>, /* Logical - DevToMem */
               <&dma 19 0 0x0>, /* Logical - MemToDev */
               <&dma 18 0 0x2>, /* Logical - DevToMem */
               <&dma 18 0 0x0>, /* Logical - MemToDev */
               <&dma 17 0 0x2>, /* Logical - DevToMem */
               <&dma 17 0 0x0>, /* Logical - MemToDev */
               <&dma 16 0 0x2>, /* Logical - DevToMem */
               <&dma 16 0 0x0>, /* Logical - MemToDev */
               <&dma 39 0 0x2>, /* Logical - DevToMem */
               <&dma 39 0 0x0>; /* Logical - MemToDev */

        dma-names = "iep_1_9",  "oep_1_9",
                    "iep_2_10", "oep_2_10",
                    "iep_3_11", "oep_3_11",
                    "iep_4_12", "oep_4_12",
                    "iep_5_13", "oep_5_13",
                    "iep_6_14", "oep_6_14",
                    "iep_7_15", "oep_7_15",
                    "iep_8",    "oep_8";
};