diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-08-14 09:30:38 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-08-14 09:56:08 +0200 |
commit | 23f988e8d9e1f9480adeefc4f5b585f3ec15913f (patch) | |
tree | 704de01dbc2b8524a1810d387932c7a4940cf582 /arch/arm/mach-imx | |
parent | 909934e3a76d665b55565e4f87b1a10c8a3e4b0e (diff) | |
download | barebox-23f988e8d9e1f9480adeefc4f5b585f3ec15913f.tar.gz barebox-23f988e8d9e1f9480adeefc4f5b585f3ec15913f.tar.xz |
pinctrl: i.MX iomux-v1: Make base address initialization unnecessary
So far we have imx_gpio_mode() to configure a pinmux entry for the older
i.MX pinmuxes. For this to work imx_iomuxv1_init() must be called
beforehand to configure the base address. Simplify this by introducing
SoC specific variants of imx_gpio_mode() which also pass the base
address. This makes initialization of the base address unnecessary and
the functions usable for PBL. Consequently also compile the code for
PBL.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/imx1.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/imx21.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/imx27.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/include/mach/iomux-v1.h | 21 |
4 files changed, 20 insertions, 7 deletions
diff --git a/arch/arm/mach-imx/imx1.c b/arch/arm/mach-imx/imx1.c index 51bdcbf38e..6a09b276c8 100644 --- a/arch/arm/mach-imx/imx1.c +++ b/arch/arm/mach-imx/imx1.c @@ -62,8 +62,6 @@ int imx1_init(void) int imx1_devices_init(void) { - imx_iomuxv1_init((void *)MX1_GPIO1_BASE_ADDR); - add_generic_device("imx1-ccm", 0, NULL, MX1_CCM_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx1-gpt", 0, NULL, MX1_TIM1_BASE_ADDR, 0x100, IORESOURCE_MEM, NULL); add_generic_device("imx1-gpio", 0, NULL, MX1_GPIO1_BASE_ADDR, 0x100, IORESOURCE_MEM, NULL); diff --git a/arch/arm/mach-imx/imx21.c b/arch/arm/mach-imx/imx21.c index ca074dd4c4..7a19ed3986 100644 --- a/arch/arm/mach-imx/imx21.c +++ b/arch/arm/mach-imx/imx21.c @@ -32,8 +32,6 @@ int imx21_init(void) int imx21_devices_init(void) { - imx_iomuxv1_init((void *)MX21_GPIO1_BASE_ADDR); - add_generic_device("imx21-ccm", 0, NULL, MX21_CCM_BASE_ADDR, 0x100, IORESOURCE_MEM, NULL); add_generic_device("imx1-gpt", 0, NULL, MX21_GPT1_BASE_ADDR, 0x100, IORESOURCE_MEM, NULL); add_generic_device("imx1-gpio", 0, NULL, MX21_GPIO1_BASE_ADDR, 0x100, IORESOURCE_MEM, NULL); diff --git a/arch/arm/mach-imx/imx27.c b/arch/arm/mach-imx/imx27.c index 1c6244990d..d4949babeb 100644 --- a/arch/arm/mach-imx/imx27.c +++ b/arch/arm/mach-imx/imx27.c @@ -108,8 +108,6 @@ int imx27_init(void) int imx27_devices_init(void) { - imx_iomuxv1_init((void *)MX27_GPIO1_BASE_ADDR); - add_generic_device("imx_iim", DEVICE_ID_SINGLE, NULL, MX27_IIM_BASE_ADDR, SZ_4K, IORESOURCE_MEM, NULL); diff --git a/arch/arm/mach-imx/include/mach/iomux-v1.h b/arch/arm/mach-imx/include/mach/iomux-v1.h index e822905b77..8f75933e39 100644 --- a/arch/arm/mach-imx/include/mach/iomux-v1.h +++ b/arch/arm/mach-imx/include/mach/iomux-v1.h @@ -46,6 +46,25 @@ #define GPIO_GIUS (1 << 16) void imx_iomuxv1_init(void __iomem *base); -void imx_gpio_mode(int gpio_mode); +void imx_gpio_mode(void __iomem *base, int gpio_mode); + +#include <mach/imx1-regs.h> +#include <mach/imx21-regs.h> +#include <mach/imx27-regs.h> + +static inline void imx1_gpio_mode(int gpio_mode) +{ + imx_gpio_mode(IOMEM(MX1_GPIO1_BASE_ADDR), gpio_mode); +} + +static inline void imx21_gpio_mode(int gpio_mode) +{ + imx_gpio_mode(IOMEM(MX21_GPIO1_BASE_ADDR), gpio_mode); +} + +static inline void imx27_gpio_mode(int gpio_mode) +{ + imx_gpio_mode(IOMEM(MX27_GPIO1_BASE_ADDR), gpio_mode); +} #endif /* __MACH_IOMUX_V1_H__ */ |