linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] imx soc revision clean up
@ 2011-08-23 13:07 Jason Liu
  2011-08-23 13:07 ` [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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

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         |    5 +-
 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           |   21 +++++---
 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                 |   10 ++++
 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, 131 insertions(+), 120 deletions(-)
 create mode 100644 arch/arm/mach-imx/cpu-imx25.c

-- 
1.7.4.1

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

* [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision
  2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
@ 2011-08-23 13:07 ` Jason Liu
  2011-08-23 13:09   ` Sascha Hauer
  2011-08-23 13:07 ` [PATCH 2/6] ARM: mx25: Print silicon revision on boot Jason Liu
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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>
---
 arch/arm/plat-mxc/cpu.c                 |   10 ++++++++++
 arch/arm/plat-mxc/include/mach/common.h |    1 +
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-mxc/cpu.c b/arch/arm/plat-mxc/cpu.c
index 386e0d5..f081ef0 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,12 @@ 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);
+}
+EXPORT_SYMBOL(imx_print_silicon_rev);
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] 11+ messages in thread

* [PATCH 2/6] ARM: mx25: Print silicon revision on boot
  2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
  2011-08-23 13:07 ` [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
@ 2011-08-23 13:07 ` Jason Liu
  2011-08-23 13:07 ` [PATCH 3/6] ARM: mx27: " Jason Liu
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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] 11+ messages in thread

* [PATCH 3/6] ARM: mx27: Print silicon revision on boot
  2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
  2011-08-23 13:07 ` [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
  2011-08-23 13:07 ` [PATCH 2/6] ARM: mx25: Print silicon revision on boot Jason Liu
@ 2011-08-23 13:07 ` Jason Liu
  2011-08-23 13:07 ` [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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] 11+ messages in thread

* [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision
  2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
                   ` (2 preceding siblings ...)
  2011-08-23 13:07 ` [PATCH 3/6] ARM: mx27: " Jason Liu
@ 2011-08-23 13:07 ` Jason Liu
  2011-08-23 13:13   ` Sascha Hauer
  2011-08-23 13:07 ` [PATCH 5/6] ARM: mx35: " Jason Liu
  2011-08-23 13:07 ` [PATCH 6/6] ARM: mx5: " Jason Liu
  5 siblings, 1 reply; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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-imx31.c       |    5 +++--
 arch/arm/mach-imx/cpu-imx31.c         |   21 +++++++++++++--------
 arch/arm/plat-mxc/include/mach/mx3x.h |   11 ++---------
 3 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/arch/arm/mach-imx/clock-imx31.c b/arch/arm/mach-imx/clock-imx31.c
index d973770..dd8373e 100644
--- a/arch/arm/mach-imx/clock-imx31.c
+++ b/arch/arm/mach-imx/clock-imx31.c
@@ -610,11 +610,12 @@ int __init mx31_clocks_init(unsigned long fref)
 
 	clk_enable(&gpt_clk);
 	clk_enable(&emi_clk);
-	clk_enable(&iim_clk);
 
 	clk_enable(&serial_pll_clk);
 
-	mx31_read_cpu_rev();
+	clk_enable(&iim_clk);
+	imx_print_silicon_rev("i.MX31", mx31_revision());
+	clk_disable(&iim_clk);
 
 	if (mx31_revision() >= IMX_CHIP_REVISION_2_0) {
 		reg = __raw_readl(MXC_CCM_PMCR1);
diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
index a378070..a5b8686 100644
--- a/arch/arm/mach-imx/cpu-imx31.c
+++ b/arch/arm/mach-imx/cpu-imx31.c
@@ -14,15 +14,14 @@
 #include <mach/hardware.h>
 #include <mach/iim.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 = {
+} mx31_cpu_type[] = {
 	{ .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	},
@@ -34,7 +33,7 @@ static struct {
 	{ .srev = 0x29, .name = "i.MX31L",   .v = "2.0",  .rev = IMX_CHIP_REVISION_2_0	},
 };
 
-void __init mx31_read_cpu_rev(void)
+static int mx31_read_cpu_rev(void)
 {
 	u32 i, srev;
 
@@ -47,11 +46,17 @@ void __init mx31_read_cpu_rev(void)
 				"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;
+			return mx31_cpu_type[i].rev;
 		}
 
-	mx31_cpu_rev = 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] 11+ messages in thread

* [PATCH 5/6] ARM: mx35: use generic function for displaying silicon revision
  2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
                   ` (3 preceding siblings ...)
  2011-08-23 13:07 ` [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
@ 2011-08-23 13:07 ` Jason Liu
  2011-08-23 13:07 ` [PATCH 6/6] ARM: mx5: " Jason Liu
  5 siblings, 0 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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] 11+ messages in thread

* [PATCH 6/6] ARM: mx5: use generic function for displaying silicon revision
  2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
                   ` (4 preceding siblings ...)
  2011-08-23 13:07 ` [PATCH 5/6] ARM: mx35: " Jason Liu
@ 2011-08-23 13:07 ` Jason Liu
  5 siblings, 0 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-23 13:07 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] 11+ messages in thread

