summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorChristian Hemp <c.hemp@phytec.de>2013-10-04 09:03:09 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2015-08-26 14:43:14 +0200
commitd9f08b058bd5659e293a97e53347136c56d45b89 (patch)
tree3b9447cf83cc246a548b3c222652ed1cb7710a3f /arch/arm
parent32c5211ae860ef69e5c8285b60e0d69a9915366f (diff)
downloadbarebox-d9f08b058bd5659e293a97e53347136c56d45b89.tar.gz
barebox-d9f08b058bd5659e293a97e53347136c56d45b89.tar.xz
ARM: pfla02: Add module revison detection
The pin SD4_DAT4 until SD4_DAT7 are used as revison control. The pins will be internally pulled up so we read a 1111 for revison 1. For revison two the first pin (bit) is pulled down (see schematic pfla-02 page 4 "SDIO, NAND-Flash". On Module rev 1 the pins are connected to the NAND but we have only 8bit NAND also the i.MX6 only can handle 8bit NAND flashs. Revisions: Rev 1: 0xF Rev 2: 0xE . . . Rev 15: 0x1 Rev 16: 0x0 Signed-off-by: Christian Hemp <c.hemp@phytec.de> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/boards/phytec-phyflex-imx6/board.c24
-rw-r--r--arch/arm/dts/imx6qdl-phytec-pfla02.dtsi13
2 files changed, 37 insertions, 0 deletions
diff --git a/arch/arm/boards/phytec-phyflex-imx6/board.c b/arch/arm/boards/phytec-phyflex-imx6/board.c
index 5f65261a9f..f0c4fe25fc 100644
--- a/arch/arm/boards/phytec-phyflex-imx6/board.c
+++ b/arch/arm/boards/phytec-phyflex-imx6/board.c
@@ -16,6 +16,7 @@
* Foundation.
*
*/
+#define pr_fmt(fmt) "phyFLEX-i.MX6: " fmt
#include <malloc.h>
#include <envfs.h>
@@ -27,12 +28,16 @@
#include <of.h>
#include <mach/bbu.h>
#include <fec.h>
+#include <globalvar.h>
#include <linux/micrel_phy.h>
#include <mach/iomux-mx6.h>
#include <mach/imx6.h>
+#define PHYFLEX_MODULE_REV_1 0x1
+#define PHYFLEX_MODULE_REV_2 0x2
+
#define GPIO_2_11_PD_CTL MX6_PAD_CTL_PUS_100K_DOWN | MX6_PAD_CTL_PUE | MX6_PAD_CTL_PKE | \
MX6_PAD_CTL_SPEED_MED | MX6_PAD_CTL_DSE_40ohm | MX6_PAD_CTL_HYS
@@ -64,6 +69,20 @@ static void phyflex_err006282_workaround(void)
gpio_direction_input(MX6_PHYFLEX_ERR006282);
}
+static unsigned int pfla02_module_revision;
+
+static unsigned int get_module_rev(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);
+
+ return 16 - val;
+}
+
static int phytec_pfla02_init(void)
{
int ret;
@@ -78,6 +97,11 @@ static int phytec_pfla02_init(void)
imx6_bbu_nand_register_handler("nand", BBU_HANDLER_FLAG_DEFAULT);
+ pfla02_module_revision = get_module_rev();
+ globalvar_add_simple_int("board.revision", &pfla02_module_revision, "%u");
+
+ pr_info("Module Revision: %u\n", pfla02_module_revision);
+
switch (bootsource_get()) {
case BOOTSOURCE_MMC:
environment_path = asprintf("/chosen/environment-sd%d",
diff --git a/arch/arm/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/dts/imx6qdl-phytec-pfla02.dtsi
index 63c1e7f2f3..b79ce2c0f9 100644
--- a/arch/arm/dts/imx6qdl-phytec-pfla02.dtsi
+++ b/arch/arm/dts/imx6qdl-phytec-pfla02.dtsi
@@ -130,7 +130,20 @@
};
&iomuxc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_hog>, <&pinctrl_rev>;
+
imx6q-phytec-pfla02 {
+ pinctrl_rev: revgrp {
+ fsl,pins = <
+ MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0x80000000
+ MX6QDL_PAD_SD4_DAT4__GPIO2_IO12 0x80000000
+ MX6QDL_PAD_SD4_DAT5__GPIO2_IO13 0x80000000
+ MX6QDL_PAD_SD4_DAT6__GPIO2_IO14 0x80000000
+ MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x80000000
+ >;
+ };
+
pinctrl_gpmi_nand: gpminandgrp {
fsl,pins = <
MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1