mbox series

[linux,dev-6.6,v2,0/7] pinctrl: npcm8xx: pin configuration changes

Message ID 20240718182720.2721427-1-tmaimon77@gmail.com
Headers show
Series pinctrl: npcm8xx: pin configuration changes | expand

Message

Tomer Maimon July 18, 2024, 6:27 p.m. UTC
This patch set addresses various pin configuration changes for the 
Nuvoton NPCM8XX BMC SoC. The patches aim to enhance functionality, 
remove unused pins, and improve overall pin management.

This patchset is on the upstream process to the Linux vanilla.
https://lore.kernel.org/lkml/20240716194008.3502068-1-tmaimon77@gmail.com/

Changes since version 1:
        - Squash the non-existent pins, groups and functions.
        - Remove non-existent groups and functions from dt-bindings.
        - Modify the commit message.

Tomer Maimon (7):
  dt-bindings: pinctrl: npcm8xx: remove non-existent groups and
    functions
  pinctrl: nuvoton: npcm8xx: remove non-existent pins, groups, functions
  pinctrl: nuvoton: npcm8xx: clear polarity before set both edge
  pinctrl: nuvoton: npcm8xx: add gpi35 and gpi36
  pinctrl: nuvoton: npcm8xx: add pin 250 to DDR pins group
  pinctrl: nuvoton: npcm8xx: modify clkrun and serirq pin configuration
  pinctrl: nuvoton: npcm8xx: modify pins flags

 .../pinctrl/nuvoton,npcm845-pinctrl.yaml      | 74 +++++++++----------
 drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c     | 64 ++++++++--------
 2 files changed, 67 insertions(+), 71 deletions(-)

Comments

Andrew Jeffery July 25, 2024, 7:29 a.m. UTC | #1
Hi Tomer,

On Thu, 2024-07-18 at 21:27 +0300, Tomer Maimon wrote:
> This patch set addresses various pin configuration changes for the 
> Nuvoton NPCM8XX BMC SoC. The patches aim to enhance functionality, 
> remove unused pins, and improve overall pin management.
> 
> This patchset is on the upstream process to the Linux vanilla.
> https://lore.kernel.org/lkml/20240716194008.3502068-1-tmaimon77@gmail.com/
> 
> Changes since version 1:
>         - Squash the non-existent pins, groups and functions.
>         - Remove non-existent groups and functions from dt-bindings.
>         - Modify the commit message.
> 
> Tomer Maimon (7):
>   dt-bindings: pinctrl: npcm8xx: remove non-existent groups and
>     functions
>   pinctrl: nuvoton: npcm8xx: remove non-existent pins, groups, functions
>   pinctrl: nuvoton: npcm8xx: clear polarity before set both edge
>   pinctrl: nuvoton: npcm8xx: add gpi35 and gpi36
>   pinctrl: nuvoton: npcm8xx: add pin 250 to DDR pins group
>   pinctrl: nuvoton: npcm8xx: modify clkrun and serirq pin configuration
>   pinctrl: nuvoton: npcm8xx: modify pins flags
> 
>  .../pinctrl/nuvoton,npcm845-pinctrl.yaml      | 74 +++++++++----------
>  drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c     | 64 ++++++++--------
>  2 files changed, 67 insertions(+), 71 deletions(-)
> 

I looked at applying this series. A few notes:

1. I did get some whitespace warnings during patch application:

```
...
Applying: pinctrl: nuvoton: npcm8xx: modify pins flags                                                                                                         
/home/andrew/src/kernel.org/linux.git/worktrees/openbmc/rebase-apply/patch:47: trailing whitespace.                                                            
                  nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1  
/home/andrew/src/kernel.org/linux.git/worktrees/openbmc/rebase-apply/patch:89: trailing whitespace.                                                            
                nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1                                                                                    
warning: 2 lines add whitespace errors.
```

2. There's a reasonable difference to the patches upstream. The
devicetree binding in particular seems to have some odd differences in
the enums that make me wonder whether we're missing other patches
there. There are also some minor differences in the driver which I
assume are explained by intervening changes between v6.6 and upstream.
Here's the diff, can you give a quick comment on each hunk?