* [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision
  2011-08-23 13:07 ` [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
@ 2011-08-23 13:09   ` Sascha Hauer
  2011-08-24  2:40     ` Jason Liu
  0 siblings, 1 reply; 11+ messages in thread
From: Sascha Hauer @ 2011-08-23 13:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Aug 23, 2011 at 09:07:39PM +0800, Jason Liu wrote:
> 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>
> ---
>  arch/arm/plat-mxc/cpu.c                 |   10 ++++++++++
>  arch/arm/plat-mxc/include/mach/common.h |    1 +
>  2 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/plat-mxc/cpu.c b/arch/arm/plat-mxc/cpu.c
> index 386e0d5..f081ef0 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,12 @@ 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);
> +}
> +EXPORT_SYMBOL(imx_print_silicon_rev);

No Need to export this. It is not supposed to be used by modules.

Sascha

> 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
> 
> 
> 

-- 
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] 11+ messages in thread

* [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision
  2011-08-23 13:07 ` [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
@ 2011-08-23 13:13   ` Sascha Hauer
  2011-08-24  2:45     ` Jason Liu
  0 siblings, 1 reply; 11+ messages in thread
From: Sascha Hauer @ 2011-08-23 13:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Aug 23, 2011 at 09:07:42PM +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-imx/clock-imx31.c       |    5 +++--
>  arch/arm/mach-imx/cpu-imx31.c         |   21 +++++++++++++--------
>  arch/arm/plat-mxc/include/mach/mx3x.h |   11 ++---------
>  3 files changed, 18 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/clock-imx31.c b/arch/arm/mach-imx/clock-imx31.c
> index d973770..dd8373e 100644
> --- a/arch/arm/mach-imx/clock-imx31.c
> +++ b/arch/arm/mach-imx/clock-imx31.c
> @@ -610,11 +610,12 @@ int __init mx31_clocks_init(unsigned long fref)
>  
>  	clk_enable(&gpt_clk);
>  	clk_enable(&emi_clk);
> -	clk_enable(&iim_clk);
>  
>  	clk_enable(&serial_pll_clk);
>  
> -	mx31_read_cpu_rev();
> +	clk_enable(&iim_clk);
> +	imx_print_silicon_rev("i.MX31", mx31_revision());
> +	clk_disable(&iim_clk);
>  
>  	if (mx31_revision() >= IMX_CHIP_REVISION_2_0) {
>  		reg = __raw_readl(MXC_CCM_PMCR1);
> diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
> index a378070..a5b8686 100644
> --- a/arch/arm/mach-imx/cpu-imx31.c
> +++ b/arch/arm/mach-imx/cpu-imx31.c
> @@ -14,15 +14,14 @@
>  #include <mach/hardware.h>
>  #include <mach/iim.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 = {
> +} mx31_cpu_type[] = {
>  	{ .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	},
> @@ -34,7 +33,7 @@ static struct {
>  	{ .srev = 0x29, .name = "i.MX31L",   .v = "2.0",  .rev = IMX_CHIP_REVISION_2_0	},
>  };
>  
> -void __init mx31_read_cpu_rev(void)
> +static int mx31_read_cpu_rev(void)
>  {
>  	u32 i, srev;
>  
> @@ -47,11 +46,17 @@ void __init mx31_read_cpu_rev(void)
>  				"CPU identified as %s, silicon rev %s\n",
>  				mx31_cpu_type[i].name, mx31_cpu_type[i].v);

It seems now we print the silicon revision twice, right?

The .v field should be unused now and can be removed.

Also, you can call imx_print_silicon_rev from here and pass the cpu name
from the array.

Sascha

>  
> -			mx31_cpu_rev = mx31_cpu_type[i].rev;
> -			return;
> +			return mx31_cpu_type[i].rev;
>  		}
>  
> -	mx31_cpu_rev = 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
> 
> 
> 

-- 
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] 11+ messages in thread

* [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision
  2011-08-23 13:09   ` Sascha Hauer
@ 2011-08-24  2:40     ` Jason Liu
  0 siblings, 0 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-24  2:40 UTC (permalink / raw)
  To: linux-arm-kernel

Hi, Sascha,

2011/8/23 Sascha Hauer <s.hauer@pengutronix.de>:
> On Tue, Aug 23, 2011 at 09:07:39PM +0800, Jason Liu wrote:
>> 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>
>> ---
>> ?arch/arm/plat-mxc/cpu.c ? ? ? ? ? ? ? ? | ? 10 ++++++++++
>> ?arch/arm/plat-mxc/include/mach/common.h | ? ?1 +
>> ?2 files changed, 11 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/plat-mxc/cpu.c b/arch/arm/plat-mxc/cpu.c
>> index 386e0d5..f081ef0 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,12 @@ 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);
>> +}
>> +EXPORT_SYMBOL(imx_print_silicon_rev);
>
> No Need to export this. It is not supposed to be used by modules.

