mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-11-28 22:21:49 +01:00
gpio: mxc_gpio: add support for i.MX8
Add i.MX8 support, there are 8 GPIO banks. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Anatolij Gustschin <agust@denx.de> Cc: Stefano Babic <sbabic@denx.de>
This commit is contained in:
parent
2d58296f3e
commit
8b2a31f133
21
arch/arm/include/asm/arch-imx8/gpio.h
Normal file
21
arch/arm/include/asm/arch-imx8/gpio.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Copyright 2018 NXP
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_IMX8_GPIO_H
|
||||||
|
#define __ASM_ARCH_IMX8_GPIO_H
|
||||||
|
|
||||||
|
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
|
||||||
|
/* GPIO registers */
|
||||||
|
struct gpio_regs {
|
||||||
|
u32 gpio_dr; /* data */
|
||||||
|
u32 gpio_dir; /* direction */
|
||||||
|
u32 gpio_psr; /* pad satus */
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* IMX8 the GPIO index is from 0 not 1 */
|
||||||
|
#define IMX_GPIO_NR(port, index) (((port) * 32) + ((index) & 31))
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_IMX8_GPIO_H */
|
||||||
@ -40,21 +40,27 @@ static unsigned long gpio_ports[] = {
|
|||||||
[2] = GPIO3_BASE_ADDR,
|
[2] = GPIO3_BASE_ADDR,
|
||||||
#if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
|
#if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
|
||||||
defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
||||||
defined(CONFIG_MX7) || defined(CONFIG_MX8M)
|
defined(CONFIG_MX7) || defined(CONFIG_MX8M) || \
|
||||||
|
defined(CONFIG_ARCH_IMX8)
|
||||||
[3] = GPIO4_BASE_ADDR,
|
[3] = GPIO4_BASE_ADDR,
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
||||||
defined(CONFIG_MX7) || defined(CONFIG_MX8M)
|
defined(CONFIG_MX7) || defined(CONFIG_MX8M) || \
|
||||||
|
defined(CONFIG_ARCH_IMX8)
|
||||||
[4] = GPIO5_BASE_ADDR,
|
[4] = GPIO5_BASE_ADDR,
|
||||||
#if !(defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL) || defined(CONFIG_MX8M))
|
#if !(defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL) || defined(CONFIG_MX8M))
|
||||||
[5] = GPIO6_BASE_ADDR,
|
[5] = GPIO6_BASE_ADDR,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MX53) || defined(CONFIG_MX6) || defined(CONFIG_MX7)
|
#if defined(CONFIG_MX53) || defined(CONFIG_MX6) || defined(CONFIG_MX7) || \
|
||||||
|
defined(CONFIG_ARCH_IMX8)
|
||||||
#if !(defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL))
|
#if !(defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL))
|
||||||
[6] = GPIO7_BASE_ADDR,
|
[6] = GPIO7_BASE_ADDR,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_IMX8)
|
||||||
|
[7] = GPIO8_BASE_ADDR,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static int mxc_gpio_direction(unsigned int gpio,
|
static int mxc_gpio_direction(unsigned int gpio,
|
||||||
@ -347,19 +353,22 @@ static const struct mxc_gpio_plat mxc_plat[] = {
|
|||||||
{ 2, (struct gpio_regs *)GPIO3_BASE_ADDR },
|
{ 2, (struct gpio_regs *)GPIO3_BASE_ADDR },
|
||||||
#if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
|
#if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
|
||||||
defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
||||||
defined(CONFIG_MX8M)
|
defined(CONFIG_MX8M) || defined(CONFIG_ARCH_IMX8)
|
||||||
{ 3, (struct gpio_regs *)GPIO4_BASE_ADDR },
|
{ 3, (struct gpio_regs *)GPIO4_BASE_ADDR },
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
||||||
defined(CONFIG_MX8M)
|
defined(CONFIG_MX8M) || defined(CONFIG_ARCH_IMX8)
|
||||||
{ 4, (struct gpio_regs *)GPIO5_BASE_ADDR },
|
{ 4, (struct gpio_regs *)GPIO5_BASE_ADDR },
|
||||||
#ifndef CONFIG_MX8M
|
#ifndef CONFIG_MX8M
|
||||||
{ 5, (struct gpio_regs *)GPIO6_BASE_ADDR },
|
{ 5, (struct gpio_regs *)GPIO6_BASE_ADDR },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
|
#if defined(CONFIG_MX53) || defined(CONFIG_MX6) || defined(CONFIG_ARCH_IMX8)
|
||||||
{ 6, (struct gpio_regs *)GPIO7_BASE_ADDR },
|
{ 6, (struct gpio_regs *)GPIO7_BASE_ADDR },
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_IMX8)
|
||||||
|
{ 7, (struct gpio_regs *)GPIO8_BASE_ADDR },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
U_BOOT_DEVICES(mxc_gpios) = {
|
U_BOOT_DEVICES(mxc_gpios) = {
|
||||||
@ -368,19 +377,22 @@ U_BOOT_DEVICES(mxc_gpios) = {
|
|||||||
{ "gpio_mxc", &mxc_plat[2] },
|
{ "gpio_mxc", &mxc_plat[2] },
|
||||||
#if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
|
#if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
|
||||||
defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
||||||
defined(CONFIG_MX8M)
|
defined(CONFIG_MX8M) || defined(CONFIG_ARCH_IMX8)
|
||||||
{ "gpio_mxc", &mxc_plat[3] },
|
{ "gpio_mxc", &mxc_plat[3] },
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
|
||||||
defined(CONFIG_MX8M)
|
defined(CONFIG_MX8M) || defined(CONFIG_ARCH_IMX8)
|
||||||
{ "gpio_mxc", &mxc_plat[4] },
|
{ "gpio_mxc", &mxc_plat[4] },
|
||||||
#ifndef CONFIG_MX8M
|
#ifndef CONFIG_MX8M
|
||||||
{ "gpio_mxc", &mxc_plat[5] },
|
{ "gpio_mxc", &mxc_plat[5] },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
|
#if defined(CONFIG_MX53) || defined(CONFIG_MX6) || defined(CONFIG_ARCH_IMX8)
|
||||||
{ "gpio_mxc", &mxc_plat[6] },
|
{ "gpio_mxc", &mxc_plat[6] },
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_IMX8)
|
||||||
|
{ "gpio_mxc", &mxc_plat[7] },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user