Hi all,

On many Renesas ARM SoCs, there exist pins that are not associated with
a GPIO port, but still need configuration (e.g. drive strength or
pull-up).  While pins with GPIO functionality are indexed by their
GPIO number, no such number exists for non-GPIO pins.  Hence for the
latter, the pin control driver uses numbers outside the GPIO number
space, derived from the row and column numbers of the physical pins.

For R-Car H3 (and later M3-W and M3-N), the choice was made to use the
SiP (System-in-Package, i.e. SoC + RAM + HyperFlash in a BGA package)
physical pin numbers, as the SiP was what was mounted on the
Salvator-X(S) and ULCB development boards available at that time.

In hindsight, it would have been better to settle on the SoC physical
pin numbers, though: the pin control driver for R-Car M3-W was reused
for the RZ/G2M SoC, which is only available as an SoC, not SiP, thus
making it hard to match the driver with the documentation.

But even for SoCs there can be confusion: several SoCs are available in
multiple packages, with the same or different number of pins, leading to
different pin numberings.

As this numbering is used only internal to the driver, and pin control
configuration from DT refers to these pins by signal name, not pin
number (usually, see exceptions below[*]), I started wondering if we
could get rid of the SoC/SiP pin numbers instead.  As the actual numbers
don't matter, all that is needed for the driver is a unique number for
each pin.

Hence this patch series converts the affected drivers to use new macros
that allow to describe pins without GPIO functionality, and refer to
them by auto-generated symbolic enum values, similar in spirit to the
existing scheme for handling pins with GPIO functionality.

This series consists of three parts:
  - Patch 1 introduces new macros to describe and handle pins without
    GPIO functionality,
  - Patches 2-10 convert the pin control drivers for the individual SoCs
    to use the new macros,
  - Patch 11 removes the now unused old macros.

There should be no functional changes induced by this patch series,
which has been tested on Salvator-X(S) (with R-Car H3 ES1.0 and ES2.0,
M3-W, and M3-N), Ebisu (R-Car E3), and KZM-A9-GT (SH-Mobile AG5).

[*] The user-visible names of pins without GPIO functionality are based
    on pin numbers (e.g. "B25") instead of signal names ("CLKOUT") on
    EMMA Mobile EV2, R-Car M1A, R-Car H2, and SH-Mobile AG5.
    I didn't change these to preserve DT backwards compatibility.

The "name" parameters of the PIN_NOGP_CFG() and PIN_NOGP() macros could
be removed, if these macros would generate the names from the "pin"
parameters.  However, that would:
  1. Require replacing the "#" suffices in pin names for active-low
     signals by "_N",
     R-Car H3/M3-W/M3-N use a "#" suffix, R-Car E3 use a "_N" suffix.
  2. Replace the names based on pin numbers on older SoCs by signal
Both changes could affect DT backwards compatibility.  None of these are
currently used in (upstream) DTS files, though.
Do you think it would be worthwhile to make this consistent?

Thanks for your comments!

Geert Uytterhoeven (11):
  pinctrl: sh-pfc: Add new non-GPIO helper macros
  pinctrl: sh-pfc: emev2: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a7778: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a7790: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a7795-es1: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a7795: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a7796: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a77965: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: r8a77990: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: sh73a0: Use new macros for non-GPIO pins
  pinctrl: sh-pfc: Remove obsolete SH_PFC_PIN_NAMED*() macros

 drivers/pinctrl/sh-pfc/pfc-emev2.c       |  70 +++--
 drivers/pinctrl/sh-pfc/pfc-r8a7778.c     |  29 +-
 drivers/pinctrl/sh-pfc/pfc-r8a7790.c     |  34 ++-
 drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c | 333 +++++++++++------------
 drivers/pinctrl/sh-pfc/pfc-r8a7795.c     | 313 +++++++++++----------
 drivers/pinctrl/sh-pfc/pfc-r8a7796.c     | 307 ++++++++++-----------
 drivers/pinctrl/sh-pfc/pfc-r8a77965.c    | 307 ++++++++++-----------
 drivers/pinctrl/sh-pfc/pfc-r8a77990.c    |  87 +++---
 drivers/pinctrl/sh-pfc/pfc-sh73a0.c      |  19 +-
 drivers/pinctrl/sh-pfc/sh_pfc.h          |  72 +++--
 10 files changed, 797 insertions(+), 774 deletions(-)




Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                                            -- Linus Torvalds

Reply via email to