mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
pwm: Changes for v4.12-rc1
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. -----BEGIN PGP SIGNATURE----- iQJNBAABCAA3FiEEiOrDCAFJzPfAjcif3SOs138+s6EFAlkR5d8ZHHRoaWVycnku cmVkaW5nQGdtYWlsLmNvbQAKCRDdI6zXfz6zoRepEACg/iW8TgaWZwI64twDVowZ BgDm2QY/eIcseT+ooHoypNqprdzRk/f8lj75+SQKx65Q9FAqO1mfZbn0RmrJ5vNT 8UDkV/f2l/MKdFWYf9PfBkCbcfNzxBQ0qYmjj4XDJJGd3iUfffGTvzSmVmHlMWaE S7iN27JPc/a7C73sNgtf0d0iExXo3fFRdLoizeCXDjAGpvZBvrheQDpAiFFcuN+G kTsqGO+INxYJT/VqXb0kB9yJQUpcCm9oGgQV7oU0cHD07ZXOJ5Hlk2bskKz4FoWp gL1AXexwDupjrQwEa77X4T8bGkyW7DjDogVfV8Caks8DJk1NkdiDmmyVrdjkpCSe 5KB8PueQKNQ30rVzbvj5h7CwSQBAoRbzv6/7hqyo2nFvsfoijEgfVdFfwOZttCa+ N5tcnASkHGTF51Yvw4PEOYRbbdNniA5p0XZQlB8bLNlNxdgFJ865SrQFEcjfs+g5 Hyho7eSRjz+4BXWnQJWPCrAfkuN/kSpszwxVsXhsw+JSIWnSYnnMV22usSFKeOSz iR335N6To/YbolDCu2W8uPLenxRR9huvO0JLX1bxG/C2IFA/CPGuCpfZ1jafxVAr uZzhGkJh8MTbbFE1K/gIdFxP5dgl++ogAivHD/KUsaQ815+UwAY5UcSJBOLMPIIt zZkhin7cLigK0AW59Tl74Q== =bR2p -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
ecc721a72c
10 changed files with 685 additions and 309 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
Documentation/devicetree/bindings/pwm/pwm-mediatek.txt
Normal file
34
Documentation/devicetree/bindings/pwm/pwm-mediatek.txt
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
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>;
|
||||
};
|
||||
Loading…
Reference in a new issue