Skip to content

pinctrl: renesas: Reserved field optimizations

Geert Uytterhoeven linux-gpio linux-renesas-soc 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest50 patches 1 replyIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/50pinctrl: renesas: r8a77470: Use fixed-width description for IPSR regsdrivers/pinctrl/renesas/pfc-r8a77470.c+18 -540 replies
2/50pinctrl: renesas: Add shorthand for reserved register fieldsdrivers/pinctrl/renesas/core.c drivers/pinctrl/renesas/sh_pfc.h+28 -190 replies
3/50pinctrl: renesas: rmobile: Mark unused PORTCR bits reserveddrivers/pinctrl/renesas/sh_pfc.h+1 -30 replies
4/50pinctrl: renesas: emev2: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-emev2.c+13 -460 replies
5/50pinctrl: renesas: r8a77470: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77470.c+8 -460 replies
6/50pinctrl: renesas: r8a7778: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7778.c+24 -740 replies
7/50pinctrl: renesas: r8a7779: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7779.c+23 -480 replies
8/50pinctrl: renesas: r8a7790: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7790.c+32 -780 replies
9/50pinctrl: renesas: r8a7791: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7791.c+32 -790 replies
10/50pinctrl: renesas: r8a7792: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7792.c+16 -740 replies
11/50pinctrl: renesas: r8a7794: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7794.c+21 -760 replies
12/50pinctrl: renesas: r8a77950: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77950.c+8 -310 replies
13/50pinctrl: renesas: r8a77951: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77951.c+9 -230 replies
14/50pinctrl: renesas: r8a7796: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7796.c+8 -210 replies
15/50pinctrl: renesas: r8a77965: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77965.c+8 -210 replies
16/50pinctrl: renesas: r8a77970: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77970.c+2 -120 replies
17/50pinctrl: renesas: r8a77980: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77980.c+3 -130 replies
18/50pinctrl: renesas: r8a77990: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77990.c+4 -70 replies
19/50pinctrl: renesas: r8a77995: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77995.c+4 -200 replies
20/50pinctrl: renesas: r8a779a0: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a779a0.c+3 -110 replies
21/50pinctrl: renesas: r8a779f0: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-r8a779f0.c+2 -110 replies
22/50pinctrl: renesas: sh7734: Use shorthands for reserved fieldsdrivers/pinctrl/renesas/pfc-sh7734.c+22 -720 replies
23/50pinctrl: renesas: r8a73a4: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a73a4.c+16 -420 replies
24/50pinctrl: renesas: r8a7740: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7740.c+39 -350 replies
25/50pinctrl: renesas: r8a77470: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77470.c+20 -360 replies
26/50pinctrl: renesas: r8a7779: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7779.c+4 -70 replies
27/50pinctrl: renesas: r8a7792: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7792.c+35 -1060 replies
28/50pinctrl: renesas: r8a77950: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77950.c+28 -1030 replies
29/50pinctrl: renesas: r8a77951: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77951.c+32 -1050 replies
30/50pinctrl: renesas: r8a77965: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77965.c+32 -1050 replies
31/50pinctrl: renesas: r8a7796: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a7796.c+32 -1050 replies
32/50pinctrl: renesas: r8a77970: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77970.c+29 -930 replies
33/50pinctrl: renesas: r8a77980: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77980.c+28 -630 replies
34/50pinctrl: renesas: r8a77990: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77990.c+29 -920 replies
35/50pinctrl: renesas: r8a77995: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a77995.c+22 -850 replies
36/50pinctrl: renesas: r8a779a0: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a779a0.c+72 -1310 replies
37/50pinctrl: renesas: r8a779f0: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-r8a779f0.c+27 -600 replies
38/50pinctrl: renesas: sh7203: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7203.c+21 -320 replies
39/50pinctrl: renesas: sh7264: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7264.c+52 -520 replies
40/50pinctrl: renesas: sh7269: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7269.c+43 -390 replies
41/50pinctrl: renesas: sh73a0: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh73a0.c+30 -570 replies
42/50pinctrl: renesas: sh7720: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7720.c+28 -290 replies
43/50pinctrl: renesas: sh7722: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7722.c+80 -1220 replies
44/50pinctrl: renesas: sh7723: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7723.c+39 -310 replies
45/50pinctrl: renesas: sh7724: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7724.c+4 -30 replies
46/50pinctrl: renesas: sh7734: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7734.c+9 -120 replies
47/50pinctrl: renesas: sh7757: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7757.c+38 -570 replies
48/50pinctrl: renesas: sh7785: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7785.c+24 -360 replies
49/50pinctrl: renesas: sh7786: Optimize fixed-width reserved fieldsdrivers/pinctrl/renesas/pfc-sh7786.c+8 -130 replies
50/50pinctrl: renesas: checker: Add reserved field checksdrivers/pinctrl/renesas/core.c+10 -10 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/50] pinctrl: renesas: Reserved field optimizations

