← Documents Documentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

ARM Broadcom STB platform bindings

Broadcom STB의 system-control syscon, BIU Write Pairing, SMP boot, reboot, AON과 memory controller 계층을 설명합니다.

Source pathDocumentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

brcm,brcmstb.txt:1-258

BCM7xxx 계열 STB는 chip별 compatible과 공통 family string을 함께 사용하며 CPU boot와 reset은 BIU, continuation, SUN top syscon을 phandle tuple로 연결합니다.

Power management 영역은 AON CTRL과 여러 MEMC instance를 parent bus 아래 구성하고, 각 controller에 versioned DDR PHY, SHIMPHY와 MEMC DDR control resource를 배치합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 ARM Broadcom STB platforms Device Tree Bindings
2 -----------------------------------------------
3 Boards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants)
4 SoC shall have the following DT organization:
5
6 Required root node properties:
7 - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb"
8
9 example:
10 / {
11 #address-cells = <2>;
12 #size-cells = <2>;
13 model = "Broadcom STB (bcm7445)";
14 compatible = "brcm,bcm7445", "brcm,brcmstb";
15
16 Further, syscon nodes that map platform-specific registers used for general
17 system control is required:
18
19 - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon"
20 - compatible: "brcm,bcm<chip_id>-cpu-biu-ctrl",
21 "brcm,brcmstb-cpu-biu-ctrl",
22 "syscon"
23 - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon"
24
25 cpu-biu-ctrl node
26 -------------------
27 SoCs with Broadcom Brahma15 ARM-based and Brahma53 ARM64-based CPUs have a
28 specific Bus Interface Unit (BIU) block which controls and interfaces the CPU
29 complex to the different Memory Controller Ports (MCP), one per memory
30 controller (MEMC). This BIU block offers a feature called Write Pairing which
31 consists in collapsing two adjacent cache lines into a single (bursted) write
32 transaction towards the memory controller (MEMC) to maximize write bandwidth.
33
34 Required properties:
35
36 - compatible: must be "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon"
37
38 Optional properties:
39
40 - brcm,write-pairing:
41 Boolean property, which when present indicates that the chip
42 supports write-pairing.
43
44 example:
45 rdb {
46 #address-cells = <1>;
47 #size-cells = <1>;
48 compatible = "simple-bus";
49 ranges = <0 0x00 0xf0000000 0x1000000>;
50
51 sun_top_ctrl: syscon@404000 {
52 compatible = "brcm,bcm7445-sun-top-ctrl", "syscon";
53 reg = <0x404000 0x51c>;
54 };
55
56 hif_cpubiuctrl: syscon@3e2400 {
57 compatible = "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon";
58 reg = <0x3e2400 0x5b4>;
59 brcm,write-pairing;
60 };
61
62 hif_continuation: syscon@452000 {
63 compatible = "brcm,bcm7445-hif-continuation", "syscon";
64 reg = <0x452000 0x100>;
65 };
66 };
67
68 Nodes that allow for support of SMP initialization and reboot are required:
69
70 smpboot
71 -------
72 Required properties:
73
74 - compatible
75 The string "brcm,brcmstb-smpboot".
76
77 - syscon-cpu
78 A phandle / integer array property which lets the BSP know the location
79 of certain CPU power-on registers.
80
81 The layout of the property is as follows:
82 o a phandle to the "hif_cpubiuctrl" syscon node
83 o offset to the base CPU power zone register
84 o offset to the base CPU reset register
85
86 - syscon-cont
87 A phandle pointing to the syscon node which describes the CPU boot
88 continuation registers.
89 o a phandle to the "hif_continuation" syscon node
90
91 example:
92 smpboot {
93 compatible = "brcm,brcmstb-smpboot";
94 syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>;
95 syscon-cont = <&hif_continuation>;
96 };
97
98 reboot
99 -------
100 Required properties
101
102 - compatible
103 The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with
104 the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm
105 chips with the old SUN_TOP_CTRL interface.
106
107 - syscon
108 A phandle / integer array that points to the syscon node which describes
109 the general system reset registers.
110 o a phandle to "sun_top_ctrl"
111 o offset to the "reset source enable" register
112 o offset to the "software master reset" register
113
114 example:
115 reboot {
116 compatible = "brcm,brcmstb-reboot";
117 syscon = <&sun_top_ctrl 0x304 0x308>;
118 };
119
120
121
122 Power management
123 ----------------
124
125 For power management (particularly, S2/S3/S5 system suspend), the following SoC
126 components are needed:
127
128 = Always-On control block (AON CTRL)
129
130 This hardware provides control registers for the "always-on" (even in low-power
131 modes) hardware, such as the Power Management State Machine (PMSM).
132
133 Required properties:
134 - compatible : should contain "brcm,brcmstb-aon-ctrl"
135 - reg : the register start and length for the AON CTRL block
136
137 Example:
138
139 aon-ctrl@410000 {
140 compatible = "brcm,brcmstb-aon-ctrl";
141 reg = <0x410000 0x400>;
142 };
143
144 = Memory controllers
145
146 A Broadcom STB SoC typically has a number of independent memory controllers,
147 each of which may have several associated hardware blocks, which are versioned
148 independently (control registers, DDR PHYs, etc.). One might consider
149 describing these controllers as a parent "memory controllers" block, which
150 contains N sub-nodes (one for each controller in the system), each of which is
151 associated with a number of hardware register resources (e.g., its PHY). See
152 the example device tree snippet below.
153
154 == MEMC (MEMory Controller)
155
156 Represents a single memory controller instance.
157
158 Required properties:
159 - compatible : should contain "brcm,brcmstb-memc" and "simple-bus"
160
161 Should contain subnodes for any of the following relevant hardware resources:
162
163 == DDR PHY control
164
165 Control registers for this memory controller's DDR PHY.
166
167 Required properties:
168 - compatible : should contain one of these
169 "brcm,brcmstb-ddr-phy-v71.1"
170 "brcm,brcmstb-ddr-phy-v72.0"
171 "brcm,brcmstb-ddr-phy-v225.1"
172 "brcm,brcmstb-ddr-phy-v240.1"
173 "brcm,brcmstb-ddr-phy-v240.2"
174
175 - reg : the DDR PHY register range
176
177 == DDR SHIMPHY
178
179 Control registers for this memory controller's DDR SHIMPHY.
180
181 Required properties:
182 - compatible : should contain "brcm,brcmstb-ddr-shimphy-v1.0"
183 - reg : the DDR SHIMPHY register range
184
185 == MEMC DDR control
186
187 Sequencer DRAM parameters and control registers. Used for Self-Refresh
188 Power-Down (SRPD), among other things.
189
190 See Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml for a
191 full list of supported compatible strings and properties.
192
193 Example:
194
195 memory_controllers {
196 ranges;
197 compatible = "simple-bus";
198
199 memc@0 {
200 compatible = "brcm,brcmstb-memc", "simple-bus";
201 ranges;
202
203 ddr-phy@f1106000 {
204 compatible = "brcm,brcmstb-ddr-phy-v240.1";
205 reg = <0xf1106000 0x21c>;
206 };
207
208 shimphy@f1108000 {
209 compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
210 reg = <0xf1108000 0xe4>;
211 };
212
213 memc-ddr@f1102000 {
214 reg = <0xf1102000 0x800>;
215 compatible = "brcm,brcmstb-memc-ddr";
216 };
217 };
218
219 memc@1 {
220 compatible = "brcm,brcmstb-memc", "simple-bus";
221 ranges;
222
223 ddr-phy@f1186000 {
224 compatible = "brcm,brcmstb-ddr-phy-v240.1";
225 reg = <0xf1186000 0x21c>;
226 };
227
228 shimphy@f1188000 {
229 compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
230 reg = <0xf1188000 0xe4>;
231 };
232
233 memc-ddr@f1182000 {
234 reg = <0xf1182000 0x800>;
235 compatible = "brcm,brcmstb-memc-ddr";
236 };
237 };
238
239 memc@2 {
240 compatible = "brcm,brcmstb-memc", "simple-bus";
241 ranges;
242
243 ddr-phy@f1206000 {
244 compatible = "brcm,brcmstb-ddr-phy-v240.1";
245 reg = <0xf1206000 0x21c>;
246 };
247
248 shimphy@f1208000 {
249 compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
250 reg = <0xf1208000 0xe4>;
251 };
252
253 memc-ddr@f1202000 {
254 reg = <0xf1202000 0x800>;
255 compatible = "brcm,brcmstb-memc-ddr";
256 };
257 };
258 };
259

3. 한국어 전문 번역

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

Broadcom STB root와 system-control syscon

1-24

ARM Broadcom STB platform Device Tree binding

Broadcom Brahma15 ARM 기반 BCMxxxx SoC, 일반적으로 BCM7xxx 계열을 사용하는 board는 이 문서의 DT 구성을 따라야 합니다.

Root node의 필수 `compatible`은 chip별 `brcm,bcm<chip_id>`와 공통 family string `brcm,brcmstb`입니다.

BCM7445 root node 예

/ {
    #address-cells = <2>;
    #size-cells = <2>;
    model = "Broadcom STB (bcm7445)";
    compatible = "brcm,bcm7445", "brcm,brcmstb";

일반 system control에 사용하는 platform-specific register를 mapping하는 syscon node도 필요합니다.

SUN top control은 `brcm,bcm<chip_id>-sun-top-ctrl`, `syscon`을 사용합니다. CPU BIU control은 chip별 `brcm,bcm<chip_id>-cpu-biu-ctrl`, 공통 `brcm,brcmstb-cpu-biu-ctrl`, `syscon`을 사용합니다. HIF continuation은 `brcm,bcm<chip_id>-hif-continuation`, `syscon`을 사용합니다.

Broadcom STB system-control 구성
Rootbrcm,bcm<chip_id> + brcm,brcmstb
sun_top_ctrl일반 reset과 top-level system control
hif_cpubiuctrlCPU complex와 MEMC port interface
hif_continuationCPU boot continuation register

Root family identification과 세 syscon register block의 관계입니다.

CPU BIU와 Write Pairing

25-67

`cpu-biu-ctrl` node

Broadcom Brahma15 ARM CPU와 Brahma53 ARM64 CPU를 사용하는 SoC에는 전용 Bus Interface Unit, 즉 BIU block이 있습니다. BIU는 CPU complex를 서로 다른 Memory Controller Port, 즉 MCP에 연결하고 제어하며 memory controller, 즉 MEMC마다 port 하나가 대응합니다.

BIU의 Write Pairing 기능은 인접한 cache line 두 개를 memory controller로 보내는 하나의 burst write transaction으로 합쳐 write bandwidth를 최대화합니다.

필수 `compatible`은 `brcm,bcm7445-cpu-biu-ctrl`, `brcm,brcmstb-cpu-biu-ctrl`, `syscon`입니다.

Optional boolean property `brcm,write-pairing`이 있으면 해당 chip이 write pairing을 지원한다는 뜻입니다.

SUN top control, CPU BIU control과 HIF continuation을 배치한 예

rdb {
    #address-cells = <1>;
    #size-cells = <1>;
    compatible = "simple-bus";
    ranges = <0 0x00 0xf0000000 0x1000000>;

    sun_top_ctrl: syscon@404000 {
        compatible = "brcm,bcm7445-sun-top-ctrl", "syscon";
        reg = <0x404000 0x51c>;
    };

    hif_cpubiuctrl: syscon@3e2400 {
        compatible = "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon";
        reg = <0x3e2400 0x5b4>;
        brcm,write-pairing;
    };

    hif_continuation: syscon@452000 {
        compatible = "brcm,bcm7445-hif-continuation", "syscon";
        reg = <0x452000 0x100>;
    };
};
BIU Write Pairing data path
CPU complex인접 cache line 두 개 write
CPU BIUWrite Pairing으로 결합
MCPMEMC별 Memory Controller Port
MEMC하나의 burst write transaction 수신

두 cache line을 하나의 burst transaction으로 결합하는 흐름입니다.

SMP initialization용 smpboot node

68-97

SMP initialization과 reboot를 지원하는 node가 필요합니다.

`smpboot`의 필수 property

`compatible` string은 `brcm,brcmstb-smpboot`입니다.

`syscon-cpu`는 BSP에 특정 CPU power-on register 위치를 알려 주는 phandle 및 integer array property입니다. 배열에는 `hif_cpubiuctrl` syscon node의 phandle, base CPU power zone register offset, base CPU reset register offset을 순서대로 둡니다.

`syscon-cont`는 CPU boot continuation register를 설명하는 syscon node를 가리키는 phandle이며 `hif_continuation` node를 참조합니다.

SMP boot node 예

smpboot {
    compatible = "brcm,brcmstb-smpboot";
    syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>;
    syscon-cont = <&hif_continuation>;
};

System reboot node

98-121

`reboot`의 필수 property

새 SYS_CTRL interface를 사용하는 40nm/28nm chip은 `compatible = "brcm,brcmstb-reboot"`를 사용합니다. 오래된 SUN_TOP_CTRL interface를 사용하는 65nm chip은 `brcm,bcm7038-reboot`를 사용합니다.

`syscon`은 general system reset register를 설명하는 syscon node를 가리키는 phandle 및 integer array입니다. 배열에는 `sun_top_ctrl` phandle, `reset source enable` register offset, `software master reset` register offset을 순서대로 둡니다.

Reboot node 예

reboot {
    compatible = "brcm,brcmstb-reboot";
    syscon = <&sun_top_ctrl 0x304 0x308>;
};
SMP boot와 reboot tuple
PropertyElement 1Element 2Element 3
syscon-cpuhif_cpubiuctrl phandleCPU power zone offsetCPU reset offset
syscon-conthif_continuation phandle--
reboot sysconsun_top_ctrl phandlereset source enable offsetsoftware master reset offset

각 array property의 element 순서와 대상 register를 비교합니다.

Power management와 AON CTRL

122-143

Power management

특히 S2, S3, S5 system suspend를 지원하려면 아래 SoC component가 필요합니다.

Always-On control block, 즉 AON CTRL

이 hardware는 low-power mode에서도 항상 켜져 있는 hardware의 control register를 제공합니다. Power Management State Machine, 즉 PMSM이 그 예입니다.

필수 `compatible`은 `brcm,brcmstb-aon-ctrl`이고 `reg`에는 AON CTRL block의 register 시작 주소와 길이가 들어갑니다.

AON CTRL node 예

aon-ctrl@410000 {
        compatible = "brcm,brcmstb-aon-ctrl";
        reg = <0x410000 0x400>;
};

Memory controller, DDR PHY와 SHIMPHY

144-258

Memory controller

Broadcom STB SoC에는 보통 서로 독립적인 memory controller가 여러 개 있습니다. Controller마다 control register, DDR PHY 등 독립적으로 version이 관리되는 hardware block이 여러 개 연결될 수 있습니다.

이를 parent `memory_controllers` block으로 표현하고 system의 controller마다 subnode 하나를 두며, 각 subnode에 PHY 같은 hardware register resource를 연결할 수 있습니다.

MEMC, 즉 MEMory Controller

MEMC node 하나는 단일 memory controller instance를 나타냅니다. 필수 `compatible`에는 `brcm,brcmstb-memc`와 `simple-bus`가 들어가야 하며 관련 hardware resource를 subnode로 포함해야 합니다.

DDR PHY control

이 node는 해당 memory controller의 DDR PHY control register를 나타냅니다. `compatible`은 `brcm,brcmstb-ddr-phy-v71.1`, `brcm,brcmstb-ddr-phy-v72.0`, `brcm,brcmstb-ddr-phy-v225.1`, `brcm,brcmstb-ddr-phy-v240.1`, `brcm,brcmstb-ddr-phy-v240.2` 중 하나여야 하고 `reg`에는 DDR PHY register range가 들어갑니다.

DDR SHIMPHY

이 node는 해당 memory controller의 DDR SHIMPHY control register를 나타냅니다. 필수 `compatible`은 `brcm,brcmstb-ddr-shimphy-v1.0`이고 `reg`에는 DDR SHIMPHY register range가 들어갑니다.

MEMC DDR control

이 block은 sequencer DRAM parameter와 control register를 제공하며 Self-Refresh Power-Down, 즉 SRPD 등에 사용됩니다.

지원하는 `compatible` string과 property 전체 목록은 `Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml`을 참조하십시오.

세 memory controller instance를 구성한 예

memory_controllers {
        ranges;
        compatible = "simple-bus";

        memc@0 {
                compatible = "brcm,brcmstb-memc", "simple-bus";
                ranges;

                ddr-phy@f1106000 {
                        compatible = "brcm,brcmstb-ddr-phy-v240.1";
                        reg = <0xf1106000 0x21c>;
                };

                shimphy@f1108000 {
                        compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
                        reg = <0xf1108000 0xe4>;
                };

                memc-ddr@f1102000 {
                        reg = <0xf1102000 0x800>;
                        compatible = "brcm,brcmstb-memc-ddr";
                };
        };

        memc@1 {
                compatible = "brcm,brcmstb-memc", "simple-bus";
                ranges;

                ddr-phy@f1186000 {
                        compatible = "brcm,brcmstb-ddr-phy-v240.1";
                        reg = <0xf1186000 0x21c>;
                };

                shimphy@f1188000 {
                        compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
                        reg = <0xf1188000 0xe4>;
                };

                memc-ddr@f1182000 {
                        reg = <0xf1182000 0x800>;
                        compatible = "brcm,brcmstb-memc-ddr";
                };
        };

        memc@2 {
                compatible = "brcm,brcmstb-memc", "simple-bus";
                ranges;

                ddr-phy@f1206000 {
                        compatible = "brcm,brcmstb-ddr-phy-v240.1";
                        reg = <0xf1206000 0x21c>;
                };

                shimphy@f1208000 {
                        compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
                        reg = <0xf1208000 0xe4>;
                };

                memc-ddr@f1202000 {
                        reg = <0xf1202000 0x800>;
                        compatible = "brcm,brcmstb-memc-ddr";
                };
        };
};
Broadcom STB memory controller 계층
memory_controllerssimple-bus parent
memc@Nbrcm,brcmstb-memc + simple-bus
ddr-phyVersioned DDR PHY control registers
shimphyDDR SHIMPHY control registers
memc-ddrSequencer DRAM parameters와 SRPD control

Parent bus 아래 각 MEMC instance와 versioned hardware resource를 배치합니다.