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

Linux 6.18.37 · Devicetree Bindings / USB

TI DA8xx MUSB

DA8xx MUSB의 mode·PHY·DMA channel 이름과 DA830 CPPI41 controller 예제를 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

da8xx-usb.txt:1-81

DA8xx MUSB의 mode·PHY·DMA channel 이름과 DA830 CPPI41 controller 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, connector, PHY, DMA, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 TI DA8xx MUSB
2 ~~~~~~~~~~~~~
3 For DA8xx/OMAP-L1x/AM17xx/AM18xx platforms.
4
5 Required properties:
6 ~~~~~~~~~~~~~~~~~~~~
7 - compatible : Should be set to "ti,da830-musb".
8
9 - reg: Offset and length of the USB controller register set.
10
11 - interrupts: The USB interrupt number.
12
13 - interrupt-names: Should be set to "mc".
14
15 - dr_mode: The USB operation mode. Should be one of "host", "peripheral" or "otg".
16
17 - phys: Phandle for the PHY device
18
19 - phy-names: Should be "usb-phy"
20
21 - dmas: specifies the dma channels
22
23 - dma-names: specifies the names of the channels. Use "rxN" for receive
24 and "txN" for transmit endpoints. N specifies the endpoint number.
25
26 Optional properties:
27 ~~~~~~~~~~~~~~~~~~~~
28 - vbus-supply: Phandle to a regulator providing the USB bus power.
29
30 DMA
31 ~~~
32 - compatible: ti,da830-cppi41
33 - reg: offset and length of the following register spaces: CPPI DMA Controller,
34 CPPI DMA Scheduler, Queue Manager
35 - reg-names: "controller", "scheduler", "queuemgr"
36 - #dma-cells: should be set to 2. The first number represents the
37 channel number (0 … 3 for endpoints 1 … 4).
38 The second number is 0 for RX and 1 for TX transfers.
39 - dma-channels: should be set to 4 representing the 4 endpoints.
40 - #dma-channels: deprecated
41
42 Example:
43 usb_phy: usb-phy {
44 compatible = "ti,da830-usb-phy";
45 #phy-cells = <0>;
46 };
47 usb0: usb@200000 {
48 compatible = "ti,da830-musb";
49 reg = <0x00200000 0x1000>;
50 ranges;
51 #address-cells = <1>;
52 #size-cells = <1>;
53 interrupts = <58>;
54 interrupt-names = "mc";
55
56 dr_mode = "host";
57 vbus-supply = <&usb_vbus>;
58 phys = <&usb_phy 0>;
59 phy-names = "usb-phy";
60
61 dmas = <&cppi41dma 0 0 &cppi41dma 1 0
62 &cppi41dma 2 0 &cppi41dma 3 0
63 &cppi41dma 0 1 &cppi41dma 1 1
64 &cppi41dma 2 1 &cppi41dma 3 1>;
65 dma-names =
66 "rx1", "rx2", "rx3", "rx4",
67 "tx1", "tx2", "tx3", "tx4";
68
69
70 cppi41dma: dma-controller@201000 {
71 compatible = "ti,da830-cppi41";
72 reg = <0x201000 0x1000
73 0x202000 0x1000
74 0x204000 0x4000>;
75 reg-names = "controller", "scheduler", "queuemgr";
76 interrupts = <58>;
77 #dma-cells = <2>;
78 dma-channels = <4>;
79 };
80
81 };
82

3. 한국어 전문 번역

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

TI DA8xx MUSB controller

1-25

이 binding은 DA8xx, OMAP-L1x, AM17xx, AM18xx platform의 TI MUSB를 설명합니다. 필수 `compatible`은 `ti,da830-musb`이고 `reg`는 controller register set의 offset과 길이, `interrupts`는 USB interrupt 번호이며 이름은 `mc`입니다.

`dr_mode`는 `host`, `peripheral`, `otg` 중 하나입니다. `phys`는 PHY를 참조하고 이름은 `usb-phy`입니다. `dmas`는 DMA channel을 지정하며 `dma-names`는 수신 endpoint에 `rxN`, 송신 endpoint에 `txN`을 사용합니다. N은 endpoint 번호입니다.

VBUS와 DA830 CPPI41 DMA

26-41

선택적 `vbus-supply`는 USB bus 전원을 공급하는 regulator를 참조합니다. DMA controller의 `compatible`은 `ti,da830-cppi41`입니다.

세 register 영역은 CPPI DMA controller, scheduler, queue manager이고 이름은 `controller`, `scheduler`, `queuemgr`입니다. `#dma-cells = 2`이며 첫 cell의 channel 0~3은 endpoint 1~4에 대응하고, 두 번째 cell은 RX가 0, TX가 1입니다. `dma-channels = 4`이며 `#dma-channels`는 폐기되었습니다.

PHY와 MUSB wrapper 예제

42-60

예제 `usb-phy`는 `ti,da830-usb-phy`이고 PHY cell 수는 0입니다. `usb@200000`은 0x1000-byte register 영역, interrupt 58, host mode, VBUS regulator와 해당 PHY를 사용합니다.

Wrapper는 한 개의 address/size cell과 빈 `ranges`를 사용하고 interrupt 이름은 `mc`, PHY 이름은 `usb-phy`입니다.

Example:
        usb_phy: usb-phy {
                compatible = "ti,da830-usb-phy";
                #phy-cells = <0>;
        };
        usb0: usb@200000 {
                compatible = "ti,da830-musb";
                reg = <0x00200000 0x1000>;
                ranges;
                #address-cells = <1>;
                #size-cells = <1>;
                interrupts = <58>;
                interrupt-names = "mc";

                dr_mode = "host";
                vbus-supply = <&usb_vbus>;
                phys = <&usb_phy 0>;
                phy-names = "usb-phy";

Endpoint 1~4 DMA channel 예제

61-69

DMA specifier는 channel 0~3의 RX 방향 0을 먼저, 이어서 같은 channel의 TX 방향 1을 열거합니다. 이름은 `rx1`~`rx4`, `tx1`~`tx4` 순서입니다.

dmas = <&cppi41dma 0 0 &cppi41dma 1 0
        &cppi41dma 2 0 &cppi41dma 3 0
        &cppi41dma 0 1 &cppi41dma 1 1
        &cppi41dma 2 1 &cppi41dma 3 1>;
dma-names =
        "rx1", "rx2", "rx3", "rx4",
        "tx1", "tx2", "tx3", "tx4";

CPPI41 DMA controller 예제

70-81

Child `dma-controller@201000`은 controller 0x201000/0x1000, scheduler 0x202000/0x1000, queue manager 0x204000/0x4000 영역을 사용합니다. Interrupt는 58, DMA specifier cell 수는 2, channel 수는 4입니다.

        cppi41dma: dma-controller@201000 {
                compatible = "ti,da830-cppi41";
                reg =  <0x201000 0x1000
                        0x202000 0x1000
                        0x204000 0x4000>;
                reg-names = "controller", "scheduler", "queuemgr";
                interrupts = <58>;
                #dma-cells = <2>;
                dma-channels = <4>;
        };

};