All of lore.kernel.org
 help / color / mirror / Atom feed
* [[PATCH v2 0/6] imx soc revision clean up
@ 2011-08-24  5:04 Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

The patchset make some clean up for the imx soc revision display by
- introudce the generic function for displaying silicon revision
- update the imx SoCs to adopt the same usage

The patchset is based on Fabio's initial commit and I did some update

V2: Address comments from Sascha
- Remove the EXPORT_SYMBOL from imx_print_silicon_rev
- Fix the mx31 print twice issue

Fabio Estevam (1):
  ARM: imx: Introduce generic function for displaying silicon revision

Jason Liu (5):
  ARM: mx25: Print silicon revision on boot
  ARM: mx27: Print silicon revision on boot
  ARM: mx31: use generic function for displaying silicon revision
  ARM: mx35: use generic function for displaying silicon revision
  ARM: mx5: use generic function for displaying silicon revision

 arch/arm/mach-imx/Makefile              |    2 +-
 arch/arm/mach-imx/clock-imx25.c         |    6 +++
 arch/arm/mach-imx/clock-imx27.c         |    2 +
 arch/arm/mach-imx/clock-imx31.c         |    4 +-
 arch/arm/mach-imx/clock-imx35.c         |    3 +-
 arch/arm/mach-imx/cpu-imx25.c           |   41 +++++++++++++++++
 arch/arm/mach-imx/cpu-imx27.c           |   28 +++++------
 arch/arm/mach-imx/cpu-imx31.c           |   48 +++++++++++---------
 arch/arm/mach-imx/cpu-imx35.c           |   30 ++++++-------
 arch/arm/mach-mx5/clock-mx51-mx53.c     |    6 +--
 arch/arm/mach-mx5/cpu.c                 |   74 +++++++------------------------
 arch/arm/plat-mxc/cpu.c                 |    9 ++++
 arch/arm/plat-mxc/include/mach/common.h |    1 +
 arch/arm/plat-mxc/include/mach/mx25.h   |    4 ++
 arch/arm/plat-mxc/include/mach/mx3x.h   |   18 +-------
 15 files changed, 142 insertions(+), 134 deletions(-)
 create mode 100644 arch/arm/mach-imx/cpu-imx25.c

-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [[PATCH v2 1/6] ARM: imx: Introduce generic function for displaying silicon revision
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
@ 2011-08-24  5:04 ` Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 2/6] ARM: mx25: Print silicon revision on boot Jason Liu
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

From: Fabio Estevam <fabio.estevam@freescale.com>

Currently each i.MX processor has its own function for displaying the silicon
revision.

Introduce a generic function for this purpose, so that all i.MX processors can
reuse it.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
---
V2: remove EXPORT_SYMBOL
---
 arch/arm/plat-mxc/cpu.c                 |    9 +++++++++
 arch/arm/plat-mxc/include/mach/common.h |    1 +
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-mxc/cpu.c b/arch/arm/plat-mxc/cpu.c
index 386e0d5..f5b7e0f 100644
--- a/arch/arm/plat-mxc/cpu.c
+++ b/arch/arm/plat-mxc/cpu.c
@@ -1,5 +1,6 @@
 
 #include <linux/module.h>
+#include <mach/hardware.h>
 
 unsigned int __mxc_cpu_type;
 EXPORT_SYMBOL(__mxc_cpu_type);
@@ -9,3 +10,11 @@ void mxc_set_cpu_type(unsigned int type)
 	__mxc_cpu_type = type;
 }
 
+void imx_print_silicon_rev(const char *cpu, int srev)
+{
+	if (srev == IMX_CHIP_REVISION_UNKNOWN)
+		pr_info("CPU identified as %s, unknown revision\n", cpu);
+	else
+		pr_info("CPU identified as %s, silicon rev %d.%d\n",
+				cpu, (srev >> 4) & 0xf, srev & 0xf);
+}
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
index 4e3d978..318e0da 100644
--- a/arch/arm/plat-mxc/include/mach/common.h
+++ b/arch/arm/plat-mxc/include/mach/common.h
@@ -72,4 +72,5 @@ extern void mxc_arch_reset_init(void __iomem *);
 extern void mx51_efikamx_reset(void);
 extern int mx53_revision(void);
 extern int mx53_display_revision(void);
+extern void imx_print_silicon_rev(const char *cpu, int srev);
 #endif
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [[PATCH v2 2/6] ARM: mx25: Print silicon revision on boot
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
@ 2011-08-24  5:04 ` Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 3/6] ARM: mx27: " Jason Liu
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

Silicon revision is useful information to have during kernel boot.
Print the MX25 silicon revision.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>

---
Resend: The patch first comes from Fabio, I did some change to use
the generic function for displaying silicon revision
---
 arch/arm/mach-imx/Makefile            |    2 +-
 arch/arm/mach-imx/clock-imx25.c       |    6 +++++
 arch/arm/mach-imx/cpu-imx25.c         |   41 +++++++++++++++++++++++++++++++++
 arch/arm/plat-mxc/include/mach/mx25.h |    4 +++
 4 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index e9eb36d..0a5332c 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -3,7 +3,7 @@ obj-$(CONFIG_IMX_HAVE_DMA_V1) += dma-v1.o
 obj-$(CONFIG_ARCH_MX1) += clock-imx1.o mm-imx1.o
 obj-$(CONFIG_MACH_MX21) += clock-imx21.o mm-imx21.o
 
-obj-$(CONFIG_ARCH_MX25) += clock-imx25.o mm-imx25.o ehci-imx25.o
+obj-$(CONFIG_ARCH_MX25) += clock-imx25.o mm-imx25.o ehci-imx25.o cpu-imx25.o
 
 obj-$(CONFIG_MACH_MX27) += cpu-imx27.o pm-imx27.o
 obj-$(CONFIG_MACH_MX27) += clock-imx27.o mm-imx27.o ehci-imx27.o
diff --git a/arch/arm/mach-imx/clock-imx25.c b/arch/arm/mach-imx/clock-imx25.c
index e63e235..b0fec74c 100644
--- a/arch/arm/mach-imx/clock-imx25.c
+++ b/arch/arm/mach-imx/clock-imx25.c
@@ -263,6 +263,7 @@ DEFINE_CLOCK(audmux_clk, 0, CCM_CGCR1, 0, NULL, NULL, NULL);
 DEFINE_CLOCK(csi_clk,    0, CCM_CGCR1,  4, get_rate_csi, NULL,  &csi_per_clk);
 DEFINE_CLOCK(can1_clk,	 0, CCM_CGCR1,  2, get_rate_ipg, NULL, NULL);
 DEFINE_CLOCK(can2_clk,	 1, CCM_CGCR1,  3, get_rate_ipg, NULL, NULL);
+DEFINE_CLOCK(iim_clk,    0, CCM_CGCR1, 26, NULL, NULL, NULL);
 
 #define _REGISTER_CLOCK(d, n, c)	\
 	{				\
@@ -310,6 +311,7 @@ static struct clk_lookup lookups[] = {
 	_REGISTER_CLOCK("flexcan.1", NULL, can2_clk)
 	/* i.mx25 has the i.mx35 type sdma */
 	_REGISTER_CLOCK("imx35-sdma", NULL, sdma_clk)
+	_REGISTER_CLOCK(NULL, "iim", iim_clk)
 };
 
 int __init mx25_clocks_init(void)
@@ -334,6 +336,10 @@ int __init mx25_clocks_init(void)
 	/* Clock source for gpt is ahb_div */
 	__raw_writel(__raw_readl(CRM_BASE+0x64) & ~(1 << 5), CRM_BASE + 0x64);
 
+	clk_enable(&iim_clk);
+	imx_print_silicon_rev("i.MX25", mx25_revision());
+	clk_disable(&iim_clk);
+
 	mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54);
 
 	return 0;
diff --git a/arch/arm/mach-imx/cpu-imx25.c b/arch/arm/mach-imx/cpu-imx25.c
new file mode 100644
index 0000000..6914bcb
--- /dev/null
+++ b/arch/arm/mach-imx/cpu-imx25.c
@@ -0,0 +1,41 @@
+/*
+ * MX25 CPU type detection
+ *
+ * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
+ * Copyright (C) 2011 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.
+ */
+#include <linux/module.h>
+#include <linux/io.h>
+#include <mach/hardware.h>
+#include <mach/iim.h>
+
+static int mx25_cpu_rev = -1;
+
+static int mx25_read_cpu_rev(void)
+{
+	u32 rev;
+
+	rev = __raw_readl(MX25_IO_ADDRESS(MX25_IIM_BASE_ADDR + MXC_IIMSREV));
+	switch (rev) {
+	case 0x00:
+		return IMX_CHIP_REVISION_1_0;
+	case 0x01:
+		return IMX_CHIP_REVISION_1_1;
+	default:
+		return IMX_CHIP_REVISION_UNKNOWN;
+	}
+}
+
+int mx25_revision(void)
+{
+	if (mx25_cpu_rev == -1)
+		mx25_cpu_rev = mx25_read_cpu_rev();
+
+	return mx25_cpu_rev;
+}
+EXPORT_SYMBOL(mx25_revision);
diff --git a/arch/arm/plat-mxc/include/mach/mx25.h b/arch/arm/plat-mxc/include/mach/mx25.h
index 087cd7a..8dcab80 100644
--- a/arch/arm/plat-mxc/include/mach/mx25.h
+++ b/arch/arm/plat-mxc/include/mach/mx25.h
@@ -104,4 +104,8 @@
 #define MX25_DMA_REQ_SSI1_RX0	28
 #define MX25_DMA_REQ_SSI1_TX0	29
 
+#ifndef __ASSEMBLY__
+extern int mx25_revision(void);
+#endif
+
 #endif /* ifndef __MACH_MX25_H__ */
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [[PATCH v2 3/6] ARM: mx27: Print silicon revision on boot
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 2/6] ARM: mx25: Print silicon revision on boot Jason Liu
@ 2011-08-24  5:04 ` Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

Silicon revision is useful information to have during kernel boot.

Print the MX27 silicon revision.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
---
Resend: The patch based on Fabio initial patch, I did some change to
use generic function for displaying silicon revision and also some
naming change to avoid using the generic name
---
 arch/arm/mach-imx/clock-imx27.c |    2 ++
 arch/arm/mach-imx/cpu-imx27.c   |   28 +++++++++++++---------------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/arch/arm/mach-imx/clock-imx27.c b/arch/arm/mach-imx/clock-imx27.c
index 6912b82..e6b1beb 100644
--- a/arch/arm/mach-imx/clock-imx27.c
+++ b/arch/arm/mach-imx/clock-imx27.c
@@ -751,6 +751,8 @@ int __init mx27_clocks_init(unsigned long fref)
 	clk_enable(&gpio_clk);
 	clk_enable(&emi_clk);
 	clk_enable(&iim_clk);
+	imx_print_silicon_rev("i.MX27", mx27_revision());
+	clk_disable(&iim_clk);
 
 #if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_ICEDCC)
 	clk_enable(&uart1_clk);
diff --git a/arch/arm/mach-imx/cpu-imx27.c b/arch/arm/mach-imx/cpu-imx27.c
index 3b117be..ff38e15 100644
--- a/arch/arm/mach-imx/cpu-imx27.c
+++ b/arch/arm/mach-imx/cpu-imx27.c
@@ -26,12 +26,12 @@
 
 #include <mach/hardware.h>
 
-static int cpu_silicon_rev = -1;
-static int cpu_partnumber;
+static int mx27_cpu_rev = -1;
+static int mx27_cpu_partnumber;
 
 #define SYS_CHIP_ID             0x00    /* The offset of CHIP ID register */
 
-static void query_silicon_parameter(void)
+static int mx27_read_cpu_rev(void)
 {
 	u32 val;
 	/*
@@ -42,20 +42,18 @@ static void query_silicon_parameter(void)
 	val = __raw_readl(MX27_IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR
 				+ SYS_CHIP_ID));
 
+	mx27_cpu_partnumber = (int)((val >> 12) & 0xFFFF);
+
 	switch (val >> 28) {
 	case 0:
-		cpu_silicon_rev = IMX_CHIP_REVISION_1_0;
-		break;
+		return IMX_CHIP_REVISION_1_0;
 	case 1:
-		cpu_silicon_rev = IMX_CHIP_REVISION_2_0;
-		break;
+		return IMX_CHIP_REVISION_2_0;
 	case 2:
-		cpu_silicon_rev = IMX_CHIP_REVISION_2_1;
-		break;
+		return IMX_CHIP_REVISION_2_1;
 	default:
-		cpu_silicon_rev = IMX_CHIP_REVISION_UNKNOWN;
+		return IMX_CHIP_REVISION_UNKNOWN;
 	}
-	cpu_partnumber = (int)((val >> 12) & 0xFFFF);
 }
 
 /*
@@ -65,12 +63,12 @@ static void query_silicon_parameter(void)
  */
 int mx27_revision(void)
 {
-	if (cpu_silicon_rev == -1)
-		query_silicon_parameter();
+	if (mx27_cpu_rev == -1)
+		mx27_cpu_rev = mx27_read_cpu_rev();
 
-	if (cpu_partnumber != 0x8821)
+	if (mx27_cpu_partnumber != 0x8821)
 		return -EINVAL;
 
-	return cpu_silicon_rev;
+	return mx27_cpu_rev;
 }
 EXPORT_SYMBOL(mx27_revision);
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
                   ` (2 preceding siblings ...)
  2011-08-24  5:04 ` [[PATCH v2 3/6] ARM: mx27: " Jason Liu
@ 2011-08-24  5:04 ` Jason Liu
  2011-08-25 10:22   ` Fabio Estevam
  2011-08-24  5:04 ` [[PATCH v2 5/6] ARM: mx35: " Jason Liu
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

Update to use generic function for displaying silicon revision

Tested on mx31pdk board as print the following information:
CPU identified as i.MX31, silicon rev 2.8

Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>

---
V2: remove .v member and call imx_print_silicon_rev inside to avoid print twice
---
 arch/arm/mach-imx/clock-imx31.c       |    4 +-
 arch/arm/mach-imx/cpu-imx31.c         |   48 ++++++++++++++++++---------------
 arch/arm/plat-mxc/include/mach/mx3x.h |   11 +------
 3 files changed, 30 insertions(+), 33 deletions(-)

diff --git a/arch/arm/mach-imx/clock-imx31.c b/arch/arm/mach-imx/clock-imx31.c
index d973770..85b8885 100644
--- a/arch/arm/mach-imx/clock-imx31.c
+++ b/arch/arm/mach-imx/clock-imx31.c
@@ -611,11 +611,11 @@ int __init mx31_clocks_init(unsigned long fref)
 	clk_enable(&gpt_clk);
 	clk_enable(&emi_clk);
 	clk_enable(&iim_clk);
+	mx31_revision();
+	clk_disable(&iim_clk);
 
 	clk_enable(&serial_pll_clk);
 
-	mx31_read_cpu_rev();
-
 	if (mx31_revision() >= IMX_CHIP_REVISION_2_0) {
 		reg = __raw_readl(MXC_CCM_PMCR1);
 		/* No PLL restart on DVFS switch; enable auto EMI handshake */
diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
index a378070..b0fecd9 100644
--- a/arch/arm/mach-imx/cpu-imx31.c
+++ b/arch/arm/mach-imx/cpu-imx31.c
@@ -13,45 +13,49 @@
 #include <linux/io.h>
 #include <mach/hardware.h>
 #include <mach/iim.h>
+#include <mach/common.h>
 
-unsigned int mx31_cpu_rev;
-EXPORT_SYMBOL(mx31_cpu_rev);
+static int mx31_cpu_rev = -1;
 
 static struct {
 	u8 srev;
 	const char *name;
-	const char *v;
 	unsigned int rev;
-} mx31_cpu_type[] __initdata = {
-	{ .srev = 0x00, .name = "i.MX31(L)", .v = "1.0",  .rev = IMX_CHIP_REVISION_1_0	},
-	{ .srev = 0x10, .name = "i.MX31",    .v = "1.1",  .rev = IMX_CHIP_REVISION_1_1	},
-	{ .srev = 0x11, .name = "i.MX31L",   .v = "1.1",  .rev = IMX_CHIP_REVISION_1_1	},
-	{ .srev = 0x12, .name = "i.MX31",    .v = "1.15", .rev = IMX_CHIP_REVISION_1_1	},
-	{ .srev = 0x13, .name = "i.MX31L",   .v = "1.15", .rev = IMX_CHIP_REVISION_1_1	},
-	{ .srev = 0x14, .name = "i.MX31",    .v = "1.2",  .rev = IMX_CHIP_REVISION_1_2	},
-	{ .srev = 0x15, .name = "i.MX31L",   .v = "1.2",  .rev = IMX_CHIP_REVISION_1_2	},
-	{ .srev = 0x28, .name = "i.MX31",    .v = "2.0",  .rev = IMX_CHIP_REVISION_2_0	},
-	{ .srev = 0x29, .name = "i.MX31L",   .v = "2.0",  .rev = IMX_CHIP_REVISION_2_0	},
+} mx31_cpu_type[] = {
+	{ .srev = 0x00, .name = "i.MX31(L)", .rev = IMX_CHIP_REVISION_1_0 },
+	{ .srev = 0x10, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_1 },
+	{ .srev = 0x11, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_1 },
+	{ .srev = 0x12, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_1 },
+	{ .srev = 0x13, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_1 },
+	{ .srev = 0x14, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_2 },
+	{ .srev = 0x15, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_2 },
+	{ .srev = 0x28, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_2_0 },
+	{ .srev = 0x29, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_2_0 },
 };
 
-void __init mx31_read_cpu_rev(void)
+static int mx31_read_cpu_rev(void)
 {
 	u32 i, srev;
 
 	/* read SREV register from IIM module */
 	srev = __raw_readl(MX31_IO_ADDRESS(MX31_IIM_BASE_ADDR + MXC_IIMSREV));
+	srev &= 0xff;
 
 	for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
 		if (srev == mx31_cpu_type[i].srev) {
-			printk(KERN_INFO
-				"CPU identified as %s, silicon rev %s\n",
-				mx31_cpu_type[i].name, mx31_cpu_type[i].v);
-
-			mx31_cpu_rev = mx31_cpu_type[i].rev;
-			return;
+			imx_print_silicon_rev(mx31_cpu_type[i].name, srev);
+			return mx31_cpu_type[i].rev;
 		}
 
-	mx31_cpu_rev = IMX_CHIP_REVISION_UNKNOWN;
+	imx_print_silicon_rev("i.MX31", IMX_CHIP_REVISION_UNKNOWN);
+	return IMX_CHIP_REVISION_UNKNOWN;
+}
+
+int mx31_revision(void)
+{
+	if (mx31_cpu_rev == -1)
+		mx31_cpu_rev = mx31_read_cpu_rev();
 
-	printk(KERN_WARNING "Unknown CPU identifier. srev = %02x\n", srev);
+	return mx31_cpu_rev;
 }
+EXPORT_SYMBOL(mx31_revision);
diff --git a/arch/arm/plat-mxc/include/mach/mx3x.h b/arch/arm/plat-mxc/include/mach/mx3x.h
index 388a407..e1850f4 100644
--- a/arch/arm/plat-mxc/include/mach/mx3x.h
+++ b/arch/arm/plat-mxc/include/mach/mx3x.h
@@ -187,15 +187,6 @@
 /* Mandatory defines used globally */
 
 #if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS)
-
-extern unsigned int mx31_cpu_rev;
-extern void mx31_read_cpu_rev(void);
-
-static inline int mx31_revision(void)
-{
-	return mx31_cpu_rev;
-}
-
 extern unsigned int mx35_cpu_rev;
 extern void mx35_read_cpu_rev(void);
 
@@ -203,6 +194,8 @@ static inline int mx35_revision(void)
 {
 	return mx35_cpu_rev;
 }
+
+extern int mx31_revision(void);
 #endif
 
 #endif /* ifndef __MACH_MX3x_H__ */
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [[PATCH v2 5/6] ARM: mx35: use generic function for displaying silicon revision
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
                   ` (3 preceding siblings ...)
  2011-08-24  5:04 ` [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
@ 2011-08-24  5:04 ` Jason Liu
  2011-08-24  5:04 ` [[PATCH v2 6/6] ARM: mx5: " Jason Liu
  2011-08-24 16:33 ` [[PATCH v2 0/6] imx soc revision clean up Sascha Hauer
  6 siblings, 0 replies; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

update to use generic function for displaying silicon revision

Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/mach-imx/clock-imx35.c       |    3 ++-
 arch/arm/mach-imx/cpu-imx35.c         |   30 ++++++++++++++----------------
 arch/arm/plat-mxc/include/mach/mx3x.h |    9 +--------
 3 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/arch/arm/mach-imx/clock-imx35.c b/arch/arm/mach-imx/clock-imx35.c
index 88b62a0..abf30d4 100644
--- a/arch/arm/mach-imx/clock-imx35.c
+++ b/arch/arm/mach-imx/clock-imx35.c
@@ -537,7 +537,8 @@ int __init mx35_clocks_init()
 	__raw_writel(cgr3, CCM_BASE + CCM_CGR3);
 
 	clk_enable(&iim_clk);
-	mx35_read_cpu_rev();
+	imx_print_silicon_rev("i.MX35", mx35_revision());
+	clk_disable(&iim_clk);
 
 #ifdef CONFIG_MXC_USE_EPIT
 	epit_timer_init(&epit1_clk,
diff --git a/arch/arm/mach-imx/cpu-imx35.c b/arch/arm/mach-imx/cpu-imx35.c
index 6637cd8..846e46e 100644
--- a/arch/arm/mach-imx/cpu-imx35.c
+++ b/arch/arm/mach-imx/cpu-imx35.c
@@ -13,32 +13,30 @@
 #include <mach/hardware.h>
 #include <mach/iim.h>
 
-unsigned int mx35_cpu_rev;
-EXPORT_SYMBOL(mx35_cpu_rev);
+static int mx35_cpu_rev = -1;
 
-void __init mx35_read_cpu_rev(void)
+static int mx35_read_cpu_rev(void)
 {
 	u32 rev;
-	char *srev;
 
 	rev = __raw_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV));
 	switch (rev) {
 	case 0x00:
-		mx35_cpu_rev = IMX_CHIP_REVISION_1_0;
-		srev = "1.0";
-		break;
+		return IMX_CHIP_REVISION_1_0;
 	case 0x10:
-		mx35_cpu_rev = IMX_CHIP_REVISION_2_0;
-		srev = "2.0";
-		break;
+		return IMX_CHIP_REVISION_2_0;
 	case 0x11:
-		mx35_cpu_rev = IMX_CHIP_REVISION_2_1;
-		srev = "2.1";
-		break;
+		return IMX_CHIP_REVISION_2_1;
 	default:
-		mx35_cpu_rev = IMX_CHIP_REVISION_UNKNOWN;
-		srev = "unknown";
+		return IMX_CHIP_REVISION_UNKNOWN;
 	}
+}
+
+int mx35_revision(void)
+{
+	if (mx35_cpu_rev == -1)
+		mx35_cpu_rev = mx35_read_cpu_rev();
 
-	printk(KERN_INFO "CPU identified as i.MX35, silicon rev %s\n", srev);
+	return mx35_cpu_rev;
 }
+EXPORT_SYMBOL(mx35_revision);
diff --git a/arch/arm/plat-mxc/include/mach/mx3x.h b/arch/arm/plat-mxc/include/mach/mx3x.h
index e1850f4..30dbf42 100644
--- a/arch/arm/plat-mxc/include/mach/mx3x.h
+++ b/arch/arm/plat-mxc/include/mach/mx3x.h
@@ -187,14 +187,7 @@
 /* Mandatory defines used globally */
 
 #if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS)
-extern unsigned int mx35_cpu_rev;
-extern void mx35_read_cpu_rev(void);
-
-static inline int mx35_revision(void)
-{
-	return mx35_cpu_rev;
-}
-
+extern int mx35_revision(void);
 extern int mx31_revision(void);
 #endif
 
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [[PATCH v2 6/6] ARM: mx5: use generic function for displaying silicon revision
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
                   ` (4 preceding siblings ...)
  2011-08-24  5:04 ` [[PATCH v2 5/6] ARM: mx35: " Jason Liu
@ 2011-08-24  5:04 ` Jason Liu
  2011-08-25 14:51   ` Sascha Hauer
  2011-08-24 16:33 ` [[PATCH v2 0/6] imx soc revision clean up Sascha Hauer
  6 siblings, 1 reply; 13+ messages in thread
From: Jason Liu @ 2011-08-24  5:04 UTC (permalink / raw)
  To: linux-arm-kernel

Update to use generic function for displaying silicon revision

Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/mach-mx5/clock-mx51-mx53.c |    6 +--
 arch/arm/mach-mx5/cpu.c             |   74 ++++++++---------------------------
 2 files changed, 19 insertions(+), 61 deletions(-)

diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
index f7bf996..0e23e1d 100644
--- a/arch/arm/mach-mx5/clock-mx51-mx53.c
+++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
@@ -1548,9 +1548,8 @@ int __init mx51_clocks_init(unsigned long ckil, unsigned long osc,
 	clk_enable(&main_bus_clk);
 
 	clk_enable(&iim_clk);
-	mx51_revision();
+	imx_print_silicon_rev("i.MX51", mx51_revision());
 	clk_disable(&iim_clk);
-	mx51_display_revision();
 
 	/* move usb_phy_clk to 24MHz */
 	clk_set_parent(&usb_phy1_clk, &osc_clk);
@@ -1592,9 +1591,8 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
 	clk_enable(&main_bus_clk);
 
 	clk_enable(&iim_clk);
-	mx53_revision();
+	imx_print_silicon_rev("i.MX53", mx53_revision());
 	clk_disable(&iim_clk);
-	mx53_display_revision();
 
 	/* Set SDHC parents to be PLL2 */
 	clk_set_parent(&esdhc1_clk, &pll2_sw_clk);
diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c
index 86f87da..df46967 100644
--- a/arch/arm/mach-mx5/cpu.c
+++ b/arch/arm/mach-mx5/cpu.c
@@ -18,7 +18,7 @@
 #include <mach/hardware.h>
 #include <asm/io.h>
 
-static int cpu_silicon_rev = -1;
+static int mx5_cpu_rev = -1;
 
 #define IIM_SREV 0x24
 #define MX50_HW_ADADIG_DIGPROG	0xB0
@@ -28,11 +28,14 @@ static int get_mx51_srev(void)
 	void __iomem *iim_base = MX51_IO_ADDRESS(MX51_IIM_BASE_ADDR);
 	u32 rev = readl(iim_base + IIM_SREV) & 0xff;
 
-	if (rev == 0x0)
+	switch (rev) {
+	case 0x0:
 		return IMX_CHIP_REVISION_2_0;
-	else if (rev == 0x10)
+	case 0x2:
 		return IMX_CHIP_REVISION_3_0;
-	return 0;
+	default:
+		return IMX_CHIP_REVISION_UNKNOWN;
+	}
 }
 
 /*
@@ -45,33 +48,13 @@ int mx51_revision(void)
 	if (!cpu_is_mx51())
 		return -EINVAL;
 
-	if (cpu_silicon_rev == -1)
-		cpu_silicon_rev = get_mx51_srev();
+	if (mx5_cpu_rev == -1)
+		mx5_cpu_rev = get_mx51_srev();
 
-	return cpu_silicon_rev;
+	return mx5_cpu_rev;
 }
 EXPORT_SYMBOL(mx51_revision);
 
-void mx51_display_revision(void)
-{
-	int rev;
-	char *srev;
-	rev = mx51_revision();
-
-	switch (rev) {
-	case IMX_CHIP_REVISION_2_0:
-		srev = IMX_CHIP_REVISION_2_0_STRING;
-		break;
-	case IMX_CHIP_REVISION_3_0:
-		srev = IMX_CHIP_REVISION_3_0_STRING;
-		break;
-	default:
-		srev = IMX_CHIP_REVISION_UNKNOWN_STRING;
-	}
-	printk(KERN_INFO "CPU identified as i.MX51, silicon rev %s\n", srev);
-}
-EXPORT_SYMBOL(mx51_display_revision);
-
 #ifdef CONFIG_NEON
 
 /*
@@ -121,10 +104,10 @@ int mx53_revision(void)
 	if (!cpu_is_mx53())
 		return -EINVAL;
 
-	if (cpu_silicon_rev == -1)
-		cpu_silicon_rev = get_mx53_srev();
+	if (mx5_cpu_rev == -1)
+		mx5_cpu_rev = get_mx53_srev();
 
-	return cpu_silicon_rev;
+	return mx5_cpu_rev;
 }
 EXPORT_SYMBOL(mx53_revision);
 
@@ -134,7 +117,7 @@ static int get_mx50_srev(void)
 	u32 rev;
 
 	if (!anatop) {
-		cpu_silicon_rev = -EINVAL;
+		mx5_cpu_rev = -EINVAL;
 		return 0;
 	}
 
@@ -159,36 +142,13 @@ int mx50_revision(void)
 	if (!cpu_is_mx50())
 		return -EINVAL;
 
-	if (cpu_silicon_rev == -1)
-		cpu_silicon_rev = get_mx50_srev();
+	if (mx5_cpu_rev == -1)
+		mx5_cpu_rev = get_mx50_srev();
 
-	return cpu_silicon_rev;
+	return mx5_cpu_rev;
 }
 EXPORT_SYMBOL(mx50_revision);
 
-void mx53_display_revision(void)
-{
-	int rev;
-	char *srev;
-	rev = mx53_revision();
-
-	switch (rev) {
-	case IMX_CHIP_REVISION_1_0:
-		srev = IMX_CHIP_REVISION_1_0_STRING;
-		break;
-	case IMX_CHIP_REVISION_2_0:
-		srev = IMX_CHIP_REVISION_2_0_STRING;
-		break;
-	case IMX_CHIP_REVISION_2_1:
-		srev = IMX_CHIP_REVISION_2_1_STRING;
-		break;
-	default:
-		srev = IMX_CHIP_REVISION_UNKNOWN_STRING;
-	}
-	printk(KERN_INFO "CPU identified as i.MX53, silicon rev %s\n", srev);
-}
-EXPORT_SYMBOL(mx53_display_revision);
-
 static int __init post_cpu_init(void)
 {
 	unsigned int reg;
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [[PATCH v2 0/6] imx soc revision clean up
  2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
                   ` (5 preceding siblings ...)
  2011-08-24  5:04 ` [[PATCH v2 6/6] ARM: mx5: " Jason Liu
@ 2011-08-24 16:33 ` Sascha Hauer
  2011-08-26  5:38   ` Jason Hui
  6 siblings, 1 reply; 13+ messages in thread
From: Sascha Hauer @ 2011-08-24 16:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Aug 24, 2011 at 01:04:31PM +0800, Jason Liu wrote:
> The patchset make some clean up for the imx soc revision display by
> - introudce the generic function for displaying silicon revision
> - update the imx SoCs to adopt the same usage
> 
> The patchset is based on Fabio's initial commit and I did some update
> 
> V2: Address comments from Sascha
> - Remove the EXPORT_SYMBOL from imx_print_silicon_rev
> - Fix the mx31 print twice issue
> 
> Fabio Estevam (1):
>   ARM: imx: Introduce generic function for displaying silicon revision
> 
> Jason Liu (5):
>   ARM: mx25: Print silicon revision on boot
>   ARM: mx27: Print silicon revision on boot
>   ARM: mx31: use generic function for displaying silicon revision
>   ARM: mx35: use generic function for displaying silicon revision
>   ARM: mx5: use generic function for displaying silicon revision

Applied for next.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision
  2011-08-24  5:04 ` [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
@ 2011-08-25 10:22   ` Fabio Estevam
  2011-08-26  5:44     ` Jason Hui
  0 siblings, 1 reply; 13+ messages in thread
From: Fabio Estevam @ 2011-08-25 10:22 UTC (permalink / raw)
  To: linux-arm-kernel

Jason,

On Wed, Aug 24, 2011 at 2:04 AM, Jason Liu <jason.hui@linaro.org> wrote:
> Update to use generic function for displaying silicon revision
>
> Tested on mx31pdk board as print the following information:
> CPU identified as i.MX31, silicon rev 2.8

2.8? There is no MX31 rev 2.8.

Regards,

Fabio Estevam

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [[PATCH v2 6/6] ARM: mx5: use generic function for displaying silicon revision
  2011-08-24  5:04 ` [[PATCH v2 6/6] ARM: mx5: " Jason Liu
@ 2011-08-25 14:51   ` Sascha Hauer
  2011-08-25 15:20     ` Fabio Estevam
  0 siblings, 1 reply; 13+ messages in thread
From: Sascha Hauer @ 2011-08-25 14:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Aug 24, 2011 at 01:04:37PM +0800, Jason Liu wrote:
> Update to use generic function for displaying silicon revision
> 
> Signed-off-by: Jason Liu <jason.hui@linaro.org>
> Cc: Fabio Estevam <fabio.estevam@freescale.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  arch/arm/mach-mx5/clock-mx51-mx53.c |    6 +--
>  arch/arm/mach-mx5/cpu.c             |   74 ++++++++---------------------------
>  2 files changed, 19 insertions(+), 61 deletions(-)
> 
> diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
> index f7bf996..0e23e1d 100644
> --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
> +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
> @@ -1548,9 +1548,8 @@ int __init mx51_clocks_init(unsigned long ckil, unsigned long osc,
>  	clk_enable(&main_bus_clk);
>  
>  	clk_enable(&iim_clk);
> -	mx51_revision();
> +	imx_print_silicon_rev("i.MX51", mx51_revision());
>  	clk_disable(&iim_clk);
> -	mx51_display_revision();
>  
>  	/* move usb_phy_clk to 24MHz */
>  	clk_set_parent(&usb_phy1_clk, &osc_clk);
> @@ -1592,9 +1591,8 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
>  	clk_enable(&main_bus_clk);
>  
>  	clk_enable(&iim_clk);
> -	mx53_revision();
> +	imx_print_silicon_rev("i.MX53", mx53_revision());
>  	clk_disable(&iim_clk);
> -	mx53_display_revision();
>  
>  	/* Set SDHC parents to be PLL2 */
>  	clk_set_parent(&esdhc1_clk, &pll2_sw_clk);
> diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c
> index 86f87da..df46967 100644
> --- a/arch/arm/mach-mx5/cpu.c
> +++ b/arch/arm/mach-mx5/cpu.c
> @@ -18,7 +18,7 @@
>  #include <mach/hardware.h>
>  #include <asm/io.h>
>  
> -static int cpu_silicon_rev = -1;
> +static int mx5_cpu_rev = -1;
>  
>  #define IIM_SREV 0x24
>  #define MX50_HW_ADADIG_DIGPROG	0xB0
> @@ -28,11 +28,14 @@ static int get_mx51_srev(void)
>  	void __iomem *iim_base = MX51_IO_ADDRESS(MX51_IIM_BASE_ADDR);
>  	u32 rev = readl(iim_base + IIM_SREV) & 0xff;
>  
> -	if (rev == 0x0)
> +	switch (rev) {
> +	case 0x0:
>  		return IMX_CHIP_REVISION_2_0;
> -	else if (rev == 0x10)
> +	case 0x2:
>  		return IMX_CHIP_REVISION_3_0;

0x2 != 0x10

My babbage board now shows a unknown cpu revision.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [[PATCH v2 6/6] ARM: mx5: use generic function for displaying silicon revision
  2011-08-25 14:51   ` Sascha Hauer
@ 2011-08-25 15:20     ` Fabio Estevam
  0 siblings, 0 replies; 13+ messages in thread
From: Fabio Estevam @ 2011-08-25 15:20 UTC (permalink / raw)
  To: linux-arm-kernel

Sascha,

On Thu, Aug 25, 2011 at 11:51 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:

>> - ? ? if (rev == 0x0)
>> + ? ? switch (rev) {
>> + ? ? case 0x0:
>> ? ? ? ? ? ? ? return IMX_CHIP_REVISION_2_0;
>> - ? ? else if (rev == 0x10)
>> + ? ? case 0x2:
>> ? ? ? ? ? ? ? return IMX_CHIP_REVISION_3_0;
>
> 0x2 != 0x10
>
> My babbage board now shows a unknown cpu revision.

Just sent a patch to fix this.

Regards,

Fabio Estevam

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [[PATCH v2 0/6] imx soc revision clean up
  2011-08-24 16:33 ` [[PATCH v2 0/6] imx soc revision clean up Sascha Hauer
@ 2011-08-26  5:38   ` Jason Hui
  0 siblings, 0 replies; 13+ messages in thread
From: Jason Hui @ 2011-08-26  5:38 UTC (permalink / raw)
  To: linux-arm-kernel

Hi, Sascha,

I have one update called V3 for this, could you please pick up this version.

Thank you very much!

Jason

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision
  2011-08-25 10:22   ` Fabio Estevam
@ 2011-08-26  5:44     ` Jason Hui
  0 siblings, 0 replies; 13+ messages in thread
From: Jason Hui @ 2011-08-26  5:44 UTC (permalink / raw)
  To: linux-arm-kernel

Hi, Fabio,

On Thu, Aug 25, 2011 at 6:22 PM, Fabio Estevam <festevam@gmail.com> wrote:
> Jason,
>
> On Wed, Aug 24, 2011 at 2:04 AM, Jason Liu <jason.hui@linaro.org> wrote:
>> Update to use generic function for displaying silicon revision
>>
>> Tested on mx31pdk board as print the following information:
>> CPU identified as i.MX31, silicon rev 2.8
>
> 2.8? There is no MX31 rev 2.8.

Fixed it in V3 version. Thanks.

Jason

>
> Regards,
>
> Fabio Estevam
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2011-08-26  5:44 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-24  5:04 [[PATCH v2 0/6] imx soc revision clean up Jason Liu
2011-08-24  5:04 ` [[PATCH v2 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
2011-08-24  5:04 ` [[PATCH v2 2/6] ARM: mx25: Print silicon revision on boot Jason Liu
2011-08-24  5:04 ` [[PATCH v2 3/6] ARM: mx27: " Jason Liu
2011-08-24  5:04 ` [[PATCH v2 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
2011-08-25 10:22   ` Fabio Estevam
2011-08-26  5:44     ` Jason Hui
2011-08-24  5:04 ` [[PATCH v2 5/6] ARM: mx35: " Jason Liu
2011-08-24  5:04 ` [[PATCH v2 6/6] ARM: mx5: " Jason Liu
2011-08-25 14:51   ` Sascha Hauer
2011-08-25 15:20     ` Fabio Estevam
2011-08-24 16:33 ` [[PATCH v2 0/6] imx soc revision clean up Sascha Hauer
2011-08-26  5:38   ` Jason Hui

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.