← Documents Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Broadcom STB AVS CPU interface

AVS co-processor mailbox와 양방향 interrupt register 바인딩입니다.

Source pathDocumentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

brcm,stb-avs-cpu-freq.txt:1-76

Host command, AVS trigger와 completion interrupt의 세-node 구조를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Broadcom AVS mail box and interrupt register bindings
2 =====================================================
3
4 A total of three DT nodes are required. One node (brcm,avs-cpu-data-mem)
5 references the mailbox register used to communicate with the AVS CPU[1]. The
6 second node (brcm,avs-cpu-l2-intr) is required to trigger an interrupt on
7 the AVS CPU. The interrupt tells the AVS CPU that it needs to process a
8 command sent to it by a driver. Interrupting the AVS CPU is mandatory for
9 commands to be processed.
10
11 The interface also requires a reference to the AVS host interrupt controller,
12 so a driver can react to interrupts generated by the AVS CPU whenever a command
13 has been processed. See [2] for more information on the brcm,l2-intc node.
14
15 [1] The AVS CPU is an independent co-processor that runs proprietary
16 firmware. On some SoCs, this firmware supports DFS and DVFS in addition to
17 Adaptive Voltage Scaling.
18
19 [2] Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.yaml
20
21
22 Node brcm,avs-cpu-data-mem
23 --------------------------
24
25 Required properties:
26 - compatible: must include: brcm,avs-cpu-data-mem and
27 should include: one of brcm,bcm7271-avs-cpu-data-mem or
28 brcm,bcm7268-avs-cpu-data-mem
29 - reg: Specifies base physical address and size of the registers.
30 - interrupts: The interrupt that the AVS CPU will use to interrupt the host
31 when a command completed.
32 - interrupt-names: The name of the interrupt used to interrupt the host.
33
34 Optional properties:
35 - None
36
37 Node brcm,avs-cpu-l2-intr
38 -------------------------
39
40 Required properties:
41 - compatible: must include: brcm,avs-cpu-l2-intr and
42 should include: one of brcm,bcm7271-avs-cpu-l2-intr or
43 brcm,bcm7268-avs-cpu-l2-intr
44 - reg: Specifies base physical address and size of the registers.
45
46 Optional properties:
47 - None
48
49
50 Example
51 =======
52
53 avs_host_l2_intc: interrupt-controller@f04d1200 {
54 #interrupt-cells = <1>;
55 compatible = "brcm,l2-intc";
56 interrupt-parent = <&intc>;
57 reg = <0xf04d1200 0x48>;
58 interrupt-controller;
59 interrupts = <0x0 0x19 0x0>;
60 interrupt-names = "avs";
61 };
62
63 avs-cpu-data-mem@f04c4000 {
64 compatible = "brcm,bcm7271-avs-cpu-data-mem",
65 "brcm,avs-cpu-data-mem";
66 reg = <0xf04c4000 0x60>;
67 interrupts = <0x1a>;
68 interrupt-parent = <&avs_host_l2_intc>;
69 interrupt-names = "sw_intr";
70 };
71
72 avs-cpu-l2-intr@f04d1100 {
73 compatible = "brcm,bcm7271-avs-cpu-l2-intr",
74 "brcm,avs-cpu-l2-intr";
75 reg = <0xf04d1100 0x10>;
76 };
77

3. 한국어 전문 번역

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

Broadcom AVS mailbox와 interrupts

1-21

Broadcom AVS mailbox 및 interrupt register 바인딩입니다. 전체 interface에는 세 DT node가 필요합니다. `brcm,avs-cpu-data-mem`은 AVS CPU와 통신하는 mailbox register를 나타내고, `brcm,avs-cpu-l2-intr`은 AVS CPU에 interrupt를 발생시켜 driver command를 처리하게 합니다.

Command 처리에는 AVS CPU interrupt가 필수입니다. Driver가 command 완료 후 AVS CPU가 발생시키는 interrupt에 반응하려면 AVS host interrupt controller도 참조해야 합니다.

AVS CPU는 proprietary firmware를 실행하는 독립 co-processor입니다. 일부 SoC firmware는 Adaptive Voltage Scaling뿐 아니라 DFS와 DVFS도 지원합니다.

Host interrupt controller `brcm,l2-intc`의 자세한 내용은 `Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.yaml`을 참조합니다.

Broadcom AVS command exchange
Host driverMailbox에 command 기록
brcm,avs-cpu-l2-intrAVS CPU에 처리 요청 interrupt
AVS CPU firmwareAVS / DFS / DVFS command 처리
brcm,avs-cpu-data-mem interruptHost L2 interrupt controller로 완료 통지
Host driver결과 확인

Host driver의 mailbox command와 양방향 interrupt 경로입니다.

AVS CPU data-memory node

22-36

Data-memory node의 `compatible`에는 공통 `brcm,avs-cpu-data-mem`을 반드시 포함하고 SoC에 따라 `brcm,bcm7271-avs-cpu-data-mem` 또는 `brcm,bcm7268-avs-cpu-data-mem` 중 하나를 포함하는 것이 좋습니다.

`reg`는 mailbox register의 physical base와 size입니다. `interrupts`는 command 완료 시 AVS CPU가 host에 보내는 interrupt이고 `interrupt-names`는 이 host interrupt의 이름입니다. 선택 속성은 없습니다.

Broadcom AVS DT nodes
NodeRoleInterrupt direction
brcm,avs-cpu-data-memMailbox + completion interruptAVS CPU -> host
brcm,avs-cpu-l2-intrCommand trigger registerHost -> AVS CPU
brcm,l2-intcHost interrupt controllerCompletion routing

세 node의 역할과 interrupt 방향을 구분합니다.

AVS CPU L2 interrupt node

37-49

Trigger node의 `compatible`에는 공통 `brcm,avs-cpu-l2-intr`을 반드시 포함하고 SoC에 따라 `brcm,bcm7271-avs-cpu-l2-intr` 또는 `brcm,bcm7268-avs-cpu-l2-intr` 중 하나를 포함하는 것이 좋습니다.

`reg`에는 AVS CPU interrupt-trigger register의 physical base address와 size를 지정합니다. 선택 속성은 없습니다.

BCM7271 AVS 예제

50-76

예제는 `brcm,l2-intc` host controller, address `0xf04c4000`의 data-memory mailbox, address `0xf04d1100`의 AVS interrupt trigger를 구성합니다.

Data-memory node는 host controller를 `interrupt-parent`로 사용하고 `sw_intr` completion interrupt를 받습니다. Trigger node는 command 처리 요청에 사용할 register block을 제공합니다.

avs_host_l2_intc: interrupt-controller@f04d1200 {
        #interrupt-cells = <1>;
        compatible = "brcm,l2-intc";
        interrupt-parent = <&intc>;
        reg = <0xf04d1200 0x48>;
        interrupt-controller;
        interrupts = <0x0 0x19 0x0>;
        interrupt-names = "avs";
};

avs-cpu-data-mem@f04c4000 {
        compatible = "brcm,bcm7271-avs-cpu-data-mem",
                        "brcm,avs-cpu-data-mem";
        reg = <0xf04c4000 0x60>;
        interrupts = <0x1a>;
        interrupt-parent = <&avs_host_l2_intc>;
        interrupt-names = "sw_intr";
};

avs-cpu-l2-intr@f04d1100 {
        compatible = "brcm,bcm7271-avs-cpu-l2-intr",
                        "brcm,avs-cpu-l2-intr";
        reg = <0xf04d1100 0x10>;
};