summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorZhang Jiejing <jiejing.zhang@freescale.com>2012-05-18 11:08:05 +0800
committerZhang Jiejing <jiejing.zhang@freescale.com>2012-05-21 09:50:11 +0800
commit500e69df9073a8bc2773274c1139bb036b1a4195 (patch)
tree0aa8fd108e80d33af583382948c3a8fc774d3c92 /include
parent9b6dfc4b6f0d30b7284511a962e64e83c426b854 (diff)
ENGR00209899-1 mx6x: add generic gpio interface.
Add generic gpio interface in uboot. Seems more and more gpio operation invoke in uboot, without RAW register operation, we should use generic gpio interface. you should define the CONFIG_MXC_GPIO use generic gpio interface: gpio_request, gpio_direction_output, gpio_direction_input, gpio_set_value, gpio_get_value, etc. Test on MX6Q, MX6DL. Other MX6X should also define this config. Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
Diffstat (limited to 'include')
-rw-r--r--include/asm-arm/arch-mx6/gpio.h41
-rw-r--r--include/asm-arm/arch-mx6/imx-regs.h31
-rw-r--r--include/asm-arm/arch-mx6/iomux-v3.h9
-rw-r--r--include/asm-arm/arch-mx6/iomux.h22
-rw-r--r--include/asm-arm/gpio.h75
-rw-r--r--include/configs/mx6dl_arm2.h1
-rw-r--r--include/configs/mx6dl_sabresd.h2
-rw-r--r--include/configs/mx6dl_sabresd_mfg.h2
-rw-r--r--include/configs/mx6q_sabrelite_android.h1
-rw-r--r--include/configs/mx6q_sabresd.h1
-rw-r--r--include/configs/mx6q_sabresd_mfg.h1
11 files changed, 185 insertions, 1 deletions
diff --git a/include/asm-arm/arch-mx6/gpio.h b/include/asm-arm/arch-mx6/gpio.h
new file mode 100644
index 00000000000..1f292f80be6
--- /dev/null
+++ b/include/asm-arm/arch-mx6/gpio.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Auto Generate file, please don't edit it
+ *
+ */
+
+#ifndef __MACH_MX6_GPIO_H__
+#define __MACH_MX6_GPIO_H__
+
+#include <asm/arch/mx6.h>
+#include <asm/arch/iomux.h>
+
+#define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr))
+
+void mxc_set_gpio_direction(iomux_pin_name_t pin, int is_input);
+
+void mxc_set_gpio_dataout(iomux_pin_name_t pin, u32 data);
+
+/*!
+ * @file mach-mx6/gpio.h
+ *
+ * @brief Simple GPIO definitions and functions
+ *
+ * @ingroup GPIO_MX6
+ */
+#endif
diff --git a/include/asm-arm/arch-mx6/imx-regs.h b/include/asm-arm/arch-mx6/imx-regs.h
new file mode 100644
index 00000000000..04abbb0eb8b
--- /dev/null
+++ b/include/asm-arm/arch-mx6/imx-regs.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Auto Generate file, please don't edit it
+ *
+ */
+
+
+struct gpio_regs {
+ u32 gpio_dr;
+ u32 gpio_dir;
+ u32 gpio_psr;
+ u32 gpio_icr1;
+ u32 gpio_icr2;
+ u32 gpio_imr;
+ u32 gpio_isr;
+};
diff --git a/include/asm-arm/arch-mx6/iomux-v3.h b/include/asm-arm/arch-mx6/iomux-v3.h
index 50612eeb2cd..4ce38a58f56 100644
--- a/include/asm-arm/arch-mx6/iomux-v3.h
+++ b/include/asm-arm/arch-mx6/iomux-v3.h
@@ -55,6 +55,7 @@
*/
typedef u64 iomux_v3_cfg_t;
+typedef unsigned int iomux_pin_name_t;
#define MUX_CTRL_OFS_SHIFT 0
#define MUX_CTRL_OFS_MASK ((iomux_v3_cfg_t)0xfff << MUX_CTRL_OFS_SHIFT)
@@ -84,6 +85,14 @@ typedef u64 iomux_v3_cfg_t;
MUX_SEL_INPUT_OFS_SHIFT) | \
((iomux_v3_cfg_t)(_sel_input) << MUX_SEL_INPUT_SHIFT))
+#if defined CONFIG_MX6Q
+#define MX6X_IOMUX(s) MX6Q_##s
+#elif defined CONFIG_MX6DL
+#define MX6X_IOMUX(s) MX6DL_##s
+#elif defined CONFIG_MX6SL
+#define MX6X_IOMUX(s) MX6SL_##s
+#endif
+
/*
* Use to set PAD control
*/
diff --git a/include/asm-arm/arch-mx6/iomux.h b/include/asm-arm/arch-mx6/iomux.h
new file mode 100644
index 00000000000..9c1e053fb6a
--- /dev/null
+++ b/include/asm-arm/arch-mx6/iomux.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Auto Generate file, please don't edit it
+ *
+ */
+
+#include "iomux-v3.h"
diff --git a/include/asm-arm/gpio.h b/include/asm-arm/gpio.h
new file mode 100644
index 00000000000..b0f3f986b69
--- /dev/null
+++ b/include/asm-arm/gpio.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Generic GPIO API for U-Boot
+ *
+ * GPIOs are numbered from 0 to GPIO_COUNT-1 which value is defined
+ * by the SOC/architecture.
+ *
+ * Each GPIO can be an input or output. If an input then its value can
+ * be read as 0 or 1. If an output then its value can be set to 0 or 1.
+ * If you try to write an input then the value is undefined. If you try
+ * to read an output, barring something very unusual, you will get
+ * back the value of the output that you previously set.
+ *
+ * In some cases the operation may fail, for example if the GPIO number
+ * is out of range, or the GPIO is not available because its pin is
+ * being used by another function. In that case, functions may return
+ * an error value of -1.
+ */
+
+/**
+ * Make a GPIO an input.
+ *
+ * @param gp GPIO number
+ * @return 0 if ok, -1 on error
+ */
+int gpio_direction_input(int gp);
+
+/**
+ * Make a GPIO an output, and set its value.
+ *
+ * @param gp GPIO number
+ * @param value GPIO value (0 for low or 1 for high)
+ * @return 0 if ok, -1 on error
+ */
+int gpio_direction_output(int gp, int value);
+
+/**
+ * Get a GPIO's value. This will work whether the GPIO is an input
+ * or an output.
+ *
+ * @param gp GPIO number
+ * @return 0 if low, 1 if high, -1 on error
+ */
+int gpio_get_value(int gp);
+
+/**
+ * Set an output GPIO's value. The GPIO must already be an output of
+ * this function may have no effect.
+ *
+ * @param gp GPIO number
+ * @param value GPIO value (0 for low or 1 for high)
+ * @return 0 if ok, -1 on error
+ */
+int gpio_set_value(int gp, int value);
diff --git a/include/configs/mx6dl_arm2.h b/include/configs/mx6dl_arm2.h
index 5c3ba3baef5..8b1d50c4601 100644
--- a/include/configs/mx6dl_arm2.h
+++ b/include/configs/mx6dl_arm2.h
@@ -55,6 +55,7 @@
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
+#define CONFIG_MXC_GPIO
/*
* Size of malloc() pool
*/
diff --git a/include/configs/mx6dl_sabresd.h b/include/configs/mx6dl_sabresd.h
index 3df2a348a19..5a9bde3e88a 100644
--- a/include/configs/mx6dl_sabresd.h
+++ b/include/configs/mx6dl_sabresd.h
@@ -54,7 +54,7 @@
#define CONFIG_REVISION_TAG
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
-
+#define CONFIG_MXC_GPIO
/*
* Size of malloc() pool
*/
diff --git a/include/configs/mx6dl_sabresd_mfg.h b/include/configs/mx6dl_sabresd_mfg.h
index 094655b9645..11e7189eff1 100644
--- a/include/configs/mx6dl_sabresd_mfg.h
+++ b/include/configs/mx6dl_sabresd_mfg.h
@@ -56,6 +56,8 @@
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
+#define CONFIG_MXC_GPIO
+
/*
* Size of malloc() pool
*/
diff --git a/include/configs/mx6q_sabrelite_android.h b/include/configs/mx6q_sabrelite_android.h
index 4c764803a6b..4aff72a3550 100644
--- a/include/configs/mx6q_sabrelite_android.h
+++ b/include/configs/mx6q_sabrelite_android.h
@@ -52,6 +52,7 @@
#define CONFIG_REVISION_TAG
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
+#define CONFIG_MXC_GPIO
/*
* Size of malloc() pool
diff --git a/include/configs/mx6q_sabresd.h b/include/configs/mx6q_sabresd.h
index a5d6363d017..fbf549a71b3 100644
--- a/include/configs/mx6q_sabresd.h
+++ b/include/configs/mx6q_sabresd.h
@@ -52,6 +52,7 @@
#define CONFIG_REVISION_TAG
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
+#define CONFIG_MXC_GPIO
/*
* Size of malloc() pool
diff --git a/include/configs/mx6q_sabresd_mfg.h b/include/configs/mx6q_sabresd_mfg.h
index 16fc9e8932d..9c2572e03b4 100644
--- a/include/configs/mx6q_sabresd_mfg.h
+++ b/include/configs/mx6q_sabresd_mfg.h
@@ -79,6 +79,7 @@
#include <config_cmd_default.h>
+#define CONFIG_MXC_GPIO
#define CONFIG_CMD_PING
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_MII