1*ec62a746SCosta Shulyupin.. SPDX-License-Identifier: GPL-2.0
2*ec62a746SCosta Shulyupin
3*ec62a746SCosta Shulyupin.. include:: ../../disclaimer-zh_CN.rst
4*ec62a746SCosta Shulyupin
5*ec62a746SCosta Shulyupin:Original: Documentation/arch/mips/ingenic-tcu.rst
6*ec62a746SCosta Shulyupin
7*ec62a746SCosta Shulyupin:翻译:
8*ec62a746SCosta Shulyupin
9*ec62a746SCosta Shulyupin 司延腾 Yanteng Si <siyanteng@loongson.cn>
10*ec62a746SCosta Shulyupin
11*ec62a746SCosta Shulyupin.. _cn_ingenic-tcu:
12*ec62a746SCosta Shulyupin
13*ec62a746SCosta Shulyupin===============================================
14*ec62a746SCosta Shulyupin君正 JZ47xx SoC定时器/计数器硬件单元
15*ec62a746SCosta Shulyupin===============================================
16*ec62a746SCosta Shulyupin
17*ec62a746SCosta Shulyupin君正 JZ47xx SoC中的定时器/计数器单元(TCU)是一个多功能硬件块。它有多达
18*ec62a746SCosta Shulyupin8个通道,可以用作计数器,计时器,或脉冲宽度调制器。
19*ec62a746SCosta Shulyupin
20*ec62a746SCosta Shulyupin- JZ4725B, JZ4750, JZ4755 只有6个TCU通道。其它SoC都有8个通道。
21*ec62a746SCosta Shulyupin
22*ec62a746SCosta Shulyupin- JZ4725B引入了一个独立的通道,称为操作系统计时器(OST)。这是一个32位可
23*ec62a746SCosta Shulyupin  编程定时器。在JZ4760B及以上型号上,它是64位的。
24*ec62a746SCosta Shulyupin
25*ec62a746SCosta Shulyupin- 每个TCU通道都有自己的时钟源,可以通过 TCSR 寄存器设置通道的父级时钟
26*ec62a746SCosta Shulyupin  源(pclk、ext、rtc)、开关以及分频。
27*ec62a746SCosta Shulyupin
28*ec62a746SCosta Shulyupin    - 看门狗和OST硬件模块在它们的寄存器空间中也有相同形式的TCSR寄存器。
29*ec62a746SCosta Shulyupin    - 用于关闭/开启的 TCU 寄存器也可以关闭/开启看门狗和 OST 时钟。
30*ec62a746SCosta Shulyupin
31*ec62a746SCosta Shulyupin- 每个TCU通道在两种模式的其中一种模式下运行:
32*ec62a746SCosta Shulyupin
33*ec62a746SCosta Shulyupin    - 模式 TCU1:通道无法在睡眠模式下运行,但更易于操作。
34*ec62a746SCosta Shulyupin    - 模式 TCU2:通道可以在睡眠模式下运行,但操作比 TCU1 通道复杂一些。
35*ec62a746SCosta Shulyupin
36*ec62a746SCosta Shulyupin- 每个 TCU 通道的模式取决于使用的SoC:
37*ec62a746SCosta Shulyupin
38*ec62a746SCosta Shulyupin    - 在最老的SoC(高于JZ4740),八个通道都运行在TCU1模式。
39*ec62a746SCosta Shulyupin    - 在 JZ4725B,通道5运行在TCU2,其它通道则运行在TCU1。
40*ec62a746SCosta Shulyupin    - 在最新的SoC(JZ4750及之后),通道1-2运行在TCU2,其它通道则运行
41*ec62a746SCosta Shulyupin      在TCU1。
42*ec62a746SCosta Shulyupin
43*ec62a746SCosta Shulyupin- 每个通道都可以生成中断。有些通道共享一条中断线,而有些没有,其在SoC型
44*ec62a746SCosta Shulyupin  号之间的变更:
45*ec62a746SCosta Shulyupin
46*ec62a746SCosta Shulyupin    - 在很老的SoC(JZ4740及更低),通道0和通道1有它们自己的中断线;通
47*ec62a746SCosta Shulyupin      道2-7共享最后一条中断线。
48*ec62a746SCosta Shulyupin    - 在 JZ4725B,通道0有它自己的中断线;通道1-5共享一条中断线;OST
49*ec62a746SCosta Shulyupin      使用最后一条中断线。
50*ec62a746SCosta Shulyupin    - 在比较新的SoC(JZ4750及以后),通道5有它自己的中断线;通
51*ec62a746SCosta Shulyupin      道0-4和(如果是8通道)6-7全部共享一条中断线;OST使用最后一条中
52*ec62a746SCosta Shulyupin      断线。
53*ec62a746SCosta Shulyupin
54*ec62a746SCosta Shulyupin实现
55*ec62a746SCosta Shulyupin====
56*ec62a746SCosta Shulyupin
57*ec62a746SCosta ShulyupinTCU硬件的功能分布在多个驱动程序:
58*ec62a746SCosta Shulyupin
59*ec62a746SCosta Shulyupin==============      ===================================
60*ec62a746SCosta Shulyupin时钟                drivers/clk/ingenic/tcu.c
61*ec62a746SCosta Shulyupin中断                drivers/irqchip/irq-ingenic-tcu.c
62*ec62a746SCosta Shulyupin定时器              drivers/clocksource/ingenic-timer.c
63*ec62a746SCosta ShulyupinOST                 drivers/clocksource/ingenic-ost.c
64*ec62a746SCosta Shulyupin脉冲宽度调制器      drivers/pwm/pwm-jz4740.c
65*ec62a746SCosta Shulyupin看门狗              drivers/watchdog/jz4740_wdt.c
66*ec62a746SCosta Shulyupin==============      ===================================
67*ec62a746SCosta Shulyupin
68*ec62a746SCosta Shulyupin因为可以从相同的寄存器控制属于不同驱动程序和框架的TCU的各种功能,所以
69*ec62a746SCosta Shulyupin所有这些驱动程序都通过相同的控制总线通用接口访问它们的寄存器。
70*ec62a746SCosta Shulyupin
71*ec62a746SCosta Shulyupin有关TCU驱动程序的设备树绑定的更多信息,请参阅:
72*ec62a746SCosta ShulyupinDocumentation/devicetree/bindings/timer/ingenic,tcu.yaml.
73