summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx6/board-mx6q_phyflex.h6
-rw-r--r--arch/arm/mach-mx6/board-mx6q_phytec-common.c21
-rw-r--r--arch/arm/mach-mx6/board-mx6q_phytec-common.h3
3 files changed, 30 insertions, 0 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_phyflex.h b/arch/arm/mach-mx6/board-mx6q_phyflex.h
index b4cc0b76bc3b..4605f80247f2 100644
--- a/arch/arm/mach-mx6/board-mx6q_phyflex.h
+++ b/arch/arm/mach-mx6/board-mx6q_phyflex.h
@@ -34,6 +34,12 @@
/* Common pads for PhyFlex board */
static iomux_v3_cfg_t mx6q_phytec_common_pads[] = {
+ /* GPIOs for revision control */
+ MX6Q_PAD_SD4_DAT4__GPIO_2_12,
+ MX6Q_PAD_SD4_DAT5__GPIO_2_13,
+ MX6Q_PAD_SD4_DAT6__GPIO_2_14,
+ MX6Q_PAD_SD4_DAT7__GPIO_2_15,
+
/* User LEDs */
MX6Q_PAD_ENET_TXD0__GPIO_1_30, // Led Green
MX6Q_PAD_EIM_EB3__GPIO_2_31, // Led Red
diff --git a/arch/arm/mach-mx6/board-mx6q_phytec-common.c b/arch/arm/mach-mx6/board-mx6q_phytec-common.c
index 85088b8fd348..b049f352301f 100644
--- a/arch/arm/mach-mx6/board-mx6q_phytec-common.c
+++ b/arch/arm/mach-mx6/board-mx6q_phytec-common.c
@@ -17,8 +17,10 @@
*/
#include <linux/clk.h>
+#include <linux/module.h>
#include <mach/common.h>
+#include <mach/gpio.h>
#include <mach/hardware.h>
#include <mach/iomux-mx6q.h>
@@ -29,9 +31,28 @@
/* Setup imx6 revision and uniq ID */
#define HW_OCOTP_DEVIDn(n) (0x00000410 + (n) * 0x10)
+
+unsigned int module_rev;
+EXPORT_SYMBOL(module_rev);
+
+static void get_module_revison(void)
+{
+ unsigned int val = 0;
+
+ val = gpio_get_value(IMX_GPIO_NR(2, 12));
+ val |= (gpio_get_value(IMX_GPIO_NR(2, 13)) << 1);
+ val |= (gpio_get_value(IMX_GPIO_NR(2, 14)) << 2);
+ val |= (gpio_get_value(IMX_GPIO_NR(2, 15)) << 3);
+
+ module_rev = 16 - val;
+
+}
+
void __init mx6_setup_cpuinfo(void)
{
system_rev = mx6q_revision();
system_serial_high = readl(MX6_IO_ADDRESS(OCOTP_BASE_ADDR) + HW_OCOTP_DEVIDn(0));
system_serial_low = readl(MX6_IO_ADDRESS(OCOTP_BASE_ADDR) + HW_OCOTP_DEVIDn(1));
+
+ get_module_revison();
}
diff --git a/arch/arm/mach-mx6/board-mx6q_phytec-common.h b/arch/arm/mach-mx6/board-mx6q_phytec-common.h
index b91ec4086dbd..6a21a17da195 100644
--- a/arch/arm/mach-mx6/board-mx6q_phytec-common.h
+++ b/arch/arm/mach-mx6/board-mx6q_phytec-common.h
@@ -3,6 +3,9 @@
#include <mach/iomux-mx6q.h>
+#define PHYFLEX_MODULE_REV_1 0x1
+#define PHYFLEX_MODULE_REV_2 0x2
+
extern __init void mx6_setup_cpuinfo(void);
#endif /* __BOARD_MX6Q_PHYTEC_COMMON_H__ */