2324d50d05
while to come. Changes include: - Some new Chinese translations - Progress on the battle against double words words and non-HTTPS URLs - Some block-mq documentation - More RST conversions from Mauro. At this point, that task is essentially complete, so we shouldn't see this kind of churn again for a while. Unless we decide to switch to asciidoc or something...:) - Lots of typo fixes, warning fixes, and more. -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEIw+MvkEiF49krdp9F0NaE2wMflgFAl8oVkwPHGNvcmJldEBs d24ubmV0AAoJEBdDWhNsDH5YoW8H/jJ/xnXFn7tkgVPQAlL3k5HCnK7A5nDP9RVR cg1pTx1cEFdjzxPlJyExU6/v+AImOvtweHXC+JDK7YcJ6XFUNYXJI3LxL5KwUXbY BL/xRFszDSXH2C7SJF5GECcFYp01e/FWSLN3yWAh+g+XwsKiTJ8q9+CoIDkHfPGO 7oQsHKFu6s36Af0LfSgxk4sVB7EJbo8e4psuPsP5SUrl+oXRO43Put0rXkR4yJoH 9oOaB51Do5fZp8I4JVAqGXvpXoExyLMO4yw0mASm6YSZ3KyjR8Fae+HD9Cq4ZuwY 0uzb9K+9NEhqbfwtyBsi99S64/6Zo/MonwKwevZuhtsDTK4l4iU= =JQLZ -----END PGP SIGNATURE----- Merge tag 'docs-5.9' of git://git.lwn.net/linux Pull documentation updates from Jonathan Corbet: "It's been a busy cycle for documentation - hopefully the busiest for a while to come. Changes include: - Some new Chinese translations - Progress on the battle against double words words and non-HTTPS URLs - Some block-mq documentation - More RST conversions from Mauro. At this point, that task is essentially complete, so we shouldn't see this kind of churn again for a while. Unless we decide to switch to asciidoc or something...:) - Lots of typo fixes, warning fixes, and more" * tag 'docs-5.9' of git://git.lwn.net/linux: (195 commits) scripts/kernel-doc: optionally treat warnings as errors docs: ia64: correct typo mailmap: add entry for <alobakin@marvell.com> doc/zh_CN: add cpu-load Chinese version Documentation/admin-guide: tainted-kernels: fix spelling mistake MAINTAINERS: adjust kprobes.rst entry to new location devices.txt: document rfkill allocation PCI: correct flag name docs: filesystems: vfs: correct flag name docs: filesystems: vfs: correct sync_mode flag names docs: path-lookup: markup fixes for emphasis docs: path-lookup: more markup fixes docs: path-lookup: fix HTML entity mojibake CREDITS: Replace HTTP links with HTTPS ones docs: process: Add an example for creating a fixes tag doc/zh_CN: add Chinese translation prefer section doc/zh_CN: add clearing-warn-once Chinese version doc/zh_CN: add admin-guide index doc:it_IT: process: coding-style.rst: Correct __maybe_unused compiler label futex: MAINTAINERS: Re-add selftests directory ...
72 lines
2.9 KiB
ReStructuredText
72 lines
2.9 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
===============================================
|
|
Ingenic JZ47xx SoCs Timer/Counter Unit hardware
|
|
===============================================
|
|
|
|
The Timer/Counter Unit (TCU) in Ingenic JZ47xx SoCs is a multi-function
|
|
hardware block. It features up to eight channels, that can be used as
|
|
counters, timers, or PWM.
|
|
|
|
- JZ4725B, JZ4750, JZ4755 only have six TCU channels. The other SoCs all
|
|
have eight channels.
|
|
|
|
- JZ4725B introduced a separate channel, called Operating System Timer
|
|
(OST). It is a 32-bit programmable timer. On JZ4760B and above, it is
|
|
64-bit.
|
|
|
|
- Each one of the TCU channels has its own clock, which can be reparented to three
|
|
different clocks (pclk, ext, rtc), gated, and reclocked, through their TCSR register.
|
|
|
|
- The watchdog and OST hardware blocks also feature a TCSR register with the same
|
|
format in their register space.
|
|
- The TCU registers used to gate/ungate can also gate/ungate the watchdog and
|
|
OST clocks.
|
|
|
|
- Each TCU channel works in one of two modes:
|
|
|
|
- mode TCU1: channels cannot work in sleep mode, but are easier to
|
|
operate.
|
|
- mode TCU2: channels can work in sleep mode, but the operation is a bit
|
|
more complicated than with TCU1 channels.
|
|
|
|
- The mode of each TCU channel depends on the SoC used:
|
|
|
|
- On the oldest SoCs (up to JZ4740), all of the eight channels operate in
|
|
TCU1 mode.
|
|
- On JZ4725B, channel 5 operates as TCU2, the others operate as TCU1.
|
|
- On newest SoCs (JZ4750 and above), channels 1-2 operate as TCU2, the
|
|
others operate as TCU1.
|
|
|
|
- Each channel can generate an interrupt. Some channels share an interrupt
|
|
line, some don't, and this changes between SoC versions:
|
|
|
|
- on older SoCs (JZ4740 and below), channel 0 and channel 1 have their
|
|
own interrupt line; channels 2-7 share the last interrupt line.
|
|
- On JZ4725B, channel 0 has its own interrupt; channels 1-5 share one
|
|
interrupt line; the OST uses the last interrupt line.
|
|
- on newer SoCs (JZ4750 and above), channel 5 has its own interrupt;
|
|
channels 0-4 and (if eight channels) 6-7 all share one interrupt line;
|
|
the OST uses the last interrupt line.
|
|
|
|
Implementation
|
|
==============
|
|
|
|
The functionalities of the TCU hardware are spread across multiple drivers:
|
|
|
|
=========== =====
|
|
clocks drivers/clk/ingenic/tcu.c
|
|
interrupts drivers/irqchip/irq-ingenic-tcu.c
|
|
timers drivers/clocksource/ingenic-timer.c
|
|
OST drivers/clocksource/ingenic-ost.c
|
|
PWM drivers/pwm/pwm-jz4740.c
|
|
watchdog drivers/watchdog/jz4740_wdt.c
|
|
=========== =====
|
|
|
|
Because various functionalities of the TCU that belong to different drivers
|
|
and frameworks can be controlled from the same registers, all of these
|
|
drivers access their registers through the same regmap.
|
|
|
|
For more information regarding the devicetree bindings of the TCU drivers,
|
|
have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.yaml.
|