The RZ/G2L multi-function timer pulse unit 3 (MTU3a) is embedded in the Renesas RZ/G2L family SoC's. It consists of eight 16-bit timer channels and one 32-bit timer channel. It supports the following functions - Counter - Timer - PWM This patch series aim to add MFD and pwm driver for MTU3a. The 8/16/32 bit registers are mixed in each channel. The HW specifications of the IP is described in patch#1. Current patch set is tested for PWM mode1 on MTU3 channel and 16 and 32 bit phase counting modes. v2->v3: * Dropped counter bindings and integrated with mfd as it has only one property. * Removed "#address-cells" and "#size-cells" as it do not have children with unit addresses. * Removed quotes from counter and pwm. * Provided full path for pwm bindings. * Updated the binding example. * removed unwanted header files * Added LUT for 32 bit registers as it needed for 32-bit cascade counting. * Exported 32 bit read/write functions. * Modelled as a counter device supporting 3 counters(2 16-bit and 32-bit) * Add kernel-doc comments to document struct rz_mtu3_cnt * Removed mmio variable from struct rz_mtu3_cnt * Removed cnt local variable from rz_mtu3_count_read() * Replaced -EINVAL->-ERANGE for out of range error conditions. * Removed explicit cast from write functions. * Removed local variable val from rz_mtu3_count_ceiling_read() * Added lock for RMW for counter/ceiling updates. * Added different synapses for counter0 and counter{1,2} * Used ARRAY for assigning num_counts. * Added PM runtime for managing clocks. * Add MODULE_IMPORT_NS(COUNTER) to import the COUNTER namespace. RFC->v2: * replaced devm_reset_control_get->devm_reset_control_get_exclusive * Dropped 'bindings' from the binding title * Updated the binding example * Added additionalProperties: false for counter bindings * Squashed all the binding patches * Modelled as a single counter device providing both 16-bit and 32-bit phase counting modes * Modelled as a single pwm device for supporting different pwm modes. * Moved counter and pwm bindings to respective subsystems. Biju Das (4): dt-bindings: mfd: Document RZ/G2L MTU3a bindings mfd: Add RZ/G2L MTU3 driver pwm: Add support for RZ/G2L MTU3 PWM counter: Add RZ/G2L MTU3 counter driver .../bindings/mfd/renesas,rz-mtu3.yaml | 304 ++++++++++ .../bindings/pwm/renesas,rz-mtu3-pwm.yaml | 50 ++ drivers/counter/Kconfig | 9 + drivers/counter/Makefile | 1 + drivers/counter/rz-mtu3-cnt.c | 568 ++++++++++++++++++ drivers/mfd/Kconfig | 9 + drivers/mfd/Makefile | 1 + drivers/mfd/rz-mtu3.c | 436 ++++++++++++++ drivers/pwm/Kconfig | 11 + drivers/pwm/Makefile | 1 + drivers/pwm/pwm-rz-mtu3.c | 462 ++++++++++++++ include/linux/mfd/rz-mtu3.h | 183 ++++++ 12 files changed, 2035 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/renesas,rz-mtu3.yaml create mode 100644 Documentation/devicetree/bindings/pwm/renesas,rz-mtu3-pwm.yaml create mode 100644 drivers/counter/rz-mtu3-cnt.c create mode 100644 drivers/mfd/rz-mtu3.c create mode 100644 drivers/pwm/pwm-rz-mtu3.c create mode 100644 include/linux/mfd/rz-mtu3.h -- 2.25.1