```
$ git diff <backported patches on dev-6.6> <patches proposed upstream on c33ffdb70cc6 ("Merge tag 'phy-for-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy")> -- drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
diff --git a/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
index 4496658006ab..8cd1f442240e 100644
--- a/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
@@ -35,6 +35,7 @@ properties:
 patternProperties:
   '^gpio@':
     type: object
+    additionalProperties: false

     description:
       Eight GPIO banks that each contain 32 GPIOs.
@@ -80,37 +81,39 @@ patternProperties:
                   fanin7, fanin8, fanin9, fanin10, fanin11, fanin12, fanin13,
                   fanin14, fanin15, pwm0, pwm1, pwm2, pwm3, r2, r2err, r2md,
                   r3rxer, ga20kbc, smb5d, lpc, espi, rg2, ddr, i3c0, i3c1,
-                  i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b,
-                  smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4,
-                  pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp,
-                  mmccd, mmcrst, clkout, serirq, scipme, smi, smb6, smb7, spi1,
-                  faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3,
-                  nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
-                  wdog2, smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1,
-                  hgpio2, hgpio3, hgpio4, hgpio5, hgpio6, hgpio7 ]
+                  i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b, smb1c,
+                  smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4, pwm5,
+                  pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp, mmccd,
+                  mmcrst, clkout, serirq, scipme, smi, smb6, smb6b, smb6c,
+                  smb6d, smb7, smb7b, smb7c, smb7d, spi1, faninx, r1, spi3,
+                  spi3cs1, spi3quad, spi3cs2, spi3cs3, nprd_smi, smb0b, smb0c,
+                  smb0den, smb0d, ddc, rg2mdio, wdog1, wdog2, smb12, smb13,
+                  spix, spixcs1, clkreq, hgpio0, hgpio1, hgpio2, hgpio3, hgpio4,
+                  hgpio5, hgpio6, hgpio7, bu4, bu4b, bu5, bu5b, bu6, gpo187 ]

       function:
         description:
           The function that a group of pins is muxed to
-        enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi,
-                smb5b, smb5c, lkgpo0, pspi, jm1, jm2, smb4b, smb4c, smb15,
-                smb16, smb17, smb18, smb19, smb20, smb21, smb22, smb23,
-                smb23b, smb4d, smb14, smb5, smb4, smb3, spi0cs1, spi0cs2,
-                spi0cs3, spi1cs0, spi1cs1, spi1cs2, spi1cs3, spi1cs23, smb3c,
-                smb3b, bmcuart0a, uart1, jtag2, bmcuart1, uart2, sg1mdio,
-                bmcuart0b, r1err, r1md, r1oen, r2oen, rmii3, r3oen, smb3d,
-                fanin0, fanin1, fanin2, fanin3, fanin4, fanin5, fanin6,
-                fanin7, fanin8, fanin9, fanin10, fanin11, fanin12, fanin13,
-                fanin14, fanin15, pwm0, pwm1, pwm2, pwm3, r2, r2err, r2md,
-                r3rxer, ga20kbc, smb5d, lpc, espi, rg2, ddr, i3c0, i3c1,
-                i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b,
-                smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4,
-                pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp,
-                mmccd, mmcrst, clkout, serirq, scipme, smi, smb6, smb7, spi1,
-                faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3,
-                nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
-                wdog2, smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1,
-                hgpio2, hgpio3, hgpio4, hgpio5, hgpio6, hgpio7 ]
+        enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi, smb5b,
+                smb5c, lkgpo0, pspi, jm1, jm2, smb4b, smb4c, smb15, smb16,
+                smb17, smb18, smb19, smb20, smb21, smb22, smb23, smb23b, smb4d,
+                smb14, smb5, smb4, smb3, spi0cs1, spi0cs2, spi0cs3, spi1cs0,
+                spi1cs1, spi1cs2, spi1cs3, spi1cs23, smb3c, smb3b, bmcuart0a,
+                uart1, jtag2, bmcuart1, uart2, sg1mdio, bmcuart0b, r1err, r1md,
+                r1oen, r2oen, rmii3, r3oen, smb3d, fanin0, fanin1, fanin2,
+                fanin3, fanin4, fanin5, fanin6, fanin7, fanin8, fanin9, fanin10,
+                fanin11, fanin12, fanin13, fanin14, fanin15, pwm0, pwm1, pwm2,
+                pwm3, r2, r2err, r2md, r3rxer, ga20kbc, smb5d, lpc, espi, rg2,
+                ddr, i3c0, i3c1, i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2,
+                smb2c, smb2b, smb1c, smb1b, smb8, smb9, smb10, smb11, sd1,
+                sd1pwr, pwm4, pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11,
+                mmc8, mmc, mmcwp, mmccd, mmcrst, clkout, serirq, scipme, smi,
+                smb6, smb6b, smb6c, smb6d, smb7, smb7b, smb7c, smb7d, spi1,
+                faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3, nprd_smi,
+                smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1, wdog2,
+                smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1, hgpio2,
+                hgpio3, hgpio4, hgpio5, hgpio6, hgpio7, bu4, bu4b, bu5, bu5b,
+                bu6, gpo187 ]

     dependencies:
       groups: [ function ]
@@ -149,7 +152,6 @@ patternProperties:
         description:
           Debouncing periods in microseconds, one period per interrupt
           bank found in the controller
-        $ref: /schemas/types.yaml#/definitions/uint32-array
         minItems: 1
         maxItems: 4

@@ -157,7 +159,6 @@ patternProperties:
         description: |
           0: Low rate
           1: High rate
-        $ref: /schemas/types.yaml#/definitions/uint32
         enum: [0, 1]

       drive-strength:
diff --git a/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c b/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
index 607960fdbc40..471f644c5eef 100644
--- a/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
+++ b/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
@@ -173,7 +173,7 @@ static int npcmgpio_direction_input(struct gpio_chip *chip, unsigned int offset)
        struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
        int ret;

-       ret = pinctrl_gpio_direction_input(offset + chip->base);
+       ret = pinctrl_gpio_direction_input(chip, offset);
        if (ret)
                return ret;

@@ -186,7 +186,7 @@ static int npcmgpio_direction_output(struct gpio_chip *chip,
        struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
        int ret;

-       ret = pinctrl_gpio_direction_output(offset + chip->base);
+       ret = pinctrl_gpio_direction_output(chip, offset);
        if (ret)
                return ret;

@@ -198,18 +198,13 @@ static int npcmgpio_gpio_request(struct gpio_chip *chip, unsigned int offset)
        struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
        int ret;

-       ret = pinctrl_gpio_request(offset + chip->base);
+       ret = pinctrl_gpio_request(chip, offset);
        if (ret)
                return ret;

        return bank->request(chip, offset);
 }

-static void npcmgpio_gpio_free(struct gpio_chip *chip, unsigned int offset)
-{
-       pinctrl_gpio_free(offset + chip->base);
-}
-
 static void npcmgpio_irq_handler(struct irq_desc *desc)
 {
        unsigned long sts, en, bit;
@@ -2386,7 +2381,7 @@ static int npcm8xx_gpio_fw(struct npcm8xx_pinctrl *pctrl)
                pctrl->gpio_bank[id].gc.direction_output = npcmgpio_direction_output;
                pctrl->gpio_bank[id].request = pctrl->gpio_bank[id].gc.request;
                pctrl->gpio_bank[id].gc.request = npcmgpio_gpio_request;
-               pctrl->gpio_bank[id].gc.free = npcmgpio_gpio_free;
+               pctrl->gpio_bank[id].gc.free = pinctrl_gpio_free;
                for (i = 0 ; i < NPCM8XX_DEBOUNCE_MAX ; i++)
                        pctrl->gpio_bank[id].debounce.set_val[i] = false;
                pctrl->gpio_bank[id].gc.add_pin_ranges = npcmgpio_add_pin_ranges;
```

