요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
* Broadcom cable/DSL/settop platforms
Required properties:
- compatible: "brcm,bcm3368", "brcm,bcm3384", "brcm,bcm33843"
"brcm,bcm3384-viper", "brcm,bcm33843-viper"
"brcm,bcm6328", "brcm,bcm6358", "brcm,bcm6362", "brcm,bcm6368",
"brcm,bcm63168", "brcm,bcm63268",
"brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360",
"brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425"
The experimental -viper variants are for running Linux on the 3384's
BMIPS4355 cable modem CPU instead of the BMIPS5000 application processor.
Power management
----------------
For power management (particularly, S2/S3/S5 system suspend), the following SoC
components are needed:
= Always-On control block (AON CTRL)
This hardware provides control registers for the "always-on" (even in low-power
modes) hardware, such as the Power Management State Machine (PMSM).
Required properties:
- compatible : should be one of
"brcm,bcm7425-aon-ctrl"
"brcm,bcm7429-aon-ctrl"
"brcm,bcm7435-aon-ctrl" and
"brcm,brcmstb-aon-ctrl"
- reg : the register start and length for the AON CTRL block
Example:
syscon@410000 {
compatible = "brcm,bcm7425-aon-ctrl", "brcm,brcmstb-aon-ctrl";
reg = <0x410000 0x400>;
};
= Memory controllers
A Broadcom STB SoC typically has a number of independent memory controllers,
each of which may have several associated hardware blocks, which are versioned
independently (control registers, DDR PHYs, etc.). One might consider
describing these controllers as a parent "memory controllers" block, which
contains N sub-nodes (one for each controller in the system), each of which is
associated with a number of hardware register resources (e.g., its PHY.
== MEMC (MEMory Controller)
Represents a single memory controller instance.
Required properties:
- compatible : should contain "brcm,brcmstb-memc" and "simple-bus"
- ranges : should contain the child address in the parent address
space, must be 0 here, and the register start and length of
the entire memory controller (including all sub nodes: DDR PHY,
arbiter, etc.)
- #address-cells : must be 1
- #size-cells : must be 1
Example:
memory-controller@0 {
compatible = "brcm,brcmstb-memc", "simple-bus";
ranges = <0x0 0x0 0xa000>;
#address-cells = <1>;
#size-cells = <1>;
memc-arb@1000 {
...
};
memc-ddr@2000 {
...
};
ddr-phy@6000 {
...
};
};
Should contain subnodes for any of the following relevant hardware resources:
== DDR PHY control
Control registers for this memory controller's DDR PHY.
Required properties:
- compatible : should contain one of these
"brcm,brcmstb-ddr-phy-v64.5"
"brcm,brcmstb-ddr-phy"
- reg : the DDR PHY register range and length
Example:
ddr-phy@6000 {
compatible = "brcm,brcmstb-ddr-phy-v64.5";
reg = <0x6000 0xc8>;
};
== DDR memory controller sequencer
Control registers for this memory controller's DDR memory sequencer
Required properties:
- compatible : should contain one of these
"brcm,bcm7425-memc-ddr"
"brcm,bcm7429-memc-ddr"
"brcm,bcm7435-memc-ddr" and
"brcm,brcmstb-memc-ddr"
- reg : the DDR sequencer register range and length
Example:
memc-ddr@2000 {
compatible = "brcm,bcm7425-memc-ddr", "brcm,brcmstb-memc-ddr";
reg = <0x2000 0x300>;
};
== MEMC Arbiter
The memory controller arbiter is responsible for memory clients allocation
(bandwidth, priorities etc.) and needs to have its contents restored during
deep sleep states (S3).
Required properties:
- compatible : should contain one of these
"brcm,brcmstb-memc-arb-v10.0.0.0"
"brcm,brcmstb-memc-arb"
- reg : the DDR Arbiter register range and length
Example:
memc-arb@1000 {
compatible = "brcm,brcmstb-memc-arb-v10.0.0.0";
reg = <0x1000 0x248>;
};
== Timers
The Broadcom STB chips contain a timer block with several general purpose
timers that can be used.
Required properties:
- compatible : should contain one of:
"brcm,bcm7425-timers"
"brcm,bcm7429-timers"
"brcm,bcm7435-timers" and
"brcm,brcmstb-timers"
- reg : the timers register range
- interrupts : the interrupt line for this timer block
Example:
timers: timer@4067c0 {
compatible = "brcm,bcm7425-timers", "brcm,brcmstb-timers";
reg = <0x4067c0 0x40>;
interrupts = <&periph_intc 19>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Broadcom cable·DSL·settop 플랫폼
1-14필수 root `compatible`은 `brcm,bcm3368`, `brcm,bcm3384`, `brcm,bcm33843`, `brcm,bcm3384-viper`, `brcm,bcm33843-viper`, `brcm,bcm6328`, `brcm,bcm6358`, `brcm,bcm6362`, `brcm,bcm6368`, `brcm,bcm63168`, `brcm,bcm63268`, `brcm,bcm7125`, `brcm,bcm7346`, `brcm,bcm7358`, `brcm,bcm7360`, `brcm,bcm7362`, `brcm,bcm7420`, `brcm,bcm7425` 중 하나입니다.
실험적인 `-viper` variant는 BMIPS5000 application processor 대신 BCM3384의 BMIPS4355 cable modem CPU에서 Linux를 실행하기 위한 것입니다.
root 호환 문자열을 용도별 SoC 계열로 묶었습니다.
Always-On control block
15-40특히 S2·S3·S5 system suspend의 power management에는 Always-On control block(AON CTRL)이 필요합니다. 이 hardware는 Power Management State Machine(PMSM)처럼 low-power mode에서도 항상 켜져 있는 hardware의 control register를 제공합니다.
`compatible`은 chip별 `brcm,bcm7425-aon-ctrl`, `brcm,bcm7429-aon-ctrl`, `brcm,bcm7435-aon-ctrl` 중 하나와 generic `brcm,brcmstb-aon-ctrl`을 사용합니다. `reg`는 AON CTRL block의 register 시작 주소와 길이입니다.
Always-on register block이 system suspend 상태에서 PMSM을 유지·제어합니다.
syscon@410000 {
compatible = "brcm,bcm7425-aon-ctrl", "brcm,brcmstb-aon-ctrl";
reg = <0x410000 0x400>;
};
Memory controller parent와 MEMC
41-83Broadcom STB SoC에는 보통 독립적인 memory controller가 여러 개 있고, 각 controller에는 독립적으로 version이 붙는 control register, DDR PHY 등의 hardware block이 연결됩니다. 이를 parent `memory controllers` block 아래에 controller별 subnode를 두고 각 subnode에 PHY 등 여러 register resource를 연결하는 구조로 기술할 수 있습니다.
단일 MEMC instance의 `compatible`은 `brcm,brcmstb-memc`와 `simple-bus`를 포함합니다. `ranges`는 parent 공간의 child address 0과 전체 memory controller의 register 시작·길이를 담으며 DDR PHY, arbiter 등 모든 subnode를 포함합니다. `#address-cells`와 `#size-cells`는 모두 1입니다.
하나의 MEMC 주소 공간 안에서 arbiter, DDR sequencer, DDR PHY가 각각 register resource를 사용합니다.
memory-controller@0 {
compatible = "brcm,brcmstb-memc", "simple-bus";
ranges = <0x0 0x0 0xa000>;
#address-cells = <1>;
#size-cells = <1>;
memc-arb@1000 {
...
};
memc-ddr@2000 {
...
};
ddr-phy@6000 {
...
};
};
DDR PHY control
84-103MEMC는 관련 hardware resource subnode를 포함해야 합니다. DDR PHY control은 해당 memory controller의 DDR PHY control register를 나타냅니다. `compatible`은 `brcm,brcmstb-ddr-phy-v64.5` 또는 `brcm,brcmstb-ddr-phy`, `reg`는 DDR PHY register 범위와 길이입니다.
ddr-phy@6000 {
compatible = "brcm,brcmstb-ddr-phy-v64.5";
reg = <0x6000 0xc8>;
};
DDR memory-controller sequencer
104-123DDR memory sequencer의 control register node입니다. `compatible`은 chip별 `brcm,bcm7425-memc-ddr`, `brcm,bcm7429-memc-ddr`, `brcm,bcm7435-memc-ddr` 중 하나와 generic `brcm,brcmstb-memc-ddr`를 사용합니다. `reg`는 DDR sequencer register 범위와 길이입니다.
memc-ddr@2000 {
compatible = "brcm,bcm7425-memc-ddr", "brcm,brcmstb-memc-ddr";
reg = <0x2000 0x300>;
};
MEMC arbiter
124-144Memory controller arbiter는 bandwidth와 priority 같은 memory client allocation을 담당하며 deep sleep S3에서 내용을 복원해야 합니다. `compatible`은 `brcm,brcmstb-memc-arb-v10.0.0.0` 또는 `brcm,brcmstb-memc-arb`, `reg`는 DDR arbiter register 범위와 길이입니다.
memc-arb@1000 {
compatible = "brcm,brcmstb-memc-arb-v10.0.0.0";
reg = <0x1000 0x248>;
};
Broadcom STB timer block
145-166Broadcom STB chip에는 여러 general-purpose timer를 제공하는 timer block이 있습니다. `compatible`은 chip별 `brcm,bcm7425-timers`, `brcm,bcm7429-timers`, `brcm,bcm7435-timers` 중 하나와 generic `brcm,brcmstb-timers`를 사용합니다. `reg`는 timer register 범위이고 `interrupts`는 이 block의 interrupt line입니다.
timers: timer@4067c0 {
compatible = "brcm,bcm7425-timers", "brcm,brcmstb-timers";
reg = <0x4067c0 0x40>;
interrupts = <&periph_intc 19>;
};
요약과 해설
soc.txt:1-166Cable·DSL·STB root 호환성과 suspend를 위한 always-on·memory-controller 계층을 설명합니다.