요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
= Reset Signal Device Tree Bindings =
This binding is intended to represent the hardware reset signals present
internally in most IC (SoC, FPGA, ...) designs. Reset signals for whole
standalone chips are most likely better represented as GPIOs, although there
are likely to be exceptions to this rule.
Hardware blocks typically receive a reset signal. This signal is generated by
a reset provider (e.g. power management or clock module) and received by a
reset consumer (the module being reset, or a module managing when a sub-
ordinate module is reset). This binding exists to represent the provider and
consumer, and provide a way to couple the two together.
A reset signal is represented by the phandle of the provider, plus a reset
specifier - a list of DT cells that represents the reset signal within the
provider. The length (number of cells) and semantics of the reset specifier
are dictated by the binding of the reset provider, although common schemes
are described below.
A word on where to place reset signal consumers in device tree: It is possible
in hardware for a reset signal to affect multiple logically separate HW blocks
at once. In this case, it would be unwise to represent this reset signal in
the DT node of each affected HW block, since if activated, an unrelated block
may be reset. Instead, reset signals should be represented in the DT node
where it makes most sense to control it; this may be a bus node if all
children of the bus are affected by the reset signal, or an individual HW
block node for dedicated reset signals. The intent of this binding is to give
appropriate software access to the reset signals in order to manage the HW,
rather than to slavishly enumerate the reset signal that affects each HW
block.
= Reset providers =
Required properties:
#reset-cells: Number of cells in a reset specifier; Typically 0 for nodes
with a single reset output and 1 for nodes with multiple
reset outputs.
For example:
rst: reset-controller {
#reset-cells = <1>;
};
= Reset consumers =
Required properties:
resets: List of phandle and reset specifier pairs, one pair
for each reset signal that affects the device, or that the
device manages. Note: if the reset provider specifies '0' for
#reset-cells, then only the phandle portion of the pair will
appear.
Optional properties:
reset-names: List of reset signal name strings sorted in the same order as
the resets property. Consumers drivers will use reset-names to
match reset signal names with reset specifiers.
For example:
device {
resets = <&rst 20>;
reset-names = "reset";
};
This represents a device with a single reset signal named "reset".
bus {
resets = <&rst 10> <&rst 11> <&rst 12> <&rst 11>;
reset-names = "i2s1", "i2s2", "dma", "mixer";
};
This represents a bus that controls the reset signal of each of four sub-
ordinate devices. Consider for example a bus that fails to operate unless no
child device has reset asserted.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
reset 신호 모델
1-18이 바인딩은 대부분의 IC, SoC, FPGA 설계 내부에 존재하는 하드웨어 reset 신호를 표현합니다. 독립된 칩 전체의 reset은 예외가 있을 수 있지만 대체로 GPIO로 표현하는 편이 더 적절합니다.
하드웨어 블록은 보통 전원 관리 모듈이나 clock 모듈 같은 reset provider가 생성한 신호를 받습니다. reset consumer는 reset되는 모듈 자체이거나 하위 모듈의 reset 시점을 관리하는 모듈입니다. 이 바인딩은 provider와 consumer를 표현하고 서로 연결하는 방법을 제공합니다.
reset 신호는 provider의 phandle과 reset specifier로 표현합니다. reset specifier는 provider 내부의 reset 신호를 나타내는 DT 셀 목록이며, 길이와 의미는 provider 바인딩이 정합니다.
reset consumer 배치
19-30하나의 reset 신호가 논리적으로 분리된 여러 하드웨어 블록에 동시에 영향을 줄 수 있습니다. 이 신호를 영향받는 모든 블록의 DT 노드에 반복해서 넣으면 한 블록을 조작할 때 관련 없는 블록까지 reset될 수 있습니다.
따라서 reset 신호는 제어하기 가장 알맞은 DT 노드에 표현해야 합니다. 버스의 모든 자식이 영향을 받으면 버스 노드에, 전용 reset이면 개별 하드웨어 블록 노드에 둘 수 있습니다. 목적은 각 블록에 영향을 주는 모든 신호를 기계적으로 열거하는 것이 아니라 소프트웨어가 하드웨어 관리에 필요한 reset 신호에 적절히 접근하게 하는 것입니다.
reset provider
31-43필수 `#reset-cells`는 reset specifier의 셀 수입니다. reset 출력이 하나인 노드는 보통 0, 여러 출력이 있는 노드는 보통 1을 사용합니다.
rst: reset-controller {
#reset-cells = <1>;
};
reset consumer 속성
44-57필수 `resets`는 장치에 영향을 주거나 장치가 관리하는 각 reset 신호마다 phandle과 reset specifier 한 쌍을 나열합니다. provider의 `#reset-cells`가 0이면 각 쌍에는 phandle 부분만 나타납니다.
선택 사항인 `reset-names`는 `resets`와 같은 순서로 정렬한 reset 신호 이름 문자열 목록입니다. consumer 드라이버는 이 이름으로 reset 신호 이름과 지정자를 대응시킵니다.
reset consumer 예제
58-75첫 예제는 `reset`이라는 단일 reset 신호를 가진 장치입니다.
device {
resets = <&rst 20>;
reset-names = "reset";
};
두 번째 예제는 네 하위 장치의 reset 신호를 제어하는 버스입니다. 예를 들어 어떤 자식 장치에도 reset이 assert되어 있지 않아야 동작하는 버스를 이 방식으로 나타낼 수 있습니다.
bus {
resets = <&rst 10> <&rst 11> <&rst 12> <&rst 11>;
reset-names = "i2s1", "i2s2", "dma", "mixer";
};
요약과 해설
reset.txt:1-75바인딩의 역할과 필수 속성을 먼저 해설하고, 접을 수 있는 영어 원문 전체와 원문 줄 좌표를 보존한 한국어 전문 번역을 제공합니다.