linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pwm: sun4i: direct clock output support for Allwinner A64
@ 2020-04-26 10:11 Peter Vasil
  2020-04-28  7:53 ` Maxime Ripard
  0 siblings, 1 reply; 2+ messages in thread
From: Peter Vasil @ 2020-04-26 10:11 UTC (permalink / raw)
  To: Rob Herring, Maxime Ripard, Chen-Yu Tsai, Thierry Reding,
	Uwe Kleine-König, devicetree, linux-arm-kernel,
	linux-kernel, linux-pwm
  Cc: Peter Vasil

Allwinner A64 is capable of a direct clock output on PWM (see A64
User Manual chapter 3.10). Add support for this in the sun4i PWM
driver and adjust compatibility in sun50i-a64 base device tree.

Signed-off-by: Peter Vasil <peter.vasil@gmail.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 6 ++----
 drivers/pwm/pwm-sun4i.c                       | 9 +++++++++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index 31143fe64d91..c334fd106854 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -1069,8 +1069,7 @@ gic: interrupt-controller@1c81000 {
 		};
 
 		pwm: pwm@1c21400 {
-			compatible = "allwinner,sun50i-a64-pwm",
-				     "allwinner,sun5i-a13-pwm";
+			compatible = "allwinner,sun50i-a64-pwm";
 			reg = <0x01c21400 0x400>;
 			clocks = <&osc24M>;
 			pinctrl-names = "default";
@@ -1252,8 +1251,7 @@ r_ir: ir@1f02000 {
 		};
 
 		r_pwm: pwm@1f03800 {
-			compatible = "allwinner,sun50i-a64-pwm",
-				     "allwinner,sun5i-a13-pwm";
+			compatible = "allwinner,sun50i-a64-pwm";
 			reg = <0x01f03800 0x400>;
 			clocks = <&osc24M>;
 			pinctrl-names = "default";
diff --git a/drivers/pwm/pwm-sun4i.c b/drivers/pwm/pwm-sun4i.c
index 5c677c563349..18fbbe3277d0 100644
--- a/drivers/pwm/pwm-sun4i.c
+++ b/drivers/pwm/pwm-sun4i.c
@@ -352,6 +352,12 @@ static const struct sun4i_pwm_data sun4i_pwm_single_bypass = {
 	.npwm = 1,
 };
 
+static const struct sun4i_pwm_data sun50i_a64_pwm_data = {
+	.has_prescaler_bypass = true,
+	.has_direct_mod_clk_output = true,
+	.npwm = 1,
+};
+
 static const struct sun4i_pwm_data sun50i_h6_pwm_data = {
 	.has_prescaler_bypass = true,
 	.has_direct_mod_clk_output = true,
@@ -374,6 +380,9 @@ static const struct of_device_id sun4i_pwm_dt_ids[] = {
 	}, {
 		.compatible = "allwinner,sun8i-h3-pwm",
 		.data = &sun4i_pwm_single_bypass,
+	}, {
+		.compatible = "allwinner,sun50i-a64-pwm",
+		.data = &sun50i_a64_pwm_data,
 	}, {
 		.compatible = "allwinner,sun50i-h6-pwm",
 		.data = &sun50i_h6_pwm_data,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] pwm: sun4i: direct clock output support for Allwinner A64
  2020-04-26 10:11 [PATCH] pwm: sun4i: direct clock output support for Allwinner A64 Peter Vasil
@ 2020-04-28  7:53 ` Maxime Ripard
  0 siblings, 0 replies; 2+ messages in thread
From: Maxime Ripard @ 2020-04-28  7:53 UTC (permalink / raw)
  To: Peter Vasil
  Cc: Rob Herring, Chen-Yu Tsai, Thierry Reding, Uwe Kleine-König,
	devicetree, linux-arm-kernel, linux-kernel, linux-pwm

[-- Attachment #1: Type: text/plain, Size: 2553 bytes --]

Hi,

On Sun, Apr 26, 2020 at 12:11:22PM +0200, Peter Vasil wrote:
> Allwinner A64 is capable of a direct clock output on PWM (see A64
> User Manual chapter 3.10). Add support for this in the sun4i PWM
> driver and adjust compatibility in sun50i-a64 base device tree.
> 
> Signed-off-by: Peter Vasil <peter.vasil@gmail.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 6 ++----
>  drivers/pwm/pwm-sun4i.c                       | 9 +++++++++
>  2 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> index 31143fe64d91..c334fd106854 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> @@ -1069,8 +1069,7 @@ gic: interrupt-controller@1c81000 {
>  		};
>  
>  		pwm: pwm@1c21400 {
> -			compatible = "allwinner,sun50i-a64-pwm",
> -				     "allwinner,sun5i-a13-pwm";
> +			compatible = "allwinner,sun50i-a64-pwm";
>  			reg = <0x01c21400 0x400>;
>  			clocks = <&osc24M>;
>  			pinctrl-names = "default";
> @@ -1252,8 +1251,7 @@ r_ir: ir@1f02000 {
>  		};
>  
>  		r_pwm: pwm@1f03800 {
> -			compatible = "allwinner,sun50i-a64-pwm",
> -				     "allwinner,sun5i-a13-pwm";
> +			compatible = "allwinner,sun50i-a64-pwm";

There's no need to remove that compatible, it's actually working as intended..

>  			reg = <0x01f03800 0x400>;
>  			clocks = <&osc24M>;
>  			pinctrl-names = "default";
> diff --git a/drivers/pwm/pwm-sun4i.c b/drivers/pwm/pwm-sun4i.c
> index 5c677c563349..18fbbe3277d0 100644
> --- a/drivers/pwm/pwm-sun4i.c
> +++ b/drivers/pwm/pwm-sun4i.c
> @@ -352,6 +352,12 @@ static const struct sun4i_pwm_data sun4i_pwm_single_bypass = {
>  	.npwm = 1,
>  };
>  
> +static const struct sun4i_pwm_data sun50i_a64_pwm_data = {
> +	.has_prescaler_bypass = true,
> +	.has_direct_mod_clk_output = true,
> +	.npwm = 1,
> +};
> +
>  static const struct sun4i_pwm_data sun50i_h6_pwm_data = {
>  	.has_prescaler_bypass = true,
>  	.has_direct_mod_clk_output = true,
> @@ -374,6 +380,9 @@ static const struct of_device_id sun4i_pwm_dt_ids[] = {
>  	}, {
>  		.compatible = "allwinner,sun8i-h3-pwm",
>  		.data = &sun4i_pwm_single_bypass,
> +	}, {
> +		.compatible = "allwinner,sun50i-a64-pwm",
> +		.data = &sun50i_a64_pwm_data,

Ie, if the OS only has support for the A13, then it will use it as an A13, and
if it has support for the A64 variant, then it can use some more advanced
features.

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-04-28  7:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-26 10:11 [PATCH] pwm: sun4i: direct clock output support for Allwinner A64 Peter Vasil
2020-04-28  7:53 ` Maxime Ripard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).