Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ecc721a7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'pwm/for-4.12-rc1' of...

Merge tag 'pwm/for-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm

Pull pwm updates from Thierry Reding:
 "Adds a new driver for the PWM controller found on MediaTek SoCs and
  extends support for the Atmel PWM controller to include the SAMA5D2.

  Some existing drivers have been migrated to the atomic API and a few
  others see miscellaneous improvements"

* tag 'pwm/for-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm:
  pwm: tegra: Read PWM clock source rate in driver init
  pwm: pca9685: Fix GPIO-only operation
  pwm: mediatek: Don't explicitly set .owner
  pwm: tegra: Avoid potential overflow for short periods
  pwm: tegra: Add support to configure pin state in suspends/resume
  pwm: tegra: Add DT binding details to configure pin in suspends/resume
  pwm: tegra: Increase precision in PWM rate calculation
  pwm: tegra: Use DIV_ROUND_CLOSEST_ULL() instead of local implementation
  pwm: Add MediaTek PWM support
  dt-bindings: pwm: Add MediaTek PWM bindings
  pwm: atmel: Enable PWM on sama5d2
  pwm: atmel: Switch to atomic PWM
  pwm: atmel-hlcdc: Implement the suspend/resume hooks
  pwm: atmel-hlcdc: Convert to the atomic PWM API
parents 28b47809 97512cea
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ Required properties:
  - compatible: should be one of:
    - "atmel,at91sam9rl-pwm"
    - "atmel,sama5d3-pwm"
    - "atmel,sama5d2-pwm"
  - reg: physical base address and length of the controller's registers
  - #pwm-cells: Should be 3. See pwm.txt in this directory for a
    description of the cells format.
+45 −0
Original line number Diff line number Diff line
@@ -19,6 +19,19 @@ Required properties:
- reset-names: Must include the following entries:
  - pwm

Optional properties:
============================
In some of the interface like PWM based regulator device, it is required
to configure the pins differently in different states, especially in suspend
state of the system. The configuration of pin is provided via the pinctrl
DT node as detailed in the pinctrl DT binding document
	Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt

The PWM node will have following optional properties.
pinctrl-names:	Pin state names. Must be "default" and "sleep".
pinctrl-0:	phandle for the default/active state of pin configurations.
pinctrl-1:	phandle for the sleep state of pin configurations.

Example:

	pwm: pwm@7000a000 {
@@ -29,3 +42,35 @@ Example:
		resets = <&tegra_car 17>;
		reset-names = "pwm";
	};


Example with the pin configuration for suspend and resume:
=========================================================
Suppose pin PE7 (On Tegra210) interfaced with the regulator device and
it requires PWM output to be tristated when system enters suspend.
Following will be DT binding to achieve this:

#include <dt-bindings/pinctrl/pinctrl-tegra.h>

	pinmux@700008d4 {
		pwm_active_state: pwm_active_state {
                        pe7 {
                                nvidia,pins = "pe7";
                                nvidia,tristate = <TEGRA_PIN_DISABLE>;
			};
		};

		pwm_sleep_state: pwm_sleep_state {
                        pe7 {
                                nvidia,pins = "pe7";
                                nvidia,tristate = <TEGRA_PIN_ENABLE>;
			};
		};
	};

	pwm@7000a000 {
		/* Mandatory PWM properties */
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&pwm_active_state>;
		pinctrl-1 = <&pwm_sleep_state>;
	};
+34 −0
Original line number Diff line number Diff line
MediaTek PWM controller

Required properties:
 - compatible: should be "mediatek,<name>-pwm":
   - "mediatek,mt7623-pwm": found on mt7623 SoC.
 - reg: physical base address and length of the controller's registers.
 - #pwm-cells: must be 2. See pwm.txt in this directory for a description of
   the cell format.
 - clocks: phandle and clock specifier of the PWM reference clock.
 - clock-names: must contain the following:
   - "top": the top clock generator
   - "main": clock used by the PWM core
   - "pwm1-5": the five per PWM clocks
 - pinctrl-names: Must contain a "default" entry.
 - pinctrl-0: One property must exist for each entry in pinctrl-names.
   See pinctrl/pinctrl-bindings.txt for details of the property values.

Example:
	pwm0: pwm@11006000 {
		compatible = "mediatek,mt7623-pwm";
		reg = <0 0x11006000 0 0x1000>;
		#pwm-cells = <2>;
		clocks = <&topckgen CLK_TOP_PWM_SEL>,
			 <&pericfg CLK_PERI_PWM>,
			 <&pericfg CLK_PERI_PWM1>,
			 <&pericfg CLK_PERI_PWM2>,
			 <&pericfg CLK_PERI_PWM3>,
			 <&pericfg CLK_PERI_PWM4>,
			 <&pericfg CLK_PERI_PWM5>;
		clock-names = "top", "main", "pwm1", "pwm2",
			      "pwm3", "pwm4", "pwm5";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm0_pins>;
	};
+9 −0
Original line number Diff line number Diff line
@@ -293,6 +293,15 @@ config PWM_MTK_DISP
	  To compile this driver as a module, choose M here: the module
	  will be called pwm-mtk-disp.

config PWM_MEDIATEK
	tristate "MediaTek PWM support"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	help
	  Generic PWM framework driver for Mediatek ARM SoC.

	  To compile this driver as a module, choose M here: the module
	  will be called pwm-mxs.

config PWM_MXS
	tristate "Freescale MXS PWM support"
	depends on ARCH_MXS && OF
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ obj-$(CONFIG_PWM_LPSS) += pwm-lpss.o
obj-$(CONFIG_PWM_LPSS_PCI)	+= pwm-lpss-pci.o
obj-$(CONFIG_PWM_LPSS_PLATFORM)	+= pwm-lpss-platform.o
obj-$(CONFIG_PWM_MESON)		+= pwm-meson.o
obj-$(CONFIG_PWM_MEDIATEK)	+= pwm-mediatek.o
obj-$(CONFIG_PWM_MTK_DISP)	+= pwm-mtk-disp.o
obj-$(CONFIG_PWM_MXS)		+= pwm-mxs.o
obj-$(CONFIG_PWM_OMAP_DMTIMER)	+= pwm-omap-dmtimer.o
Loading