Loading Documentation/devicetree/bindings/timer/renesas,mtu2.txt 0 → 100644 +39 −0 Original line number Diff line number Diff line * Renesas R-Car Multi-Function Timer Pulse Unit 2 (MTU2) The MTU2 is a multi-purpose, multi-channel timer/counter with configurable clock inputs and programmable compare match. Channels share hardware resources but their counter and compare match value are independent. The MTU2 hardware supports five channels indexed from 0 to 4. Required Properties: - compatible: must contain "renesas,mtu2" - reg: base address and length of the registers block for the timer module. - interrupts: interrupt specifiers for the timer, one for each entry in interrupt-names. - interrupt-names: must contain one entry named "tgi?a" for each enabled channel, where "?" is the channel index expressed as one digit from "0" to "4". - clocks: a list of phandle + clock-specifier pairs, one for each entry in clock-names. - clock-names: must contain "fck" for the functional clock. Example: R7S72100 (RZ/A1H) MTU2 node mtu2: timer@fcff0000 { compatible = "renesas,mtu2"; reg = <0xfcff0000 0x400>; interrupts = <0 139 IRQ_TYPE_LEVEL_HIGH>, <0 146 IRQ_TYPE_LEVEL_HIGH>, <0 150 IRQ_TYPE_LEVEL_HIGH>, <0 154 IRQ_TYPE_LEVEL_HIGH>, <0 159 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "tgi0a", "tgi1a", "tgi2a", "tgi3a", "tgi4a"; clocks = <&mstp3_clks R7S72100_CLK_MTU2>; clock-names = "fck"; }; drivers/clocksource/sh_mtu2.c +8 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <linux/ioport.h> #include <linux/irq.h> #include <linux/module.h> #include <linux/of.h> #include <linux/platform_device.h> #include <linux/pm_domain.h> #include <linux/pm_runtime.h> Loading Loading @@ -500,11 +501,18 @@ static const struct platform_device_id sh_mtu2_id_table[] = { }; MODULE_DEVICE_TABLE(platform, sh_mtu2_id_table); static const struct of_device_id sh_mtu2_of_table[] __maybe_unused = { { .compatible = "renesas,mtu2" }, { } }; MODULE_DEVICE_TABLE(of, sh_mtu2_of_table); static struct platform_driver sh_mtu2_device_driver = { .probe = sh_mtu2_probe, .remove = sh_mtu2_remove, .driver = { .name = "sh_mtu2", .of_match_table = of_match_ptr(sh_mtu2_of_table), }, .id_table = sh_mtu2_id_table, }; Loading Loading
Documentation/devicetree/bindings/timer/renesas,mtu2.txt 0 → 100644 +39 −0 Original line number Diff line number Diff line * Renesas R-Car Multi-Function Timer Pulse Unit 2 (MTU2) The MTU2 is a multi-purpose, multi-channel timer/counter with configurable clock inputs and programmable compare match. Channels share hardware resources but their counter and compare match value are independent. The MTU2 hardware supports five channels indexed from 0 to 4. Required Properties: - compatible: must contain "renesas,mtu2" - reg: base address and length of the registers block for the timer module. - interrupts: interrupt specifiers for the timer, one for each entry in interrupt-names. - interrupt-names: must contain one entry named "tgi?a" for each enabled channel, where "?" is the channel index expressed as one digit from "0" to "4". - clocks: a list of phandle + clock-specifier pairs, one for each entry in clock-names. - clock-names: must contain "fck" for the functional clock. Example: R7S72100 (RZ/A1H) MTU2 node mtu2: timer@fcff0000 { compatible = "renesas,mtu2"; reg = <0xfcff0000 0x400>; interrupts = <0 139 IRQ_TYPE_LEVEL_HIGH>, <0 146 IRQ_TYPE_LEVEL_HIGH>, <0 150 IRQ_TYPE_LEVEL_HIGH>, <0 154 IRQ_TYPE_LEVEL_HIGH>, <0 159 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "tgi0a", "tgi1a", "tgi2a", "tgi3a", "tgi4a"; clocks = <&mstp3_clks R7S72100_CLK_MTU2>; clock-names = "fck"; };
drivers/clocksource/sh_mtu2.c +8 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <linux/ioport.h> #include <linux/irq.h> #include <linux/module.h> #include <linux/of.h> #include <linux/platform_device.h> #include <linux/pm_domain.h> #include <linux/pm_runtime.h> Loading Loading @@ -500,11 +501,18 @@ static const struct platform_device_id sh_mtu2_id_table[] = { }; MODULE_DEVICE_TABLE(platform, sh_mtu2_id_table); static const struct of_device_id sh_mtu2_of_table[] __maybe_unused = { { .compatible = "renesas,mtu2" }, { } }; MODULE_DEVICE_TABLE(of, sh_mtu2_of_table); static struct platform_driver sh_mtu2_device_driver = { .probe = sh_mtu2_probe, .remove = sh_mtu2_remove, .driver = { .name = "sh_mtu2", .of_match_table = of_match_ptr(sh_mtu2_of_table), }, .id_table = sh_mtu2_id_table, }; Loading