| /kernel/linux/linux-6.6/drivers/tty/serial/ |
| D | tegra-tcu.c | 51 static void tegra_tcu_write_one(struct tegra_tcu *tcu, u32 value, in tegra_tcu_write_one() argument 58 mbox_send_message(tcu->tx, msg); in tegra_tcu_write_one() 59 mbox_flush(tcu->tx, 1000); in tegra_tcu_write_one() 62 static void tegra_tcu_write(struct tegra_tcu *tcu, const char *s, in tegra_tcu_write() argument 82 tegra_tcu_write_one(tcu, value, 3); in tegra_tcu_write() 88 tegra_tcu_write_one(tcu, value, written); in tegra_tcu_write() 93 struct tegra_tcu *tcu = port->private_data; in tegra_tcu_uart_start_tx() local 102 tegra_tcu_write(tcu, &xmit->buf[xmit->tail], count); in tegra_tcu_uart_start_tx() 149 struct tegra_tcu *tcu = container_of(cons, struct tegra_tcu, console); in tegra_tcu_console_write() local 151 tegra_tcu_write(tcu, s, count); in tegra_tcu_console_write() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/ingenic/ |
| D | tcu.c | 3 * JZ47xx SoCs TCU clocks driver 10 #include <linux/mfd/ingenic-tcu.h> 16 #include <dt-bindings/clock/ingenic,tcu.h> 22 #define pr_fmt(fmt) "ingenic-tcu-clk: " fmt 45 struct ingenic_tcu *tcu; member 68 struct ingenic_tcu *tcu = tcu_clk->tcu; in ingenic_tcu_enable() local 70 regmap_write(tcu->map, TCU_REG_TSCR, BIT(info->gate_bit)); in ingenic_tcu_enable() 79 struct ingenic_tcu *tcu = tcu_clk->tcu; in ingenic_tcu_disable() local 81 regmap_write(tcu->map, TCU_REG_TSSR, BIT(info->gate_bit)); in ingenic_tcu_disable() 90 regmap_read(tcu_clk->tcu->map, TCU_REG_TSR, &value); in ingenic_tcu_is_enabled() [all …]
|
| /kernel/linux/linux-6.6/drivers/clk/ingenic/ |
| D | tcu.c | 3 * JZ47xx SoCs TCU clocks driver 10 #include <linux/mfd/ingenic-tcu.h> 16 #include <dt-bindings/clock/ingenic,tcu.h> 22 #define pr_fmt(fmt) "ingenic-tcu-clk: " fmt 46 struct ingenic_tcu *tcu; member 69 struct ingenic_tcu *tcu = tcu_clk->tcu; in ingenic_tcu_enable() local 71 regmap_write(tcu->map, TCU_REG_TSCR, BIT(info->gate_bit)); in ingenic_tcu_enable() 80 struct ingenic_tcu *tcu = tcu_clk->tcu; in ingenic_tcu_disable() local 82 regmap_write(tcu->map, TCU_REG_TSSR, BIT(info->gate_bit)); in ingenic_tcu_disable() 91 regmap_read(tcu_clk->tcu->map, TCU_REG_TSR, &value); in ingenic_tcu_is_enabled() [all …]
|
| /kernel/linux/linux-5.10/drivers/tty/serial/ |
| D | tegra-tcu.c | 52 static void tegra_tcu_write_one(struct tegra_tcu *tcu, u32 value, in tegra_tcu_write_one() argument 59 mbox_send_message(tcu->tx, msg); in tegra_tcu_write_one() 60 mbox_flush(tcu->tx, 1000); in tegra_tcu_write_one() 63 static void tegra_tcu_write(struct tegra_tcu *tcu, const char *s, in tegra_tcu_write() argument 83 tegra_tcu_write_one(tcu, value, 3); in tegra_tcu_write() 89 tegra_tcu_write_one(tcu, value, written); in tegra_tcu_write() 94 struct tegra_tcu *tcu = port->private_data; in tegra_tcu_uart_start_tx() local 103 tegra_tcu_write(tcu, &xmit->buf[xmit->tail], count); in tegra_tcu_uart_start_tx() 150 struct tegra_tcu *tcu = container_of(cons, struct tegra_tcu, console); in tegra_tcu_console_write() local 152 tegra_tcu_write(tcu, s, count); in tegra_tcu_console_write() [all …]
|
| /kernel/linux/linux-6.6/drivers/clocksource/ |
| D | ingenic-timer.c | 3 * Ingenic SoCs TCU IRQ driver 14 #include <linux/mfd/ingenic-tcu.h> 23 #include <dt-bindings/clock/ingenic,tcu.h> 53 struct ingenic_tcu *tcu = ingenic_tcu; in ingenic_tcu_timer_read() local 56 regmap_read(tcu->map, TCU_REG_TCNTc(tcu->cs_channel), &count); in ingenic_tcu_timer_read() 81 struct ingenic_tcu *tcu = to_ingenic_tcu(timer); in ingenic_tcu_cevt_set_state_shutdown() local 83 regmap_write(tcu->map, TCU_REG_TECR, BIT(timer->channel)); in ingenic_tcu_cevt_set_state_shutdown() 92 struct ingenic_tcu *tcu = to_ingenic_tcu(timer); in ingenic_tcu_cevt_set_next() local 97 regmap_write(tcu->map, TCU_REG_TDFRc(timer->channel), next); in ingenic_tcu_cevt_set_next() 98 regmap_write(tcu->map, TCU_REG_TCNTc(timer->channel), 0); in ingenic_tcu_cevt_set_next() [all …]
|
| /kernel/linux/linux-5.10/drivers/clocksource/ |
| D | ingenic-timer.c | 3 * Ingenic SoCs TCU IRQ driver 13 #include <linux/mfd/ingenic-tcu.h> 24 #include <dt-bindings/clock/ingenic,tcu.h> 54 struct ingenic_tcu *tcu = ingenic_tcu; in ingenic_tcu_timer_read() local 57 regmap_read(tcu->map, TCU_REG_TCNTc(tcu->cs_channel), &count); in ingenic_tcu_timer_read() 82 struct ingenic_tcu *tcu = to_ingenic_tcu(timer); in ingenic_tcu_cevt_set_state_shutdown() local 84 regmap_write(tcu->map, TCU_REG_TECR, BIT(timer->channel)); in ingenic_tcu_cevt_set_state_shutdown() 93 struct ingenic_tcu *tcu = to_ingenic_tcu(timer); in ingenic_tcu_cevt_set_next() local 98 regmap_write(tcu->map, TCU_REG_TDFRc(timer->channel), next); in ingenic_tcu_cevt_set_next() 99 regmap_write(tcu->map, TCU_REG_TCNTc(timer->channel), 0); in ingenic_tcu_cevt_set_next() [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/timer/ |
| D | ingenic,tcu.yaml | 4 $id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml# 7 title: Ingenic SoCs Timer/Counter Unit (TCU) 10 For a description of the TCU hardware and drivers, have a look at 11 Documentation/arch/mips/ingenic-tcu.rst. 21 - ingenic,jz4740-tcu 22 - ingenic,jz4725b-tcu 23 - ingenic,jz4760-tcu 24 - ingenic,jz4760b-tcu 25 - ingenic,jz4770-tcu 26 - ingenic,jz4780-tcu [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/timer/ |
| D | ingenic,tcu.yaml | 4 $id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml# 7 title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings 10 For a description of the TCU hardware and drivers, have a look at 11 Documentation/mips/ingenic-tcu.rst. 21 - ingenic,jz4740-tcu 22 - ingenic,jz4725b-tcu 23 - ingenic,jz4770-tcu 24 - ingenic,jz4780-tcu 25 - ingenic,x1000-tcu 53 - ingenic,jz4740-tcu [all …]
|
| /kernel/linux/linux-5.10/drivers/irqchip/ |
| D | irq-ingenic-tcu.c | 3 * JZ47xx SoCs TCU IRQ driver 11 #include <linux/mfd/ingenic-tcu.h> 91 struct ingenic_tcu *tcu; in ingenic_tcu_irq_init() local 100 tcu = kzalloc(sizeof(*tcu), GFP_KERNEL); in ingenic_tcu_irq_init() 101 if (!tcu) in ingenic_tcu_irq_init() 104 tcu->map = map; in ingenic_tcu_irq_init() 107 if (irqs < 0 || irqs > ARRAY_SIZE(tcu->parent_irqs)) { in ingenic_tcu_irq_init() 113 tcu->nb_parent_irqs = irqs; in ingenic_tcu_irq_init() 115 tcu->domain = irq_domain_add_linear(np, 32, &irq_generic_chip_ops, in ingenic_tcu_irq_init() 117 if (!tcu->domain) { in ingenic_tcu_irq_init() [all …]
|
| /kernel/linux/linux-6.6/drivers/irqchip/ |
| D | irq-ingenic-tcu.c | 3 * JZ47xx SoCs TCU IRQ driver 11 #include <linux/mfd/ingenic-tcu.h> 93 struct ingenic_tcu *tcu; in ingenic_tcu_irq_init() local 102 tcu = kzalloc(sizeof(*tcu), GFP_KERNEL); in ingenic_tcu_irq_init() 103 if (!tcu) in ingenic_tcu_irq_init() 106 tcu->map = map; in ingenic_tcu_irq_init() 109 if (irqs < 0 || irqs > ARRAY_SIZE(tcu->parent_irqs)) { in ingenic_tcu_irq_init() 115 tcu->nb_parent_irqs = irqs; in ingenic_tcu_irq_init() 117 tcu->domain = irq_domain_add_linear(np, 32, &irq_generic_chip_ops, in ingenic_tcu_irq_init() 119 if (!tcu->domain) { in ingenic_tcu_irq_init() [all …]
|
| /kernel/linux/linux-6.6/Documentation/arch/mips/ |
| D | ingenic-tcu.rst | 7 The Timer/Counter Unit (TCU) in Ingenic JZ47xx SoCs is a multi-function 11 - JZ4725B, JZ4750, JZ4755 only have six TCU channels. The other SoCs all 18 - Each one of the TCU channels has its own clock, which can be reparented to three 23 - The TCU registers used to gate/ungate can also gate/ungate the watchdog and 26 - Each TCU channel works in one of two modes: 33 - The mode of each TCU channel depends on the SoC used: 55 The functionalities of the TCU hardware are spread across multiple drivers: 58 clocks drivers/clk/ingenic/tcu.c 59 interrupts drivers/irqchip/irq-ingenic-tcu.c 66 Because various functionalities of the TCU that belong to different drivers [all …]
|
| /kernel/linux/linux-5.10/Documentation/mips/ |
| D | ingenic-tcu.rst | 7 The Timer/Counter Unit (TCU) in Ingenic JZ47xx SoCs is a multi-function 11 - JZ4725B, JZ4750, JZ4755 only have six TCU channels. The other SoCs all 18 - Each one of the TCU channels has its own clock, which can be reparented to three 23 - The TCU registers used to gate/ungate can also gate/ungate the watchdog and 26 - Each TCU channel works in one of two modes: 33 - The mode of each TCU channel depends on the SoC used: 55 The functionalities of the TCU hardware are spread across multiple drivers: 58 clocks drivers/clk/ingenic/tcu.c 59 interrupts drivers/irqchip/irq-ingenic-tcu.c 66 Because various functionalities of the TCU that belong to different drivers [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/serial/ |
| D | nvidia,tegra194-tcu.yaml | 4 $id: http://devicetree.org/schemas/serial/nvidia,tegra194-tcu.yaml# 7 title: NVIDIA Tegra Combined UART (TCU) 14 The TCU is a system for sharing a hardware UART instance among multiple 18 with the hardware implementing the TCU. 26 - const: nvidia,tegra194-tcu 29 - nvidia,tegra234-tcu 30 - const: nvidia,tegra194-tcu 56 tcu: serial { 57 compatible = "nvidia,tegra194-tcu";
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/serial/ |
| D | nvidia,tegra194-tcu.txt | 1 NVIDIA Tegra Combined UART (TCU) 3 The TCU is a system for sharing a hardware UART instance among multiple 7 with the hardware implementing the TCU. 10 - name : Should be tcu 14 - "nvidia,tegra194-tcu" 30 tcu: tcu { 31 compatible = "nvidia,tegra194-tcu";
|
| /kernel/linux/linux-6.6/Documentation/translations/zh_CN/arch/mips/ |
| D | ingenic-tcu.rst | 5 :Original: Documentation/arch/mips/ingenic-tcu.rst 11 .. _cn_ingenic-tcu: 17 君正 JZ47xx SoC中的定时器/计数器单元(TCU)是一个多功能硬件块。它有多达 29 - 用于关闭/开启的 TCU 寄存器也可以关闭/开启看门狗和 OST 时钟。 36 - 每个 TCU 通道的模式取决于使用的SoC: 60 时钟 drivers/clk/ingenic/tcu.c 61 中断 drivers/irqchip/irq-ingenic-tcu.c 72 Documentation/devicetree/bindings/timer/ingenic,tcu.yaml.
|
| /kernel/linux/linux-5.10/arch/mips/boot/dts/ingenic/ |
| D | jz4740.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 63 tcu: timer@10002000 { label 64 compatible = "ingenic,jz4740-tcu", "simple-mfd"; 76 clock-names = "rtc", "ext", "pclk", "tcu"; 88 clocks = <&tcu TCU_CLK_WDT>; 98 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 99 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 100 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 101 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>;
|
| D | jz4725b.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 63 tcu: timer@10002000 { label 64 compatible = "ingenic,jz4725b-tcu", "simple-mfd"; 76 clock-names = "rtc", "ext", "pclk", "tcu"; 88 clocks = <&tcu TCU_CLK_WDT>; 98 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 99 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 100 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>; 109 clocks = <&tcu TCU_CLK_OST>;
|
| D | jz4770.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 75 tcu: timer@10002000 { label 76 compatible = "ingenic,jz4770-tcu", "simple-mfd"; 100 clocks = <&tcu TCU_CLK_WDT>; 110 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 111 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 112 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 113 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>; 122 clocks = <&tcu TCU_CLK_OST>;
|
| D | jz4780.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 73 tcu: timer@10002000 { label 74 compatible = "ingenic,jz4780-tcu", 75 "ingenic,jz4770-tcu", 99 clocks = <&tcu TCU_CLK_WDT>; 109 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 110 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 111 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 112 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>; 121 clocks = <&tcu TCU_CLK_OST>;
|
| /kernel/linux/linux-6.6/arch/mips/boot/dts/ingenic/ |
| D | jz4740.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 63 tcu: timer@10002000 { label 64 compatible = "ingenic,jz4740-tcu", "simple-mfd"; 76 clock-names = "rtc", "ext", "pclk", "tcu"; 88 clocks = <&tcu TCU_CLK_WDT>; 98 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 99 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 100 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 101 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>;
|
| D | x1830.dtsi | 2 #include <dt-bindings/clock/ingenic,tcu.h> 96 tcu: timer@10002000 { label 97 compatible = "ingenic,x1830-tcu", "ingenic,x1000-tcu", "simple-mfd"; 109 clock-names = "rtc", "ext", "pclk", "tcu"; 121 clocks = <&tcu TCU_CLK_WDT>; 131 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 132 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 133 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 134 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>;
|
| D | jz4725b.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 63 tcu: timer@10002000 { label 64 compatible = "ingenic,jz4725b-tcu", "simple-mfd"; 76 clock-names = "rtc", "ext", "pclk", "tcu"; 88 clocks = <&tcu TCU_CLK_WDT>; 98 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 99 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 100 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>; 109 clocks = <&tcu TCU_CLK_OST>;
|
| D | jz4770.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 75 tcu: timer@10002000 { label 76 compatible = "ingenic,jz4770-tcu", "simple-mfd"; 100 clocks = <&tcu TCU_CLK_WDT>; 110 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 111 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 112 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 113 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>; 122 clocks = <&tcu TCU_CLK_OST>;
|
| D | jz4780.dtsi | 3 #include <dt-bindings/clock/ingenic,tcu.h> 94 tcu: timer@10002000 { label 95 compatible = "ingenic,jz4780-tcu", 96 "ingenic,jz4770-tcu", 120 clocks = <&tcu TCU_CLK_WDT>; 130 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 131 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 132 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, 133 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>; 142 clocks = <&tcu TCU_CLK_OST>;
|
| D | x1000.dtsi | 2 #include <dt-bindings/clock/ingenic,tcu.h> 103 tcu: timer@10002000 { label 104 compatible = "ingenic,x1000-tcu", "simple-mfd"; 116 clock-names = "rtc", "ext", "pclk", "tcu"; 128 clocks = <&tcu TCU_CLK_WDT>; 138 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 139 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, 140 <&tcu TCU_CLK_TIMER4>;
|