pinctrl: ingenic: Get rid of repetitive data
authorPaul Cercueil <paul@crapouillou.net>
Sun, 1 Nov 2020 09:01:03 +0000 (09:01 +0000)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 10 Nov 2020 13:58:14 +0000 (14:58 +0100)
commitbb42b59310ebc33ab73dddd9a075d24003d1adac
treea42faf1e5f5e835cf37b4e330c087341b8d2e177
parent57972641810a97566ffd13e4be3f6a66d61eb3b5
pinctrl: ingenic: Get rid of repetitive data

Abuse the pin function pointer to store the pin function value directly,
when all the pins of a group have the same function value. Now when the
pointer value is <= 3 (unsigned), the pointer value is used as the pin
function; otherwise it is used as a regular pointer.

This drastically reduces the number of pin function tables needed, and
drops .data usage by about 2 KiB. Additionally, the few pin function
tables that are still around now contain u8 instead of int, since the
largest number that will be stored is 3.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Tested-by: 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com>
Link: https://lore.kernel.org/r/20201101090104.5088-2-paul@crapouillou.net
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-ingenic.c