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

Linux 6.18.37 · Devicetree Bindings / Reset

TI SysCon reset controller

syscon 기반 reset의 7셀 제어 정보와 Keystone 2 예제를 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

ti-syscon-reset.txt:1-91

reset provider와 consumer의 관계 및 지정자 형식을 해설하고, 접을 수 있는 영어 원문 전체와 원문 줄 좌표를 보존한 한국어 전문 번역을 제공합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 TI SysCon Reset Controller
2 =======================
3
4 Almost all SoCs have hardware modules that require reset control in addition
5 to clock and power control for their functionality. The reset control is
6 typically provided by means of memory-mapped I/O registers. These registers are
7 sometimes a part of a larger register space region implementing various
8 functionalities. This register range is best represented as a syscon node to
9 allow multiple entities to access their relevant registers in the common
10 register space.
11
12 A SysCon Reset Controller node defines a device that uses a syscon node
13 and provides reset management functionality for various hardware modules
14 present on the SoC.
15
16 SysCon Reset Controller Node
17 ============================
18 Each of the reset provider/controller nodes should be a child of a syscon
19 node and have the following properties.
20
21 Required properties:
22 --------------------
23 - compatible : Should be,
24 "ti,k2e-pscrst"
25 "ti,k2l-pscrst"
26 "ti,k2hk-pscrst"
27 "ti,syscon-reset"
28 - #reset-cells : Should be 1. Please see the reset consumer node below
29 for usage details
30 - ti,reset-bits : Contains the reset control register information
31 Should contain 7 cells for each reset exposed to
32 consumers, defined as:
33 Cell #1 : offset of the reset assert control
34 register from the syscon register base
35 Cell #2 : bit position of the reset in the reset
36 assert control register
37 Cell #3 : offset of the reset deassert control
38 register from the syscon register base
39 Cell #4 : bit position of the reset in the reset
40 deassert control register
41 Cell #5 : offset of the reset status register
42 from the syscon register base
43 Cell #6 : bit position of the reset in the
44 reset status register
45 Cell #7 : Flags used to control reset behavior,
46 available flags defined in the DT include
47 file <dt-bindings/reset/ti-syscon.h>
48
49 SysCon Reset Consumer Nodes
50 ===========================
51 Each of the reset consumer nodes should have the following properties,
52 in addition to their own properties.
53
54 Required properties:
55 --------------------
56 - resets : A phandle to the reset controller node and an index number
57 to a reset specifier as defined above.
58
59 Please also refer to Documentation/devicetree/bindings/reset/reset.txt for
60 common reset controller usage by consumers.
61
62 Example:
63 --------
64 The following example demonstrates a syscon node, the reset controller node
65 using the syscon node, and a consumer (a DSP device) on the TI Keystone 2
66 66AK2E SoC.
67
68 / {
69 soc {
70 psc: power-sleep-controller@2350000 {
71 compatible = "syscon", "simple-mfd";
72 reg = <0x02350000 0x1000>;
73
74 pscrst: reset-controller {
75 compatible = "ti,k2e-pscrst", "ti,syscon-reset";
76 #reset-cells = <1>;
77
78 ti,reset-bits = <
79 0xa3c 8 0xa3c 8 0x83c 8 (ASSERT_CLEAR | DEASSERT_SET | STATUS_CLEAR) /* 0: dsp0 */
80 0xa40 5 0xa44 3 0 0 (ASSERT_SET | DEASSERT_CLEAR | STATUS_NONE) /* 1: example */
81 >;
82 };
83 };
84
85 dsp0: dsp0 {
86 ...
87 resets = <&pscrst 0>;
88 ...
89 };
90 };
91 };
92

3. 한국어 전문 번역

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

TI SysCon reset controller

1-14

거의 모든 SoC에는 clock 및 전원 제어뿐 아니라 reset 제어도 필요한 하드웨어 모듈이 있습니다. reset 제어는 대개 memory-mapped I/O 레지스터로 제공되며, 이 레지스터가 여러 기능을 구현하는 더 큰 레지스터 공간의 일부인 경우가 있습니다.

공통 레지스터 공간에서 여러 주체가 각자 관련 레지스터에 접근할 수 있도록 이 범위를 syscon 노드로 표현하는 것이 적합합니다. SysCon reset controller 노드는 syscon 노드를 사용해 SoC의 여러 하드웨어 모듈에 reset 관리 기능을 제공합니다.

provider 노드 배치

15-19

각 reset provider/controller 노드는 syscon 노드의 자식이어야 합니다.

provider 필수 속성

20-47

`compatible`은 `ti,k2e-pscrst`, `ti,k2l-pscrst`, `ti,k2hk-pscrst`, `ti,syscon-reset` 가운데 해당 값을 사용합니다. `#reset-cells`는 1입니다.

`ti,reset-bits`는 소비자에게 노출하는 reset마다 7개 셀로 reset 제어 레지스터 정보를 기술합니다.

셀 1은 syscon 기준 reset assert 제어 레지스터의 오프셋이고, 셀 2는 그 레지스터 안의 reset 비트 위치입니다. 셀 3은 reset deassert 제어 레지스터 오프셋이고, 셀 4는 그 레지스터 안의 비트 위치입니다.

셀 5는 syscon 기준 reset 상태 레지스터 오프셋이고, 셀 6은 상태 레지스터 안의 reset 비트 위치입니다. 셀 7은 reset 동작을 제어하는 플래그이며 사용 가능한 값은 `<dt-bindings/reset/ti-syscon.h>`에 정의됩니다.

consumer 필수 속성

48-60

각 reset consumer 노드는 자체 속성에 더해 `resets`를 가져야 합니다. 이 값은 reset controller 노드의 phandle과 위에서 정의한 reset specifier의 인덱스 번호로 구성됩니다.

consumer의 공통 reset controller 사용법은 `Documentation/devicetree/bindings/reset/reset.txt`도 참조합니다.

Keystone 2 66AK2E 예제

61-91

예제는 TI Keystone 2 66AK2E SoC에서 syscon 노드, 이를 사용하는 reset controller, 소비자인 DSP 장치를 함께 구성합니다. 인덱스 0은 `ASSERT_CLEAR | DEASSERT_SET | STATUS_CLEAR`, 인덱스 1은 `ASSERT_SET | DEASSERT_CLEAR | STATUS_NONE` 동작을 사용합니다.

/ {
        soc {
                psc: power-sleep-controller@2350000 {
                        compatible = "syscon", "simple-mfd";
                        reg = <0x02350000 0x1000>;

                        pscrst: reset-controller {
                                compatible = "ti,k2e-pscrst", "ti,syscon-reset";
                                #reset-cells = <1>;

                                ti,reset-bits = <
                                        0xa3c 8 0xa3c 8 0x83c 8 (ASSERT_CLEAR | DEASSERT_SET   | STATUS_CLEAR) /* 0: dsp0 */
                                        0xa40 5 0xa44 3 0     0 (ASSERT_SET   | DEASSERT_CLEAR | STATUS_NONE)  /* 1: example */
                                >;
                        };
                };

                dsp0: dsp0 {
                        ...
                        resets = <&pscrst 0>;
                        ...
                };
        };
};