Hi Linus,

Lots of register in pin control subdrivers for Renesas SoCs contain reserved or unused fields. As the macros for describing these registers (PINMUX_CFG_REG() and PINMUX_CFG_REG_VAR() for registers with fixed-width resp. variable-width fields) require describing all fields, the resulting data structures contain lots of dummy (zero) values: 2^N values for a field of N-bits wide. To reduce data size, reserved bit fields wider than 3 bits were typically split in multiple 2-bit fields. This patch series aims to improve this by introducing a shorthand for describing reserved variable-width register fields without dummy values.

- Patch 1 converts a few register definitions for registers with fixed-width fields that accidentally used the equivalent but larger description format intended for registers with variable-width fields,
- Patch 2 introduces a shorthand for describing reserved register fields,
- Patches 3-22 convert reserved field descriptions in the various SoC-specific pin control subdrivers to the new shorthands,
- Patches 23-49 convert register definitions for registers with reserved fixed-width fields to the equivalent definitions with variable-width fields where it makes sense,
- Patch 50 updates the checker to flag possible conversions to variable-width reserved fields.

The total kernel size reduction due to patches 3-49 is:
- 12685 bytes on ARM32 SoCs (multi-platform),
- 5416 bytes on ARM64 SoCs (multi-platform),
- 2575 bytes on SH SoCs (sum of mutually-exclusive single platforms).

I've been running with these changes on R-Mobile APE6 and A1, R-Car M2-W, H3 ES1.x, H3 ES2.0, M3-W, M3-N, V3M, E3, D3, V3U, and S4, and SH-Mobile AG5 during the past six weeks, without any issues.

I plan to queue these in renesas-pinctrl-for-v5.19.

Thanks for your comments!