Andrew
Tomer Maimon July 25, 2024, 5:56 p.m. UTC | #2
Hi Andrew,

Thanks for your comments

On Thu, 25 Jul 2024 at 10:29, Andrew Jeffery
<andrew@codeconstruct.com.au> wrote:
>
> Hi Tomer,
>
> On Thu, 2024-07-18 at 21:27 +0300, Tomer Maimon wrote:
> > This patch set addresses various pin configuration changes for the
> > Nuvoton NPCM8XX BMC SoC. The patches aim to enhance functionality,
> > remove unused pins, and improve overall pin management.
> >
> > This patchset is on the upstream process to the Linux vanilla.
> > https://lore.kernel.org/lkml/20240716194008.3502068-1-tmaimon77@gmail.com/
> >
> > Changes since version 1:
> >         - Squash the non-existent pins, groups and functions.
> >         - Remove non-existent groups and functions from dt-bindings.
> >         - Modify the commit message.
> >
> > Tomer Maimon (7):
> >   dt-bindings: pinctrl: npcm8xx: remove non-existent groups and
> >     functions
> >   pinctrl: nuvoton: npcm8xx: remove non-existent pins, groups, functions
> >   pinctrl: nuvoton: npcm8xx: clear polarity before set both edge
> >   pinctrl: nuvoton: npcm8xx: add gpi35 and gpi36
> >   pinctrl: nuvoton: npcm8xx: add pin 250 to DDR pins group
> >   pinctrl: nuvoton: npcm8xx: modify clkrun and serirq pin configuration
> >   pinctrl: nuvoton: npcm8xx: modify pins flags
> >
> >  .../pinctrl/nuvoton,npcm845-pinctrl.yaml      | 74 +++++++++----------
> >  drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c     | 64 ++++++++--------
> >  2 files changed, 67 insertions(+), 71 deletions(-)
> >
>
> I looked at applying this series. A few notes:
>
> 1. I did get some whitespace warnings during patch application:
>
> ```
> ...
> Applying: pinctrl: nuvoton: npcm8xx: modify pins flags
> /home/andrew/src/kernel.org/linux.git/worktrees/openbmc/rebase-apply/patch:47: trailing whitespace.
>                   nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> /home/andrew/src/kernel.org/linux.git/worktrees/openbmc/rebase-apply/patch:89: trailing whitespace.
>                 nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> warning: 2 lines add whitespace errors.
> ```
>
will fixed in V3
> 2. There's a reasonable difference to the patches upstream. The
> devicetree binding in particular seems to have some odd differences in
> the enums that make me wonder whether we're missing other patches
> there. There are also some minor differences in the driver which I
> assume are explained by intervening changes between v6.6 and upstream.
> Here's the diff, can you give a quick comment on each hunk?
>
> ```
> $ git diff <backported patches on dev-6.6> <patches proposed upstream on c33ffdb70cc6 ("Merge tag 'phy-for-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy")> -- drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> diff --git a/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> index 4496658006ab..8cd1f442240e 100644
> --- a/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> +++ b/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> @@ -35,6 +35,7 @@ properties:
>  patternProperties:
>    '^gpio@':
>      type: object
> +    additionalProperties: false
>
>      description:
>        Eight GPIO banks that each contain 32 GPIOs.
> @@ -80,37 +81,39 @@ patternProperties:
>                    fanin7, fanin8, fanin9, fanin10, fanin11, fanin12, fanin13,
>                    fanin14, fanin15, pwm0, pwm1, pwm2, pwm3, r2, r2err, r2md,
>                    r3rxer, ga20kbc, smb5d, lpc, espi, rg2, ddr, i3c0, i3c1,
> -                  i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b,
> -                  smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4,
> -                  pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp,
> -                  mmccd, mmcrst, clkout, serirq, scipme, smi, smb6, smb7, spi1,
> -                  faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3,
> -                  nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> -                  wdog2, smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1,
> -                  hgpio2, hgpio3, hgpio4, hgpio5, hgpio6, hgpio7 ]
> +                  i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b, smb1c,
> +                  smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4, pwm5,
> +                  pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp, mmccd,
> +                  mmcrst, clkout, serirq, scipme, smi, smb6, smb6b, smb6c,
> +                  smb6d, smb7, smb7b, smb7c, smb7d, spi1, faninx, r1, spi3,
> +                  spi3cs1, spi3quad, spi3cs2, spi3cs3, nprd_smi, smb0b, smb0c,
> +                  smb0den, smb0d, ddc, rg2mdio, wdog1, wdog2, smb12, smb13,
> +                  spix, spixcs1, clkreq, hgpio0, hgpio1, hgpio2, hgpio3, hgpio4,
> +                  hgpio5, hgpio6, hgpio7, bu4, bu4b, bu5, bu5b, bu6, gpo187 ]
>
>        function:
>          description:
>            The function that a group of pins is muxed to
> -        enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi,
> -                smb5b, smb5c, lkgpo0, pspi, jm1, jm2, smb4b, smb4c, smb15,
> -                smb16, smb17, smb18, smb19, smb20, smb21, smb22, smb23,
> -                smb23b, smb4d, smb14, smb5, smb4, smb3, spi0cs1, spi0cs2,
> -                spi0cs3, spi1cs0, spi1cs1, spi1cs2, spi1cs3, spi1cs23, smb3c,
> -                smb3b, bmcuart0a, uart1, jtag2, bmcuart1, uart2, sg1mdio,
> -                bmcuart0b, r1err, r1md, r1oen, r2oen, rmii3, r3oen, smb3d,
> -                fanin0, fanin1, fanin2, fanin3, fanin4, fanin5, fanin6,
> -                fanin7, fanin8, fanin9, fanin10, fanin11, fanin12, fanin13,
> -                fanin14, fanin15, pwm0, pwm1, pwm2, pwm3, r2, r2err, r2md,
> -                r3rxer, ga20kbc, smb5d, lpc, espi, rg2, ddr, i3c0, i3c1,
> -                i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b,
> -                smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4,
> -                pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp,
> -                mmccd, mmcrst, clkout, serirq, scipme, smi, smb6, smb7, spi1,
> -                faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3,
> -                nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> -                wdog2, smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1,
> -                hgpio2, hgpio3, hgpio4, hgpio5, hgpio6, hgpio7 ]
> +        enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi, smb5b,
> +                smb5c, lkgpo0, pspi, jm1, jm2, smb4b, smb4c, smb15, smb16,
> +                smb17, smb18, smb19, smb20, smb21, smb22, smb23, smb23b, smb4d,
> +                smb14, smb5, smb4, smb3, spi0cs1, spi0cs2, spi0cs3, spi1cs0,
> +                spi1cs1, spi1cs2, spi1cs3, spi1cs23, smb3c, smb3b, bmcuart0a,
> +                uart1, jtag2, bmcuart1, uart2, sg1mdio, bmcuart0b, r1err, r1md,
> +                r1oen, r2oen, rmii3, r3oen, smb3d, fanin0, fanin1, fanin2,
> +                fanin3, fanin4, fanin5, fanin6, fanin7, fanin8, fanin9, fanin10,
> +                fanin11, fanin12, fanin13, fanin14, fanin15, pwm0, pwm1, pwm2,
> +                pwm3, r2, r2err, r2md, r3rxer, ga20kbc, smb5d, lpc, espi, rg2,
> +                ddr, i3c0, i3c1, i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2,
> +                smb2c, smb2b, smb1c, smb1b, smb8, smb9, smb10, smb11, sd1,
> +                sd1pwr, pwm4, pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11,
> +                mmc8, mmc, mmcwp, mmccd, mmcrst, clkout, serirq, scipme, smi,
> +                smb6, smb6b, smb6c, smb6d, smb7, smb7b, smb7c, smb7d, spi1,
> +                faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3, nprd_smi,
> +                smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1, wdog2,
> +                smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1, hgpio2,
> +                hgpio3, hgpio4, hgpio5, hgpio6, hgpio7, bu4, bu4b, bu5, bu5b,
> +                bu6, gpo187 ]
Thanks for raising I have an error here, I will fixed it in the
vanilla and the OpenBMC, I should remove and add enums.
>
>      dependencies:
>        groups: [ function ]
> @@ -149,7 +152,6 @@ patternProperties:
>          description:
>            Debouncing periods in microseconds, one period per interrupt
>            bank found in the controller
> -        $ref: /schemas/types.yaml#/definitions/uint32-array
it removed in the newer version, we can keep it
>          minItems: 1
>          maxItems: 4
>
> @@ -157,7 +159,6 @@ patternProperties:
>          description: |
>            0: Low rate
>            1: High rate
> -        $ref: /schemas/types.yaml#/definitions/uint32
it removed in the newer version, we can keep it
>          enum: [0, 1]
>
>        drive-strength:
> diff --git a/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c b/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
> index 607960fdbc40..471f644c5eef 100644
> --- a/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
> +++ b/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
> @@ -173,7 +173,7 @@ static int npcmgpio_direction_input(struct gpio_chip *chip, unsigned int offset)
>         struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
>         int ret;
>
> -       ret = pinctrl_gpio_direction_input(offset + chip->base);
> +       ret = pinctrl_gpio_direction_input(chip, offset);
Modify in newer version, will revert the change in V3. since kernel
6.6 doesn't support it
>         if (ret)
>                 return ret;
>
> @@ -186,7 +186,7 @@ static int npcmgpio_direction_output(struct gpio_chip *chip,
>         struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
>         int ret;
>
> -       ret = pinctrl_gpio_direction_output(offset + chip->base);
> +       ret = pinctrl_gpio_direction_output(chip, offset);
same as above
>         if (ret)
>                 return ret;
>
> @@ -198,18 +198,13 @@ static int npcmgpio_gpio_request(struct gpio_chip *chip, unsigned int offset)
>         struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
>         int ret;
>
> -       ret = pinctrl_gpio_request(offset + chip->base);
> +       ret = pinctrl_gpio_request(chip, offset);
same as above
>         if (ret)
>                 return ret;
>
>         return bank->request(chip, offset);
>  }
>
> -static void npcmgpio_gpio_free(struct gpio_chip *chip, unsigned int offset)
> -{
> -       pinctrl_gpio_free(offset + chip->base);
> -}
> -
same as above
>  static void npcmgpio_irq_handler(struct irq_desc *desc)
>  {
>         unsigned long sts, en, bit;
> @@ -2386,7 +2381,7 @@ static int npcm8xx_gpio_fw(struct npcm8xx_pinctrl *pctrl)
>                 pctrl->gpio_bank[id].gc.direction_output = npcmgpio_direction_output;
>                 pctrl->gpio_bank[id].request = pctrl->gpio_bank[id].gc.request;
>                 pctrl->gpio_bank[id].gc.request = npcmgpio_gpio_request;
> -               pctrl->gpio_bank[id].gc.free = npcmgpio_gpio_free;
> +               pctrl->gpio_bank[id].gc.free = pinctrl_gpio_free;
same as above
>                 for (i = 0 ; i < NPCM8XX_DEBOUNCE_MAX ; i++)
>                         pctrl->gpio_bank[id].debounce.set_val[i] = false;
>                 pctrl->gpio_bank[id].gc.add_pin_ranges = npcmgpio_add_pin_ranges;
> ```
>
> Andrew

