/linux/drivers/clk/ingenic/ |
H A 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 …]
|
H A D | Kconfig | 89 bool "Ingenic JZ47xx TCU clocks driver" 93 Support the clocks of the Timer/Counter Unit (TCU) of the Ingenic
|
/linux/drivers/clocksource/ |
H A 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 …]
|
H A D | timer-ep93xx.c | 77 struct ep93xx_tcu *tcu = ep93xx_tcu; in ep93xx_clocksource_read() local 79 return lo_hi_readq(tcu->base + EP93XX_TIMER4_VALUE_LOW) & GENMASK_ULL(39, 0); in ep93xx_clocksource_read() 90 struct ep93xx_tcu *tcu = ep93xx_tcu; in ep93xx_clkevt_set_next_event() local 96 writel(tmode, tcu->base + EP93XX_TIMER3_CONTROL); in ep93xx_clkevt_set_next_event() 99 writel(next, tcu->base + EP93XX_TIMER3_LOAD); in ep93xx_clkevt_set_next_event() 101 tcu->base + EP93XX_TIMER3_CONTROL); in ep93xx_clkevt_set_next_event() 107 struct ep93xx_tcu *tcu = ep93xx_tcu; in ep93xx_clkevt_shutdown() local 109 writel(0, tcu->base + EP93XX_TIMER3_CONTROL); in ep93xx_clkevt_shutdown() 126 struct ep93xx_tcu *tcu = ep93xx_tcu; in ep93xx_timer_interrupt() local 130 writel(1, tcu->base + EP93XX_TIMER3_CLEAR); in ep93xx_timer_interrupt() [all …]
|
H A D | ingenic-ost.c | 3 * JZ47xx SoCs TCU Operating System Timer driver 11 #include <linux/mfd/ingenic-tcu.h> 25 * The TCU_REG_OST_CNT{L,R} from <linux/mfd/ingenic-tcu.h> are only for the 111 /* Enable OST TCU channel */ in ingenic_ost_probe()
|
/linux/Documentation/devicetree/bindings/timer/ |
H A 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 …]
|
/linux/drivers/irqchip/ |
H A 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 …]
|
/linux/Documentation/arch/mips/ |
H A 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 …]
|
/linux/Documentation/devicetree/bindings/serial/ |
H A 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";
|
/linux/Documentation/translations/zh_CN/arch/mips/ |
H A 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.
|
/linux/Documentation/translations/zh_TW/arch/mips/ |
H A D | ingenic-tcu.rst | 5 :Original: Documentation/arch/mips/ingenic-tcu.rst 11 .. _tw_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.
|
/linux/arch/mips/boot/dts/ingenic/ |
H A 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>;
|
H A 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>;
|
H A 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>;
|
H A 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>;
|
H A 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>;
|
H A 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>;
|
H A D | rs90.dts | 302 &tcu { 307 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, <&tcu TCU_CLK_WDT>;
|
H A D | gcw0.dts | 5 #include <dt-bindings/clock/ingenic,tcu.h> 476 &tcu { 481 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>, 482 <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>;
|
H A D | ci20.dts | 5 #include <dt-bindings/clock/ingenic,tcu.h> 179 &tcu { 188 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, 189 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_OST>;
|
H A D | qi_lb60.dts | 8 #include <dt-bindings/clock/ingenic,tcu.h> 359 &tcu { 361 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>;
|
/linux/Documentation/ABI/testing/ |
H A D | sysfs-driver-hid-roccat-kone | 69 startup_profile, tcu state and calibration_data. 88 …m>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/tcu 93 When read, this file returns the current state of the TCU, 96 Writing 0 in this file will switch the TCU off. 99 around 6 seconds to complete and activates the TCU.
|
/linux/Documentation/devicetree/bindings/iommu/ |
H A D | arm,smmu.yaml | 305 through the TCU's programming interface. 317 through the TCU's programming interface. 319 through the TCU's programming interface. 347 through the TCU's programming interface. 360 through the TCU's programming interface. 362 through the TCU's programming interface. 386 through the TCU's programming interface. 442 through the TCU's programming interface.
|
/linux/drivers/hid/ |
H A D | hid-roccat-kone.c | 454 return sysfs_emit(buf, "%d\n", kone->settings.tcu); in kone_sysfs_show_tcu() 466 * Calibrating the tcu is the only action that changes settings data inside the 497 ssleep(5); /* tcu needs this time for calibration */ in kone_sysfs_set_tcu() 522 if (kone->settings.tcu != state) { in kone_sysfs_set_tcu() 523 kone->settings.tcu = state; in kone_sysfs_set_tcu() 528 dev_err(&usb_dev->dev, "couldn't set tcu state\n"); in kone_sysfs_set_tcu() 549 static DEVICE_ATTR(tcu, 0660, kone_sysfs_show_tcu, kone_sysfs_set_tcu); 627 * 1 = on. Writing 0 deactivates tcu and writing 1 calibrates and 628 * activates the tcu
|
/linux/drivers/pwm/ |
H A D | pwm-jz4740.c | 15 #include <linux/mfd/ingenic-tcu.h> 39 /* Enable all TCU channels for PWM use by default except channels 0/1 */ in jz4740_pwm_can_use_chn() 106 * Set duty > period. This trick allows the TCU channels in TCU2 mode to in jz4740_pwm_disable()
|