Geert Uytterhoeven (50):
pinctrl: renesas: r8a77470: Use fixed-width description for IPSR regs
pinctrl: renesas: Add shorthand for reserved register fields
pinctrl: renesas: rmobile: Mark unused PORTCR bits reserved
pinctrl: renesas: emev2: Use shorthands for reserved fields
pinctrl: renesas: r8a77470: Use shorthands for reserved fields
pinctrl: renesas: r8a7778: Use shorthands for reserved fields
pinctrl: renesas: r8a7779: Use shorthands for reserved fields
pinctrl: renesas: r8a7790: Use shorthands for reserved fields
pinctrl: renesas: r8a7791: Use shorthands for reserved fields
pinctrl: renesas: r8a7792: Use shorthands for reserved fields
pinctrl: renesas: r8a7794: Use shorthands for reserved fields
pinctrl: renesas: r8a77950: Use shorthands for reserved fields
pinctrl: renesas: r8a77951: Use shorthands for reserved fields
pinctrl: renesas: r8a7796: Use shorthands for reserved fields
pinctrl: renesas: r8a77965: Use shorthands for reserved fields
pinctrl: renesas: r8a77970: Use shorthands for reserved fields
pinctrl: renesas: r8a77980: Use shorthands for reserved fields
pinctrl: renesas: r8a77990: Use shorthands for reserved fields
pinctrl: renesas: r8a77995: Use shorthands for reserved fields
pinctrl: renesas: r8a779a0: Use shorthands for reserved fields
pinctrl: renesas: r8a779f0: Use shorthands for reserved fields
pinctrl: renesas: sh7734: Use shorthands for reserved fields
pinctrl: renesas: r8a73a4: Optimize fixed-width reserved fields
pinctrl: renesas: r8a7740: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77470: Optimize fixed-width reserved fields
pinctrl: renesas: r8a7779: Optimize fixed-width reserved fields
pinctrl: renesas: r8a7792: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77950: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77951: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77965: Optimize fixed-width reserved fields
pinctrl: renesas: r8a7796: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77970: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77980: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77990: Optimize fixed-width reserved fields
pinctrl: renesas: r8a77995: Optimize fixed-width reserved fields
pinctrl: renesas: r8a779a0: Optimize fixed-width reserved fields
pinctrl: renesas: r8a779f0: Optimize fixed-width reserved fields
pinctrl: renesas: sh7203: Optimize fixed-width reserved fields
pinctrl: renesas: sh7264: Optimize fixed-width reserved fields
pinctrl: renesas: sh7269: Optimize fixed-width reserved fields
pinctrl: renesas: sh73a0: Optimize fixed-width reserved fields
pinctrl: renesas: sh7720: Optimize fixed-width reserved fields
pinctrl: renesas: sh7722: Optimize fixed-width reserved fields
pinctrl: renesas: sh7723: Optimize fixed-width reserved fields
pinctrl: renesas: sh7724: Optimize fixed-width reserved fields
pinctrl: renesas: sh7734: Optimize fixed-width reserved fields
pinctrl: renesas: sh7757: Optimize fixed-width reserved fields
pinctrl: renesas: sh7785: Optimize fixed-width reserved fields
pinctrl: renesas: sh7786: Optimize fixed-width reserved fields
pinctrl: renesas: checker: Add reserved field checks

 drivers/pinctrl/renesas/core.c         |  43 +++--
 drivers/pinctrl/renesas/pfc-emev2.c    |  59 ++-----
 drivers/pinctrl/renesas/pfc-r8a73a4.c  |  58 ++-----
 drivers/pinctrl/renesas/pfc-r8a7740.c  |  74 ++++----
 drivers/pinctrl/renesas/pfc-r8a77470.c | 176 +++++--------------
 drivers/pinctrl/renesas/pfc-r8a7778.c  |  98 +++--------
 drivers/pinctrl/renesas/pfc-r8a7779.c  |  82 +++------
 drivers/pinctrl/renesas/pfc-r8a7790.c  | 110 ++++--------
 drivers/pinctrl/renesas/pfc-r8a7791.c  | 111 ++++--------
 drivers/pinctrl/renesas/pfc-r8a7792.c  | 231 ++++++-------------------
 drivers/pinctrl/renesas/pfc-r8a7794.c  |  97 +++--------
 drivers/pinctrl/renesas/pfc-r8a77950.c | 170 ++++--------------
 drivers/pinctrl/renesas/pfc-r8a77951.c | 169 +++++-------------
 drivers/pinctrl/renesas/pfc-r8a7796.c  | 166 +++++-------------
 drivers/pinctrl/renesas/pfc-r8a77965.c | 166 +++++-------------
 drivers/pinctrl/renesas/pfc-r8a77970.c | 136 ++++-----------
 drivers/pinctrl/renesas/pfc-r8a77980.c | 107 ++++--------
 drivers/pinctrl/renesas/pfc-r8a77990.c | 132 ++++----------
 drivers/pinctrl/renesas/pfc-r8a77995.c | 131 +++-----------
 drivers/pinctrl/renesas/pfc-r8a779a0.c | 217 ++++++++---------------
 drivers/pinctrl/renesas/pfc-r8a779f0.c | 100 ++++-------
 drivers/pinctrl/renesas/pfc-sh7203.c   |  53 +++---
 drivers/pinctrl/renesas/pfc-sh7264.c   | 104 +++++------
 drivers/pinctrl/renesas/pfc-sh7269.c   |  82 ++++-----
 drivers/pinctrl/renesas/pfc-sh73a0.c   |  87 ++++------
 drivers/pinctrl/renesas/pfc-sh7720.c   |  57 +++---
 drivers/pinctrl/renesas/pfc-sh7722.c   | 202 +++++++++------------
 drivers/pinctrl/renesas/pfc-sh7723.c   |  70 ++++----
 drivers/pinctrl/renesas/pfc-sh7724.c   |   7 +-
 drivers/pinctrl/renesas/pfc-sh7734.c   | 115 ++++--------
 drivers/pinctrl/renesas/pfc-sh7757.c   |  95 ++++------
 drivers/pinctrl/renesas/pfc-sh7785.c   |  60 +++----
 drivers/pinctrl/renesas/pfc-sh7786.c   |  21 +--
 drivers/pinctrl/renesas/sh_pfc.h       |  17 +-
 34 files changed, 1116 insertions(+), 2487 deletions(-)
Signature · 12 lines
2.25.1

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

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