diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2018-10-16 10:46:12 +0300 |
---|---|---|
committer | Geert Uytterhoeven <geert+renesas@glider.be> | 2018-11-06 11:20:26 +0300 |
commit | 50f3f2d73e3426ba5aac0fe62098870579a0b357 (patch) | |
tree | 9a5f5bff94377bb10e60bf52b91d73a2be059a1a /drivers/pinctrl/sh-pfc/sh_pfc.h | |
parent | 9f8dc8e2b16118ea125c0d89a602b6bc36f128e4 (diff) | |
download | linux-50f3f2d73e3426ba5aac0fe62098870579a0b357.tar.xz |
pinctrl: sh-pfc: Reduce kernel size for narrow VIN channels
Some VIN channels support less than 24 lanes. As union vin_data always
consumes space for 24 lanes, this wastes memory.
Hence introduce new smaller unions vin_data12 and vin_data16, to
accommodate VIN channels with only 12 or 16 lanes.
This reduces the static pin controller driver size by 320 bytes for
R-Car V2H, and by 96 bytes for R-Car E2.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Diffstat (limited to 'drivers/pinctrl/sh-pfc/sh_pfc.h')
-rw-r--r-- | drivers/pinctrl/sh-pfc/sh_pfc.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/pinctrl/sh-pfc/sh_pfc.h b/drivers/pinctrl/sh-pfc/sh_pfc.h index 458ae0a6b540..1fc13366869a 100644 --- a/drivers/pinctrl/sh-pfc/sh_pfc.h +++ b/drivers/pinctrl/sh-pfc/sh_pfc.h @@ -53,8 +53,8 @@ struct sh_pfc_pin_group { }; /* - * Using union vin_data saves memory occupied by the VIN data pins. - * VIN_DATA_PIN_GROUP() is a macro used to describe the VIN pin groups + * Using union vin_data{,12,16} saves memory occupied by the VIN data pins. + * VIN_DATA_PIN_GROUP() is a macro used to describe the VIN pin groups * in this case. */ #define VIN_DATA_PIN_GROUP(n, s) \ @@ -65,6 +65,19 @@ struct sh_pfc_pin_group { .nr_pins = ARRAY_SIZE(n##_pins.data##s), \ } +union vin_data12 { + unsigned int data12[12]; + unsigned int data10[10]; + unsigned int data8[8]; +}; + +union vin_data16 { + unsigned int data16[16]; + unsigned int data12[12]; + unsigned int data10[10]; + unsigned int data8[8]; +}; + union vin_data { unsigned int data24[24]; unsigned int data20[20]; |