Re: [PATCH 1/2] pwm: sun4i: Add Allwinner H3 support

From: Maxime Ripard
Date: Thu Aug 25 2016 - 16:54:57 EST


Hi Milo,

Remember to use get_maintainers to send your patches, you missed a few
mailing lists (linux-arm-kernel, for example), developpers (Alexandre
Belloni, the original author of the driver) and maintainers (Linus
Walleij for the pinctrl changes).

On Thu, Aug 25, 2016 at 03:44:53PM +0900, Milo Kim wrote:
> According to the latest datasheet (v1.2), H3 has single PWM channel.
> H3 PWM controller has same register layout as sun4i driver, so it works
> by adding H3 specific data.
> And the second PWM channel is not supported, so the pinctrl function is removed.
>
> Datasheet:
> http://linux-sunxi.org/File:Allwinner_H3_Datasheet_V1.2.pdf

That should be in your cover letter, but not in your commit log. A
commit log is here forever, this link will very likely not.

>
> Test environment:
> Tested on Nano Pi M1 board, but PA5 pin is assigned for UART0.
> So the debug console should be changed to other port like UART1.
>
> Ex)
> aliases {
> serial0 = &uart1;
> };
>
> &uart1 {
> pinctrl-names = "default";
> pinctrl-0 = <&uart1_pins_a>;
> status = "okay";
> };

That should be part of your cover letter too.

> Cc: Chen-Yu Tsai <wens@xxxxxxxx>
> Cc: Maxime Ripard <maxime.ripard@xxxxxxxxxxxxxxxxxx>
> Cc: Rob Herring <robh+dt@xxxxxxxxxx>
> Cc: Thierry Reding <thierry.reding@xxxxxxxxx>
> Signed-off-by: Milo Kim <woogyom.kim@xxxxxxxxx>
> ---
> Documentation/devicetree/bindings/pwm/pwm-sun4i.txt | 1 +
> arch/arm/boot/dts/sun8i-h3.dtsi | 15 +++++++++++++++
> drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c | 1 -
> drivers/pwm/pwm-sun4i.c | 9 +++++++++

Please split these changes into several patches:

> 4 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt b/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt
> index cf6068b..f1cbeef 100644
> --- a/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt
> +++ b/Documentation/devicetree/bindings/pwm/pwm-sun4i.txt
> @@ -6,6 +6,7 @@ Required properties:
> - "allwinner,sun5i-a10s-pwm"
> - "allwinner,sun5i-a13-pwm"
> - "allwinner,sun7i-a20-pwm"
> + - "allwinner,sun8i-h3-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.
> diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
> index b44bc48..3a965fb 100644
> --- a/arch/arm/boot/dts/sun8i-h3.dtsi
> +++ b/arch/arm/boot/dts/sun8i-h3.dtsi
> @@ -512,6 +512,13 @@
> allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
> };
>
> + pwm0_pin_a: pwm0@0 {
> + allwinner,pins = "PA5";
> + allwinner,function = "pwm0";
> + allwinner,drive = <SUN4I_PINCTRL_10_MA>;
> + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
> + };
> +

One to add the new pin...

> uart0_pins_a: uart0@0 {
> allwinner,pins = "PA4", "PA5";
> allwinner,function = "uart0";
> @@ -585,6 +592,14 @@
> interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
> };
>
> + pwm: pwm@01c21400 {
> + compatible = "allwinner,sun8i-h3-pwm";
> + reg = <0x01c21400 0x8>;
> + clocks = <&osc24M>;
> + #pwm-cells = <3>;
> + status = "disabled";
> + };
> +

... one to add the controller node ...

> uart0: serial@01c28000 {
> compatible = "snps,dw-apb-uart";
> reg = <0x01c28000 0x400>;
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
> index 11760bb..087f231 100644
> --- a/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
> +++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
> @@ -60,7 +60,6 @@ static const struct sunxi_desc_pin sun8i_h3_pins[] = {
> SUNXI_FUNCTION(0x0, "gpio_in"),
> SUNXI_FUNCTION(0x1, "gpio_out"),
> SUNXI_FUNCTION(0x2, "sim"), /* PWREN */
> - SUNXI_FUNCTION(0x3, "pwm1"),

... one to remove the pinctrl pin ...

> SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 6)), /* PA_EINT6 */
> SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 7),
> SUNXI_FUNCTION(0x0, "gpio_in"),
> diff --git a/drivers/pwm/pwm-sun4i.c b/drivers/pwm/pwm-sun4i.c
> index 03a99a5..b0803f6 100644
> --- a/drivers/pwm/pwm-sun4i.c
> +++ b/drivers/pwm/pwm-sun4i.c
> @@ -284,6 +284,12 @@ static const struct sun4i_pwm_data sun4i_pwm_data_a20 = {
> .npwm = 2,
> };
>
> +static const struct sun4i_pwm_data sun4i_pwm_data_h3 = {
> + .has_prescaler_bypass = true,
> + .has_rdy = true,
> + .npwm = 1,
> +};
> +
> static const struct of_device_id sun4i_pwm_dt_ids[] = {
> {
> .compatible = "allwinner,sun4i-a10-pwm",
> @@ -298,6 +304,9 @@ static const struct of_device_id sun4i_pwm_dt_ids[] = {
> .compatible = "allwinner,sun7i-a20-pwm",
> .data = &sun4i_pwm_data_a20,
> }, {
> + .compatible = "allwinner,sun8i-h3-pwm",
> + .data = &sun4i_pwm_data_h3,
> + }, {

... and one to add the H3 support in the driver.

It looks good otherwise, thanks!
Maxime

--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

Attachment: signature.asc
Description: PGP signature