Best regards,

Tomer
Andrew Jeffery July 26, 2024, 5:19 a.m. UTC | #3
On Thu, 2024-07-25 at 20:56 +0300, Tomer Maimon wrote:
> Hi Andrew,
> 
> Thanks for your comments
> 
> On Thu, 25 Jul 2024 at 10:29, Andrew Jeffery
> <andrew@codeconstruct.com.au> wrote:
> > 
> > Hi Tomer,
> > 
> > On Thu, 2024-07-18 at 21:27 +0300, Tomer Maimon wrote:
> > > This patch set addresses various pin configuration changes for the
> > > Nuvoton NPCM8XX BMC SoC. The patches aim to enhance functionality,
> > > remove unused pins, and improve overall pin management.
> > > 
> > > This patchset is on the upstream process to the Linux vanilla.
> > > https://lore.kernel.org/lkml/20240716194008.3502068-1-tmaimon77@gmail.com/
> > > 
> > > Changes since version 1:
> > >         - Squash the non-existent pins, groups and functions.
> > >         - Remove non-existent groups and functions from dt-bindings.
> > >         - Modify the commit message.
> > > 
> > > Tomer Maimon (7):
> > >   dt-bindings: pinctrl: npcm8xx: remove non-existent groups and
> > >     functions
> > >   pinctrl: nuvoton: npcm8xx: remove non-existent pins, groups, functions
> > >   pinctrl: nuvoton: npcm8xx: clear polarity before set both edge
> > >   pinctrl: nuvoton: npcm8xx: add gpi35 and gpi36
> > >   pinctrl: nuvoton: npcm8xx: add pin 250 to DDR pins group
> > >   pinctrl: nuvoton: npcm8xx: modify clkrun and serirq pin configuration
> > >   pinctrl: nuvoton: npcm8xx: modify pins flags
> > > 
> > >  .../pinctrl/nuvoton,npcm845-pinctrl.yaml      | 74 +++++++++----------
> > >  drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c     | 64 ++++++++--------
> > >  2 files changed, 67 insertions(+), 71 deletions(-)
> > > 
> > 
> > I looked at applying this series. A few notes:
> > 
> > 1. I did get some whitespace warnings during patch application:
> > 
> > ```
> > ...
> > Applying: pinctrl: nuvoton: npcm8xx: modify pins flags
> > /home/andrew/src/kernel.org/linux.git/worktrees/openbmc/rebase-apply/patch:47: trailing whitespace.
> >                   nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> > /home/andrew/src/kernel.org/linux.git/worktrees/openbmc/rebase-apply/patch:89: trailing whitespace.
> >                 nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> > warning: 2 lines add whitespace errors.
> > ```
> > 
> will fixed in V3
> > 2. There's a reasonable difference to the patches upstream. The
> > devicetree binding in particular seems to have some odd differences in
> > the enums that make me wonder whether we're missing other patches
> > there. There are also some minor differences in the driver which I
> > assume are explained by intervening changes between v6.6 and upstream.
> > Here's the diff, can you give a quick comment on each hunk?
> > 
> > ```
> > $ git diff <backported patches on dev-6.6> <patches proposed upstream on c33ffdb70cc6 ("Merge tag 'phy-for-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy")> -- drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> > diff --git a/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> > index 4496658006ab..8cd1f442240e 100644
> > --- a/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> > +++ b/Documentation/devicetree/bindings/pinctrl/nuvoton,npcm845-pinctrl.yaml
> > @@ -35,6 +35,7 @@ properties:
> >  patternProperties:
> >    '^gpio@':
> >      type: object
> > +    additionalProperties: false
> > 
> >      description:
> >        Eight GPIO banks that each contain 32 GPIOs.
> > @@ -80,37 +81,39 @@ patternProperties:
> >                    fanin7, fanin8, fanin9, fanin10, fanin11, fanin12, fanin13,
> >                    fanin14, fanin15, pwm0, pwm1, pwm2, pwm3, r2, r2err, r2md,
> >                    r3rxer, ga20kbc, smb5d, lpc, espi, rg2, ddr, i3c0, i3c1,
> > -                  i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b,
> > -                  smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4,
> > -                  pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp,
> > -                  mmccd, mmcrst, clkout, serirq, scipme, smi, smb6, smb7, spi1,
> > -                  faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3,
> > -                  nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> > -                  wdog2, smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1,
> > -                  hgpio2, hgpio3, hgpio4, hgpio5, hgpio6, hgpio7 ]
> > +                  i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b, smb1c,
> > +                  smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4, pwm5,
> > +                  pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp, mmccd,
> > +                  mmcrst, clkout, serirq, scipme, smi, smb6, smb6b, smb6c,
> > +                  smb6d, smb7, smb7b, smb7c, smb7d, spi1, faninx, r1, spi3,
> > +                  spi3cs1, spi3quad, spi3cs2, spi3cs3, nprd_smi, smb0b, smb0c,
> > +                  smb0den, smb0d, ddc, rg2mdio, wdog1, wdog2, smb12, smb13,
> > +                  spix, spixcs1, clkreq, hgpio0, hgpio1, hgpio2, hgpio3, hgpio4,
> > +                  hgpio5, hgpio6, hgpio7, bu4, bu4b, bu5, bu5b, bu6, gpo187 ]
> > 
> >        function:
> >          description:
> >            The function that a group of pins is muxed to
> > -        enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi,
> > -                smb5b, smb5c, lkgpo0, pspi, jm1, jm2, smb4b, smb4c, smb15,
> > -                smb16, smb17, smb18, smb19, smb20, smb21, smb22, smb23,
> > -                smb23b, smb4d, smb14, smb5, smb4, smb3, spi0cs1, spi0cs2,
> > -                spi0cs3, spi1cs0, spi1cs1, spi1cs2, spi1cs3, spi1cs23, smb3c,
> > -                smb3b, bmcuart0a, uart1, jtag2, bmcuart1, uart2, sg1mdio,
> > -                bmcuart0b, r1err, r1md, r1oen, r2oen, rmii3, r3oen, smb3d,
> > -                fanin0, fanin1, fanin2, fanin3, fanin4, fanin5, fanin6,
> > -                fanin7, fanin8, fanin9, fanin10, fanin11, fanin12, fanin13,
> > -                fanin14, fanin15, pwm0, pwm1, pwm2, pwm3, r2, r2err, r2md,
> > -                r3rxer, ga20kbc, smb5d, lpc, espi, rg2, ddr, i3c0, i3c1,
> > -                i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, smb2c, smb2b,
> > -                smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, sd1pwr, pwm4,
> > -                pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, mmc8, mmc, mmcwp,
> > -                mmccd, mmcrst, clkout, serirq, scipme, smi, smb6, smb7, spi1,
> > -                faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3,
> > -                nprd_smi, smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1
> > -                wdog2, smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1,
> > -                hgpio2, hgpio3, hgpio4, hgpio5, hgpio6, hgpio7 ]
> > +        enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi, smb5b,
> > +                smb5c, lkgpo0, pspi, jm1, jm2, smb4b, smb4c, smb15, smb16,
> > +                smb17, smb18, smb19, smb20, smb21, smb22, smb23, smb23b, smb4d,
> > +                smb14, smb5, smb4, smb3, spi0cs1, spi0cs2, spi0cs3, spi1cs0,
> > +                spi1cs1, spi1cs2, spi1cs3, spi1cs23, smb3c, smb3b, bmcuart0a,
> > +                uart1, jtag2, bmcuart1, uart2, sg1mdio, bmcuart0b, r1err, r1md,
> > +                r1oen, r2oen, rmii3, r3oen, smb3d, fanin0, fanin1, fanin2,
> > +                fanin3, fanin4, fanin5, fanin6, fanin7, fanin8, fanin9, fanin10,
> > +                fanin11, fanin12, fanin13, fanin14, fanin15, pwm0, pwm1, pwm2,
> > +                pwm3, r2, r2err, r2md, r3rxer, ga20kbc, smb5d, lpc, espi, rg2,
> > +                ddr, i3c0, i3c1, i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2,
> > +                smb2c, smb2b, smb1c, smb1b, smb8, smb9, smb10, smb11, sd1,
> > +                sd1pwr, pwm4, pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11,
> > +                mmc8, mmc, mmcwp, mmccd, mmcrst, clkout, serirq, scipme, smi,
> > +                smb6, smb6b, smb6c, smb6d, smb7, smb7b, smb7c, smb7d, spi1,
> > +                faninx, r1, spi3, spi3cs1, spi3quad, spi3cs2, spi3cs3, nprd_smi,
> > +                smb0b, smb0c, smb0den, smb0d, ddc, rg2mdio, wdog1, wdog2,
> > +                smb12, smb13, spix, spixcs1, clkreq, hgpio0, hgpio1, hgpio2,
> > +                hgpio3, hgpio4, hgpio5, hgpio6, hgpio7, bu4, bu4b, bu5, bu5b,
> > +                bu6, gpo187 ]
> Thanks for raising I have an error here, I will fixed it in the
> vanilla and the OpenBMC, I should remove and add enums.
> > 
> >      dependencies:
> >        groups: [ function ]
> > @@ -149,7 +152,6 @@ patternProperties:
> >          description:
> >            Debouncing periods in microseconds, one period per interrupt
> >            bank found in the controller
> > -        $ref: /schemas/types.yaml#/definitions/uint32-array
> it removed in the newer version, we can keep it

The outcome I'm after is we have the least difference in the patches
for dev-6.6 to those upstream. If it's correct to remove it, and that
is what you've done in the upstream patches, then we should remove it
in the dev-6.6 patches as well.

> >          minItems: 1
> >          maxItems: 4
> > 
> > @@ -157,7 +159,6 @@ patternProperties:
> >          description: |
> >            0: Low rate
> >            1: High rate
> > -        $ref: /schemas/types.yaml#/definitions/uint32
> it removed in the newer version, we can keep it
> >          enum: [0, 1]
> > 
> >        drive-strength:
> > diff --git a/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c b/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
> > index 607960fdbc40..471f644c5eef 100644
> > --- a/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
> > +++ b/drivers/pinctrl/nuvoton/pinctrl-npcm8xx.c
> > @@ -173,7 +173,7 @@ static int npcmgpio_direction_input(struct gpio_chip *chip, unsigned int offset)
> >         struct npcm8xx_gpio *bank = gpiochip_get_data(chip);
> >         int ret;
> > 
> > -       ret = pinctrl_gpio_direction_input(offset + chip->base);
> > +       ret = pinctrl_gpio_direction_input(chip, offset);
> Modify in newer version, will revert the change in V3. since kernel
> 6.6 doesn't support it

Just to clarify, the dev-6.6 patches have the "-" content, and the
upstream patches have the "+" content. Perhaps how I generated the diff
is the confusing bit here. If you need me to unpack that a bit more
please ask, it's important that we both have the same understanding of
what's going on :D

Andrew