pinctrl: sh-pfc: Validate pinmux tables at runtime when debugging
authorGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 13 Dec 2018 14:48:45 +0000 (15:48 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Tue, 2 Apr 2019 07:57:50 +0000 (09:57 +0200)
commit6161b39a14380815f22851c753c00acf81cfa62a
treeb001ba015f62243dbbe1bc7920570e80acba8242
parentd92ee9cf8ec8d7fe1d7dbc4b3ee459419b1e5533
pinctrl: sh-pfc: Validate pinmux tables at runtime when debugging

Perform some basic sanity checks on all built-in pinmux tables when
DEBUG is defined, to help catching bugs early.

For now the following checks are included:
  - Check register and field widths in descriptors for config registers
    with variable-width fields,
  - Check relations between pin groups and functions:
      - All pin functions must refer to existing pin groups,
      - All pin groups must be referred to by a pin function,
      - Warn if a pin group is referred to by multiple pin functions
(which is OK for backwards-compatibility aliases),
  - Provide suggestions for reducing table sizes: reserved fields of
    more than 3 bits can better be split in smaller subfields, as the
    storage need is proportional to the square of the width of the
    (sub)field,

Note that a dummy non-matching entry is added to the DT match table for
checking r8a7795es1_pinmux_info, as R-Car H3 ES1.0 is matched using
soc_device_match() in r8a7795_pinmux_init(), instead of by the DT match
table.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
drivers/pinctrl/sh-pfc/core.c