OK, I will remove it. Thanks,

>
> Sascha
>
>> 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
>>
>>
>>
>
> --
> 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 |
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>

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

* [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision
  2011-08-23 13:13   ` Sascha Hauer
@ 2011-08-24  2:45     ` Jason Liu
  0 siblings, 0 replies; 11+ messages in thread
From: Jason Liu @ 2011-08-24  2:45 UTC (permalink / raw)
  To: linux-arm-kernel

Hi, Sascha,

2011/8/23 Sascha Hauer <s.hauer@pengutronix.de>:
> On Tue, Aug 23, 2011 at 09:07:42PM +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-imx/clock-imx31.c ? ? ? | ? ?5 +++--
>> ?arch/arm/mach-imx/cpu-imx31.c ? ? ? ? | ? 21 +++++++++++++--------
>> ?arch/arm/plat-mxc/include/mach/mx3x.h | ? 11 ++---------
>> ?3 files changed, 18 insertions(+), 19 deletions(-)
>>
>> diff --git a/arch/arm/mach-imx/clock-imx31.c b/arch/arm/mach-imx/clock-imx31.c
>> index d973770..dd8373e 100644
>> --- a/arch/arm/mach-imx/clock-imx31.c
>> +++ b/arch/arm/mach-imx/clock-imx31.c
>> @@ -610,11 +610,12 @@ int __init mx31_clocks_init(unsigned long fref)
>>
>> ? ? ? clk_enable(&gpt_clk);
>> ? ? ? clk_enable(&emi_clk);
>> - ? ? clk_enable(&iim_clk);
>>
>> ? ? ? clk_enable(&serial_pll_clk);
>>
>> - ? ? mx31_read_cpu_rev();
>> + ? ? clk_enable(&iim_clk);
>> + ? ? imx_print_silicon_rev("i.MX31", mx31_revision());
>> + ? ? clk_disable(&iim_clk);
>>
>> ? ? ? if (mx31_revision() >= IMX_CHIP_REVISION_2_0) {
>> ? ? ? ? ? ? ? reg = __raw_readl(MXC_CCM_PMCR1);
>> diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
>> index a378070..a5b8686 100644
>> --- a/arch/arm/mach-imx/cpu-imx31.c
>> +++ b/arch/arm/mach-imx/cpu-imx31.c
>> @@ -14,15 +14,14 @@
>> ?#include <mach/hardware.h>
>> ?#include <mach/iim.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 = {
>> +} mx31_cpu_type[] = {
>> ? ? ? { .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 ?},
>> @@ -34,7 +33,7 @@ static struct {
>> ? ? ? { .srev = 0x29, .name = "i.MX31L", ? .v = "2.0", ?.rev = IMX_CHIP_REVISION_2_0 ?},
>> ?};
>>
>> -void __init mx31_read_cpu_rev(void)
>> +static int mx31_read_cpu_rev(void)
>> ?{
>> ? ? ? u32 i, srev;
>>
>> @@ -47,11 +46,17 @@ void __init mx31_read_cpu_rev(void)
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "CPU identified as %s, silicon rev %s\n",
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mx31_cpu_type[i].name, mx31_cpu_type[i].v);
>
> It seems now we print the silicon revision twice, right?

Yes, correct. I will fix it.

>
> The .v field should be unused now and can be removed.

Accepted.

>
> Also, you can call imx_print_silicon_rev from here and pass the cpu name
> from the array.

Yes, Thanks for the review.

Jason

>
> Sascha
>
>>
>> - ? ? ? ? ? ? ? ? ? ? mx31_cpu_rev = mx31_cpu_type[i].rev;
>> - ? ? ? ? ? ? ? ? ? ? return;
>> + ? ? ? ? ? ? ? ? ? ? return mx31_cpu_type[i].rev;
>> ? ? ? ? ? ? ? }
>>
>> - ? ? mx31_cpu_rev = 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
>>
>>
>>
>
> --
> 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 |
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>

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

end of thread, other threads:[~2011-08-24  2:45 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-23 13:07 [PATCH 0/6] imx soc revision clean up Jason Liu
2011-08-23 13:07 ` [PATCH 1/6] ARM: imx: Introduce generic function for displaying silicon revision Jason Liu
2011-08-23 13:09   ` Sascha Hauer
2011-08-24  2:40     ` Jason Liu
2011-08-23 13:07 ` [PATCH 2/6] ARM: mx25: Print silicon revision on boot Jason Liu
2011-08-23 13:07 ` [PATCH 3/6] ARM: mx27: " Jason Liu
2011-08-23 13:07 ` [PATCH 4/6] ARM: mx31: use generic function for displaying silicon revision Jason Liu
2011-08-23 13:13   ` Sascha Hauer
2011-08-24  2:45     ` Jason Liu
2011-08-23 13:07 ` [PATCH 5/6] ARM: mx35: " Jason Liu
2011-08-23 13:07 ` [PATCH 6/6] ARM: mx5: " Jason Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).