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