xref: /linux/Documentation/translations/zh_TW/arch/loongarch/irq-chip-model.rst (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1*f949cb75SHu Haowen.. SPDX-License-Identifier: GPL-2.0
2*f949cb75SHu Haowen
3*f949cb75SHu Haowen.. include:: ../../disclaimer-zh_TW.rst
4*f949cb75SHu Haowen
5*f949cb75SHu Haowen:Original: Documentation/arch/loongarch/irq-chip-model.rst
6*f949cb75SHu Haowen:Translator: Huacai Chen <chenhuacai@loongson.cn>
7*f949cb75SHu Haowen
8*f949cb75SHu Haowen==================================
9*f949cb75SHu HaowenLoongArch的IRQ芯片模型(層級關係)
10*f949cb75SHu Haowen==================================
11*f949cb75SHu Haowen
12*f949cb75SHu Haowen目前,基於LoongArch的處理器(如龍芯3A5000)只能與LS7A芯片組配合工作。LoongArch計算機
13*f949cb75SHu Haowen中的中斷控制器(即IRQ芯片)包括CPUINTC(CPU Core Interrupt Controller)、LIOINTC(
14*f949cb75SHu HaowenLegacy I/O Interrupt Controller)、EIOINTC(Extended I/O Interrupt Controller)、
15*f949cb75SHu HaowenHTVECINTC(Hyper-Transport Vector Interrupt Controller)、PCH-PIC(LS7A芯片組的主中
16*f949cb75SHu Haowen斷控制器)、PCH-LPC(LS7A芯片組的LPC中斷控制器)和PCH-MSI(MSI中斷控制器)。
17*f949cb75SHu Haowen
18*f949cb75SHu HaowenCPUINTC是一種CPU內部的每個核本地的中斷控制器,LIOINTC/EIOINTC/HTVECINTC是CPU內部的
19*f949cb75SHu Haowen全局中斷控制器(每個芯片一個,所有核共享),而PCH-PIC/PCH-LPC/PCH-MSI是CPU外部的中
20*f949cb75SHu Haowen斷控制器(在配套芯片組裏面)。這些中斷控制器(或者說IRQ芯片)以一種層次樹的組織形式
21*f949cb75SHu Haowen級聯在一起,一共有兩種層級關係模型(傳統IRQ模型和擴展IRQ模型)。
22*f949cb75SHu Haowen
23*f949cb75SHu Haowen傳統IRQ模型
24*f949cb75SHu Haowen===========
25*f949cb75SHu Haowen
26*f949cb75SHu Haowen在這種模型裏面,IPI(Inter-Processor Interrupt)和CPU本地時鐘中斷直接發送到CPUINTC,
27*f949cb75SHu HaowenCPU串口(UARTs)中斷髮送到LIOINTC,而其他所有設備的中斷則分別發送到所連接的PCH-PIC/
28*f949cb75SHu HaowenPCH-LPC/PCH-MSI,然後被HTVECINTC統一收集,再發送到LIOINTC,最後到達CPUINTC::
29*f949cb75SHu Haowen
30*f949cb75SHu Haowen     +-----+     +---------+     +-------+
31*f949cb75SHu Haowen     | IPI | --> | CPUINTC | <-- | Timer |
32*f949cb75SHu Haowen     +-----+     +---------+     +-------+
33*f949cb75SHu Haowen                      ^
34*f949cb75SHu Haowen                      |
35*f949cb75SHu Haowen                 +---------+     +-------+
36*f949cb75SHu Haowen                 | LIOINTC | <-- | UARTs |
37*f949cb75SHu Haowen                 +---------+     +-------+
38*f949cb75SHu Haowen                      ^
39*f949cb75SHu Haowen                      |
40*f949cb75SHu Haowen                +-----------+
41*f949cb75SHu Haowen                | HTVECINTC |
42*f949cb75SHu Haowen                +-----------+
43*f949cb75SHu Haowen                 ^         ^
44*f949cb75SHu Haowen                 |         |
45*f949cb75SHu Haowen           +---------+ +---------+
46*f949cb75SHu Haowen           | PCH-PIC | | PCH-MSI |
47*f949cb75SHu Haowen           +---------+ +---------+
48*f949cb75SHu Haowen             ^     ^           ^
49*f949cb75SHu Haowen             |     |           |
50*f949cb75SHu Haowen     +---------+ +---------+ +---------+
51*f949cb75SHu Haowen     | PCH-LPC | | Devices | | Devices |
52*f949cb75SHu Haowen     +---------+ +---------+ +---------+
53*f949cb75SHu Haowen          ^
54*f949cb75SHu Haowen          |
55*f949cb75SHu Haowen     +---------+
56*f949cb75SHu Haowen     | Devices |
57*f949cb75SHu Haowen     +---------+
58*f949cb75SHu Haowen
59*f949cb75SHu Haowen擴展IRQ模型
60*f949cb75SHu Haowen===========
61*f949cb75SHu Haowen
62*f949cb75SHu Haowen在這種模型裏面,IPI(Inter-Processor Interrupt)和CPU本地時鐘中斷直接發送到CPUINTC,
63*f949cb75SHu HaowenCPU串口(UARTs)中斷髮送到LIOINTC,而其他所有設備的中斷則分別發送到所連接的PCH-PIC/
64*f949cb75SHu HaowenPCH-LPC/PCH-MSI,然後被EIOINTC統一收集,再直接到達CPUINTC::
65*f949cb75SHu Haowen
66*f949cb75SHu Haowen          +-----+     +---------+     +-------+
67*f949cb75SHu Haowen          | IPI | --> | CPUINTC | <-- | Timer |
68*f949cb75SHu Haowen          +-----+     +---------+     +-------+
69*f949cb75SHu Haowen                       ^       ^
70*f949cb75SHu Haowen                       |       |
71*f949cb75SHu Haowen                +---------+ +---------+     +-------+
72*f949cb75SHu Haowen                | EIOINTC | | LIOINTC | <-- | UARTs |
73*f949cb75SHu Haowen                +---------+ +---------+     +-------+
74*f949cb75SHu Haowen                 ^       ^
75*f949cb75SHu Haowen                 |       |
76*f949cb75SHu Haowen          +---------+ +---------+
77*f949cb75SHu Haowen          | PCH-PIC | | PCH-MSI |
78*f949cb75SHu Haowen          +---------+ +---------+
79*f949cb75SHu Haowen            ^     ^           ^
80*f949cb75SHu Haowen            |     |           |
81*f949cb75SHu Haowen    +---------+ +---------+ +---------+
82*f949cb75SHu Haowen    | PCH-LPC | | Devices | | Devices |
83*f949cb75SHu Haowen    +---------+ +---------+ +---------+
84*f949cb75SHu Haowen         ^
85*f949cb75SHu Haowen         |
86*f949cb75SHu Haowen    +---------+
87*f949cb75SHu Haowen    | Devices |
88*f949cb75SHu Haowen    +---------+
89*f949cb75SHu Haowen
90*f949cb75SHu HaowenACPI相關的定義
91*f949cb75SHu Haowen==============
92*f949cb75SHu Haowen
93*f949cb75SHu HaowenCPUINTC::
94*f949cb75SHu Haowen
95*f949cb75SHu Haowen  ACPI_MADT_TYPE_CORE_PIC;
96*f949cb75SHu Haowen  struct acpi_madt_core_pic;
97*f949cb75SHu Haowen  enum acpi_madt_core_pic_version;
98*f949cb75SHu Haowen
99*f949cb75SHu HaowenLIOINTC::
100*f949cb75SHu Haowen
101*f949cb75SHu Haowen  ACPI_MADT_TYPE_LIO_PIC;
102*f949cb75SHu Haowen  struct acpi_madt_lio_pic;
103*f949cb75SHu Haowen  enum acpi_madt_lio_pic_version;
104*f949cb75SHu Haowen
105*f949cb75SHu HaowenEIOINTC::
106*f949cb75SHu Haowen
107*f949cb75SHu Haowen  ACPI_MADT_TYPE_EIO_PIC;
108*f949cb75SHu Haowen  struct acpi_madt_eio_pic;
109*f949cb75SHu Haowen  enum acpi_madt_eio_pic_version;
110*f949cb75SHu Haowen
111*f949cb75SHu HaowenHTVECINTC::
112*f949cb75SHu Haowen
113*f949cb75SHu Haowen  ACPI_MADT_TYPE_HT_PIC;
114*f949cb75SHu Haowen  struct acpi_madt_ht_pic;
115*f949cb75SHu Haowen  enum acpi_madt_ht_pic_version;
116*f949cb75SHu Haowen
117*f949cb75SHu HaowenPCH-PIC::
118*f949cb75SHu Haowen
119*f949cb75SHu Haowen  ACPI_MADT_TYPE_BIO_PIC;
120*f949cb75SHu Haowen  struct acpi_madt_bio_pic;
121*f949cb75SHu Haowen  enum acpi_madt_bio_pic_version;
122*f949cb75SHu Haowen
123*f949cb75SHu HaowenPCH-MSI::
124*f949cb75SHu Haowen
125*f949cb75SHu Haowen  ACPI_MADT_TYPE_MSI_PIC;
126*f949cb75SHu Haowen  struct acpi_madt_msi_pic;
127*f949cb75SHu Haowen  enum acpi_madt_msi_pic_version;
128*f949cb75SHu Haowen
129*f949cb75SHu HaowenPCH-LPC::
130*f949cb75SHu Haowen
131*f949cb75SHu Haowen  ACPI_MADT_TYPE_LPC_PIC;
132*f949cb75SHu Haowen  struct acpi_madt_lpc_pic;
133*f949cb75SHu Haowen  enum acpi_madt_lpc_pic_version;
134*f949cb75SHu Haowen
135*f949cb75SHu Haowen參考文獻
136*f949cb75SHu Haowen========
137*f949cb75SHu Haowen
138*f949cb75SHu Haowen龍芯3A5000的文檔:
139*f949cb75SHu Haowen
140*f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-CN.pdf (中文版)
141*f949cb75SHu Haowen
142*f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-EN.pdf (英文版)
143*f949cb75SHu Haowen
144*f949cb75SHu Haowen龍芯LS7A芯片組的文檔:
145*f949cb75SHu Haowen
146*f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-CN.pdf (中文版)
147*f949cb75SHu Haowen
148*f949cb75SHu Haowen  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-EN.pdf (英文版)
149*f949cb75SHu Haowen
150*f949cb75SHu Haowen.. note::
151*f949cb75SHu Haowen    - CPUINTC:即《龍芯架構參考手冊卷一》第7.4節所描述的CSR.ECFG/CSR.ESTAT寄存器及其
152*f949cb75SHu Haowen      中斷控制邏輯;
153*f949cb75SHu Haowen    - LIOINTC:即《龍芯3A5000處理器使用手冊》第11.1節所描述的“傳統I/O中斷”;
154*f949cb75SHu Haowen    - EIOINTC:即《龍芯3A5000處理器使用手冊》第11.2節所描述的“擴展I/O中斷”;
155*f949cb75SHu Haowen    - HTVECINTC:即《龍芯3A5000處理器使用手冊》第14.3節所描述的“HyperTransport中斷”;
156*f949cb75SHu Haowen    - PCH-PIC/PCH-MSI:即《龍芯7A1000橋片用戶手冊》第5章所描述的“中斷控制器”;
157*f949cb75SHu Haowen    - PCH-LPC:即《龍芯7A1000橋片用戶手冊》第24.3節所描述的“LPC中斷”。
158*f949cb75SHu Haowen
159