← Documents Documentation/devicetree/bindings/reset/reset.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / Reset

Reset signal 공통 바인딩

reset provider·consumer 모델과 phandle 지정자 형식을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

reset.txt:1-75

바인딩의 역할과 필수 속성을 먼저 해설하고, 접을 수 있는 영어 원문 전체와 원문 줄 좌표를 보존한 한국어 전문 번역을 제공합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 = Reset Signal Device Tree Bindings =
2
3 This binding is intended to represent the hardware reset signals present
4 internally in most IC (SoC, FPGA, ...) designs. Reset signals for whole
5 standalone chips are most likely better represented as GPIOs, although there
6 are likely to be exceptions to this rule.
7
8 Hardware blocks typically receive a reset signal. This signal is generated by
9 a reset provider (e.g. power management or clock module) and received by a
10 reset consumer (the module being reset, or a module managing when a sub-
11 ordinate module is reset). This binding exists to represent the provider and
12 consumer, and provide a way to couple the two together.
13
14 A reset signal is represented by the phandle of the provider, plus a reset
15 specifier - a list of DT cells that represents the reset signal within the
16 provider. The length (number of cells) and semantics of the reset specifier
17 are dictated by the binding of the reset provider, although common schemes
18 are described below.
19
20 A word on where to place reset signal consumers in device tree: It is possible
21 in hardware for a reset signal to affect multiple logically separate HW blocks
22 at once. In this case, it would be unwise to represent this reset signal in
23 the DT node of each affected HW block, since if activated, an unrelated block
24 may be reset. Instead, reset signals should be represented in the DT node
25 where it makes most sense to control it; this may be a bus node if all
26 children of the bus are affected by the reset signal, or an individual HW
27 block node for dedicated reset signals. The intent of this binding is to give
28 appropriate software access to the reset signals in order to manage the HW,
29 rather than to slavishly enumerate the reset signal that affects each HW
30 block.
31
32 = Reset providers =
33
34 Required properties:
35 #reset-cells: Number of cells in a reset specifier; Typically 0 for nodes
36 with a single reset output and 1 for nodes with multiple
37 reset outputs.
38
39 For example:
40
41 rst: reset-controller {
42 #reset-cells = <1>;
43 };
44
45 = Reset consumers =
46
47 Required properties:
48 resets: List of phandle and reset specifier pairs, one pair
49 for each reset signal that affects the device, or that the
50 device manages. Note: if the reset provider specifies '0' for
51 #reset-cells, then only the phandle portion of the pair will
52 appear.
53
54 Optional properties:
55 reset-names: List of reset signal name strings sorted in the same order as
56 the resets property. Consumers drivers will use reset-names to
57 match reset signal names with reset specifiers.
58
59 For example:
60
61 device {
62 resets = <&rst 20>;
63 reset-names = "reset";
64 };
65
66 This represents a device with a single reset signal named "reset".
67
68 bus {
69 resets = <&rst 10> <&rst 11> <&rst 12> <&rst 11>;
70 reset-names = "i2s1", "i2s2", "dma", "mixer";
71 };
72
73 This represents a bus that controls the reset signal of each of four sub-
74 ordinate devices. Consider for example a bus that fails to operate unless no
75 child device has reset asserted.
76

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";
};