* [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3
@ 2015-08-10 12:53 Peng Fan
2015-08-10 12:53 ` [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev Peng Fan
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Peng Fan @ 2015-08-10 12:53 UTC (permalink / raw)
To: u-boot
Add cpu types for i.MX2/3.
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
---
arch/arm/include/asm/arch-imx/cpu.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/include/asm/arch-imx/cpu.h b/arch/arm/include/asm/arch-imx/cpu.h
index c7f9fff..71208aa 100644
--- a/arch/arm/include/asm/arch-imx/cpu.h
+++ b/arch/arm/include/asm/arch-imx/cpu.h
@@ -4,6 +4,11 @@
* SPDX-License-Identifier: GPL-2.0+
*/
+#define MXC_CPU_MX23 0x23
+#define MXC_CPU_MX25 0x25
+#define MXC_CPU_MX28 0x28
+#define MXC_CPU_MX31 0x31
+#define MXC_CPU_MX35 0x35
#define MXC_CPU_MX51 0x51
#define MXC_CPU_MX53 0x53
#define MXC_CPU_MX6SL 0x60
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev
2015-08-10 12:53 [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Peng Fan
@ 2015-08-10 12:53 ` Peng Fan
2015-08-11 10:45 ` Stefano Babic
2015-08-10 12:53 ` [U-Boot] [PATCH 3/4] imx: mxs: reimplement get_cpu_rev Peng Fan
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Peng Fan @ 2015-08-10 12:53 UTC (permalink / raw)
To: u-boot
Use new formula for get_cpu_rev, since we need to use this formula
to do runtime check for all i.MXes.
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
---
arch/arm/cpu/arm1136/mx31/generic.c | 2 +-
arch/arm/include/asm/arch-mx31/sys_proto.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/arm1136/mx31/generic.c b/arch/arm/cpu/arm1136/mx31/generic.c
index 060d46b..fe96670 100644
--- a/arch/arm/cpu/arm1136/mx31/generic.c
+++ b/arch/arm/cpu/arm1136/mx31/generic.c
@@ -175,7 +175,7 @@ u32 get_cpu_rev(void)
for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
if (srev == mx31_cpu_type[i].srev)
- return mx31_cpu_type[i].v;
+ return mx31_cpu_type[i].v | (MXC_CPU_MX31 << 12);
return srev | 0x8000;
}
diff --git a/arch/arm/include/asm/arch-mx31/sys_proto.h b/arch/arm/include/asm/arch-mx31/sys_proto.h
index b0dfcba..1626442 100644
--- a/arch/arm/include/asm/arch-mx31/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx31/sys_proto.h
@@ -8,6 +8,8 @@
#ifndef _SYS_PROTO_H_
#define _SYS_PROTO_H_
+#include "../arch-imx/cpu.h"
+
struct mxc_weimcs {
u32 upper;
u32 lower;
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/4] imx: mxs: reimplement get_cpu_rev
2015-08-10 12:53 [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Peng Fan
2015-08-10 12:53 ` [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev Peng Fan
@ 2015-08-10 12:53 ` Peng Fan
2015-08-11 10:45 ` Stefano Babic
2015-08-10 12:53 ` [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h Peng Fan
2015-08-11 10:45 ` [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Stefano Babic
3 siblings, 1 reply; 10+ messages in thread
From: Peng Fan @ 2015-08-10 12:53 UTC (permalink / raw)
To: u-boot
Rewrite get_cpu_rev, from "static const char *get_cpu_rev(void)" to
"u32 get_cpu_rev(void)". To align with get_cpu_rev of other i.MXes.
Also write get_imx_type to replace get_cpu_type, since we have
macro named get_cpu_type.
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
---
arch/arm/cpu/arm926ejs/mxs/mxs.c | 52 ++++++++++++++-----------------
arch/arm/include/asm/arch-mxs/sys_proto.h | 1 +
2 files changed, 25 insertions(+), 28 deletions(-)
diff --git a/arch/arm/cpu/arm926ejs/mxs/mxs.c b/arch/arm/cpu/arm926ejs/mxs/mxs.c
index ef130ae..30dbf5e 100644
--- a/arch/arm/cpu/arm926ejs/mxs/mxs.c
+++ b/arch/arm/cpu/arm926ejs/mxs/mxs.c
@@ -132,23 +132,7 @@ int arch_cpu_init(void)
return 0;
}
-#if defined(CONFIG_DISPLAY_CPUINFO)
-static const char *get_cpu_type(void)
-{
- struct mxs_digctl_regs *digctl_regs =
- (struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
-
- switch (readl(&digctl_regs->hw_digctl_chipid) & HW_DIGCTL_CHIPID_MASK) {
- case HW_DIGCTL_CHIPID_MX23:
- return "23";
- case HW_DIGCTL_CHIPID_MX28:
- return "28";
- default:
- return "??";
- }
-}
-
-static const char *get_cpu_rev(void)
+u32 get_cpu_rev(void)
{
struct mxs_digctl_regs *digctl_regs =
(struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
@@ -158,38 +142,50 @@ static const char *get_cpu_rev(void)
case HW_DIGCTL_CHIPID_MX23:
switch (rev) {
case 0x0:
- return "1.0";
case 0x1:
- return "1.1";
case 0x2:
- return "1.2";
case 0x3:
- return "1.3";
case 0x4:
- return "1.4";
+ return (MXC_CPU_MX23 << 12) | (rev + 0x10);
default:
- return "??";
+ return 0;
}
case HW_DIGCTL_CHIPID_MX28:
switch (rev) {
case 0x1:
- return "1.2";
+ return (MXC_CPU_MX28 << 12) | 0x12;
default:
- return "??";
+ return 0;
}
default:
+ return 0;
+ }
+}
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+const char *get_imx_type(u32 imxtype)
+{
+ switch (imxtype) {
+ case MXC_CPU_MX23:
+ return "23"; /* Quad-Plus version of the mx6 */
+ case MXC_CPU_MX28:
+ return "28"; /* Dual-Plus version of the mx6 */
+ default:
return "??";
}
}
int print_cpuinfo(void)
{
+ u32 cpurev;
struct mxs_spl_data *data = (struct mxs_spl_data *)
((CONFIG_SYS_TEXT_BASE - sizeof(struct mxs_spl_data)) & ~0xf);
- printf("CPU: Freescale i.MX%s rev%s at %d MHz\n",
- get_cpu_type(),
- get_cpu_rev(),
+ cpurev = get_cpu_rev();
+ printf("CPU: Freescale i.MX%s rev%d.%d@%d MHz\n",
+ get_imx_type((cpurev & 0xFF000) >> 12),
+ (cpurev & 0x000F0) >> 4,
+ (cpurev & 0x0000F) >> 0,
mxc_get_clock(MXC_ARM_CLK) / 1000000);
printf("BOOT: %s\n", mxs_boot_modes[data->boot_mode_idx].mode);
return 0;
diff --git a/arch/arm/include/asm/arch-mxs/sys_proto.h b/arch/arm/include/asm/arch-mxs/sys_proto.h
index 4678723..d6e9fdb 100644
--- a/arch/arm/include/asm/arch-mxs/sys_proto.h
+++ b/arch/arm/include/asm/arch-mxs/sys_proto.h
@@ -11,6 +11,7 @@
#define __SYS_PROTO_H__
#include <asm/imx-common/regs-common.h>
+#include <../arch-imx/cpu.h>
int mxs_reset_block(struct mxs_register_32 *reg);
int mxs_wait_mask_set(struct mxs_register_32 *reg,
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h
2015-08-10 12:53 [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Peng Fan
2015-08-10 12:53 ` [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev Peng Fan
2015-08-10 12:53 ` [U-Boot] [PATCH 3/4] imx: mxs: reimplement get_cpu_rev Peng Fan
@ 2015-08-10 12:53 ` Peng Fan
2015-08-11 10:45 ` Stefano Babic
2015-08-12 15:49 ` Stefano Babic
2015-08-11 10:45 ` [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Stefano Babic
3 siblings, 2 replies; 10+ messages in thread
From: Peng Fan @ 2015-08-10 12:53 UTC (permalink / raw)
To: u-boot
Move most macro definitions and prototypes into
"arch/arm/include/asm/imx-common/sys_proto.h" to avoid duplicated
function prototypes and marco definitions for different i.MX SoCs.
This patch do not remove the sys_proto.h for different i.MX SoCs,
because we need to modify lots of driver code and others. This patch
remove duplicated macros and prototypes and incude "sys_proto.h"
of imx-common for each sys_proto.h of different i.MX platforms.
Then later we should avoid add stuff in sys_proto.h of each platform,
and modify driver to include common sys_proto.h.
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
---
arch/arm/include/asm/arch-mx31/sys_proto.h | 7 ++---
arch/arm/include/asm/arch-mx35/sys_proto.h | 12 ++++----
arch/arm/include/asm/arch-mx5/sys_proto.h | 22 +-------------
arch/arm/include/asm/arch-mx6/sys_proto.h | 45 +----------------------------
arch/arm/include/asm/arch-mxs/sys_proto.h | 15 ++--------
arch/arm/include/asm/imx-common/sys_proto.h | 45 +++++++++++++++++++++++++++++
6 files changed, 59 insertions(+), 87 deletions(-)
create mode 100644 arch/arm/include/asm/imx-common/sys_proto.h
diff --git a/arch/arm/include/asm/arch-mx31/sys_proto.h b/arch/arm/include/asm/arch-mx31/sys_proto.h
index 1626442..674b25c 100644
--- a/arch/arm/include/asm/arch-mx31/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx31/sys_proto.h
@@ -5,10 +5,10 @@
* SPDX-License-Identifier: GPL-2.0+
*/
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
+#ifndef _MX31_SYS_PROTO_H_
+#define _MX31_SYS_PROTO_H_
-#include "../arch-imx/cpu.h"
+#include <asm/imx-common/sys_proto.h>
struct mxc_weimcs {
u32 upper;
@@ -18,5 +18,4 @@ struct mxc_weimcs {
void mxc_setup_weimcs(int cs, const struct mxc_weimcs *weimcs);
int mxc_mmc_init(bd_t *bis);
-u32 get_cpu_rev(void);
#endif
diff --git a/arch/arm/include/asm/arch-mx35/sys_proto.h b/arch/arm/include/asm/arch-mx35/sys_proto.h
index 35c0352..0979fda 100644
--- a/arch/arm/include/asm/arch-mx35/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx35/sys_proto.h
@@ -5,12 +5,12 @@
* SPDX-License-Identifier: GPL-2.0+
*/
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
+#ifndef _MX35_SYS_PROTO_H_
+#define _MX35_SYS_PROTO_H_
-u32 get_cpu_rev(void);
-void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config,
- u32 row, u32 col, u32 dsize, u32 refresh);
-#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
+#include <asm/imx-common/sys_proto.h>
+
+void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config, u32 row,
+ u32 col, u32 dsize, u32 refresh);
#endif
diff --git a/arch/arm/include/asm/arch-mx5/sys_proto.h b/arch/arm/include/asm/arch-mx5/sys_proto.h
index b06c77f..16c9b76 100644
--- a/arch/arm/include/asm/arch-mx5/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx5/sys_proto.h
@@ -5,24 +5,4 @@
* SPDX-License-Identifier: GPL-2.0+
*/
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
-
-#include "../arch-imx/cpu.h"
-
-#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
-u32 get_cpu_rev(void);
-unsigned imx_ddr_size(void);
-void sdelay(unsigned long);
-void set_chipselect_size(int const);
-
-/*
- * Initializes on-chip ethernet controllers.
- * to override, implement board_eth_init()
- */
-
-int fecmxc_initialize(bd_t *bis);
-u32 get_ahb_clk(void);
-u32 get_periph_clk(void);
-
-#endif
+#include <asm/imx-common/sys_proto.h>
diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h
index eee8ca8..16c9b76 100644
--- a/arch/arm/include/asm/arch-mx6/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx6/sys_proto.h
@@ -5,47 +5,4 @@
* SPDX-License-Identifier: GPL-2.0+
*/
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
-
-#include <asm/imx-common/regs-common.h>
-#include "../arch-imx/cpu.h"
-
-#define soc_rev() (get_cpu_rev() & 0xFF)
-#define is_soc_rev(rev) (soc_rev() == rev)
-
-u32 get_nr_cpus(void);
-u32 get_cpu_rev(void);
-u32 get_cpu_speed_grade_hz(void);
-u32 get_cpu_temp_grade(int *minc, int *maxc);
-
-/* returns MXC_CPU_ value */
-#define cpu_type(rev) (((rev) >> 12) & 0xff)
-
-/* both macros return/take MXC_CPU_ constants */
-#define get_cpu_type() (cpu_type(get_cpu_rev()))
-#define is_cpu_type(cpu) (get_cpu_type() == cpu)
-
-const char *get_imx_type(u32 imxtype);
-unsigned imx_ddr_size(void);
-void set_chipselect_size(int const);
-
-#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
-
-/*
- * Initializes on-chip ethernet controllers.
- * to override, implement board_eth_init()
- */
-
-int fecmxc_initialize(bd_t *bis);
-u32 get_ahb_clk(void);
-u32 get_periph_clk(void);
-
-int mxs_reset_block(struct mxs_register_32 *reg);
-int mxs_wait_mask_set(struct mxs_register_32 *reg,
- uint32_t mask,
- unsigned int timeout);
-int mxs_wait_mask_clr(struct mxs_register_32 *reg,
- uint32_t mask,
- unsigned int timeout);
-#endif
+#include <asm/imx-common/sys_proto.h>
diff --git a/arch/arm/include/asm/arch-mxs/sys_proto.h b/arch/arm/include/asm/arch-mxs/sys_proto.h
index d6e9fdb..20ff101 100644
--- a/arch/arm/include/asm/arch-mxs/sys_proto.h
+++ b/arch/arm/include/asm/arch-mxs/sys_proto.h
@@ -7,19 +7,10 @@
* SPDX-License-Identifier: GPL-2.0+
*/
-#ifndef __SYS_PROTO_H__
-#define __SYS_PROTO_H__
+#ifndef __MXS_SYS_PROTO_H__
+#define __MXS_SYS_PROTO_H__
-#include <asm/imx-common/regs-common.h>
-#include <../arch-imx/cpu.h>
-
-int mxs_reset_block(struct mxs_register_32 *reg);
-int mxs_wait_mask_set(struct mxs_register_32 *reg,
- uint32_t mask,
- unsigned int timeout);
-int mxs_wait_mask_clr(struct mxs_register_32 *reg,
- uint32_t mask,
- unsigned int timeout);
+#include <asm/imx-common/sys_proto.h>
int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int), int (*cd)(int));
diff --git a/arch/arm/include/asm/imx-common/sys_proto.h b/arch/arm/include/asm/imx-common/sys_proto.h
new file mode 100644
index 0000000..706bca0
--- /dev/null
+++ b/arch/arm/include/asm/imx-common/sys_proto.h
@@ -0,0 +1,45 @@
+/*
+ * (C) Copyright 2009
+ * Stefano Babic, DENX Software Engineering, sbabic at denx.de.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _SYS_PROTO_H_
+#define _SYS_PROTO_H_
+
+#include <asm/imx-common/regs-common.h>
+#include "../arch-imx/cpu.h"
+
+#define soc_rev() (get_cpu_rev() & 0xFF)
+#define is_soc_rev(rev) (soc_rev() == rev)
+
+/* returns MXC_CPU_ value */
+#define cpu_type(rev) (((rev) >> 12) & 0xff)
+/* both macros return/take MXC_CPU_ constants */
+#define get_cpu_type() (cpu_type(get_cpu_rev()))
+#define is_cpu_type(cpu) (get_cpu_type() == cpu)
+
+#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
+
+u32 get_nr_cpus(void);
+u32 get_cpu_rev(void);
+u32 get_cpu_speed_grade_hz(void);
+u32 get_cpu_temp_grade(int *minc, int *maxc);
+const char *get_imx_type(u32 imxtype);
+u32 imx_ddr_size(void);
+void sdelay(unsigned long);
+void set_chipselect_size(int const);
+
+/*
+ * Initializes on-chip ethernet controllers.
+ * to override, implement board_eth_init()
+ */
+int fecmxc_initialize(bd_t *bis);
+u32 get_ahb_clk(void);
+u32 get_periph_clk(void);
+
+int mxs_reset_block(struct mxs_register_32 *reg);
+int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
+int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
+#endif
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3
2015-08-10 12:53 [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Peng Fan
` (2 preceding siblings ...)
2015-08-10 12:53 ` [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h Peng Fan
@ 2015-08-11 10:45 ` Stefano Babic
3 siblings, 0 replies; 10+ messages in thread
From: Stefano Babic @ 2015-08-11 10:45 UTC (permalink / raw)
To: u-boot
On 10/08/2015 14:53, Peng Fan wrote:
> Add cpu types for i.MX2/3.
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Cc: Stefano Babic <sbabic@denx.de>
> ---
> arch/arm/include/asm/arch-imx/cpu.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/arch/arm/include/asm/arch-imx/cpu.h b/arch/arm/include/asm/arch-imx/cpu.h
> index c7f9fff..71208aa 100644
> --- a/arch/arm/include/asm/arch-imx/cpu.h
> +++ b/arch/arm/include/asm/arch-imx/cpu.h
> @@ -4,6 +4,11 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> +#define MXC_CPU_MX23 0x23
> +#define MXC_CPU_MX25 0x25
> +#define MXC_CPU_MX28 0x28
> +#define MXC_CPU_MX31 0x31
> +#define MXC_CPU_MX35 0x35
> #define MXC_CPU_MX51 0x51
> #define MXC_CPU_MX53 0x53
> #define MXC_CPU_MX6SL 0x60
>
Reviewed-by: Stefano Babic <sbabic@denx.de>
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev
2015-08-10 12:53 ` [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev Peng Fan
@ 2015-08-11 10:45 ` Stefano Babic
0 siblings, 0 replies; 10+ messages in thread
From: Stefano Babic @ 2015-08-11 10:45 UTC (permalink / raw)
To: u-boot
On 10/08/2015 14:53, Peng Fan wrote:
> Use new formula for get_cpu_rev, since we need to use this formula
> to do runtime check for all i.MXes.
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Cc: Stefano Babic <sbabic@denx.de>
> ---
> arch/arm/cpu/arm1136/mx31/generic.c | 2 +-
> arch/arm/include/asm/arch-mx31/sys_proto.h | 2 ++
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/cpu/arm1136/mx31/generic.c b/arch/arm/cpu/arm1136/mx31/generic.c
> index 060d46b..fe96670 100644
> --- a/arch/arm/cpu/arm1136/mx31/generic.c
> +++ b/arch/arm/cpu/arm1136/mx31/generic.c
> @@ -175,7 +175,7 @@ u32 get_cpu_rev(void)
>
> for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
> if (srev == mx31_cpu_type[i].srev)
> - return mx31_cpu_type[i].v;
> + return mx31_cpu_type[i].v | (MXC_CPU_MX31 << 12);
>
> return srev | 0x8000;
> }
> diff --git a/arch/arm/include/asm/arch-mx31/sys_proto.h b/arch/arm/include/asm/arch-mx31/sys_proto.h
> index b0dfcba..1626442 100644
> --- a/arch/arm/include/asm/arch-mx31/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx31/sys_proto.h
> @@ -8,6 +8,8 @@
> #ifndef _SYS_PROTO_H_
> #define _SYS_PROTO_H_
>
> +#include "../arch-imx/cpu.h"
> +
> struct mxc_weimcs {
> u32 upper;
> u32 lower;
>
Reviewed-by: Stefano Babic <sbabic@denx.de>
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/4] imx: mxs: reimplement get_cpu_rev
2015-08-10 12:53 ` [U-Boot] [PATCH 3/4] imx: mxs: reimplement get_cpu_rev Peng Fan
@ 2015-08-11 10:45 ` Stefano Babic
0 siblings, 0 replies; 10+ messages in thread
From: Stefano Babic @ 2015-08-11 10:45 UTC (permalink / raw)
To: u-boot
On 10/08/2015 14:53, Peng Fan wrote:
> Rewrite get_cpu_rev, from "static const char *get_cpu_rev(void)" to
> "u32 get_cpu_rev(void)". To align with get_cpu_rev of other i.MXes.
>
> Also write get_imx_type to replace get_cpu_type, since we have
> macro named get_cpu_type.
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Cc: Stefano Babic <sbabic@denx.de>
> ---
> arch/arm/cpu/arm926ejs/mxs/mxs.c | 52 ++++++++++++++-----------------
> arch/arm/include/asm/arch-mxs/sys_proto.h | 1 +
> 2 files changed, 25 insertions(+), 28 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/mxs/mxs.c b/arch/arm/cpu/arm926ejs/mxs/mxs.c
> index ef130ae..30dbf5e 100644
> --- a/arch/arm/cpu/arm926ejs/mxs/mxs.c
> +++ b/arch/arm/cpu/arm926ejs/mxs/mxs.c
> @@ -132,23 +132,7 @@ int arch_cpu_init(void)
> return 0;
> }
>
> -#if defined(CONFIG_DISPLAY_CPUINFO)
> -static const char *get_cpu_type(void)
> -{
> - struct mxs_digctl_regs *digctl_regs =
> - (struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
> -
> - switch (readl(&digctl_regs->hw_digctl_chipid) & HW_DIGCTL_CHIPID_MASK) {
> - case HW_DIGCTL_CHIPID_MX23:
> - return "23";
> - case HW_DIGCTL_CHIPID_MX28:
> - return "28";
> - default:
> - return "??";
> - }
> -}
> -
> -static const char *get_cpu_rev(void)
> +u32 get_cpu_rev(void)
> {
> struct mxs_digctl_regs *digctl_regs =
> (struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
> @@ -158,38 +142,50 @@ static const char *get_cpu_rev(void)
> case HW_DIGCTL_CHIPID_MX23:
> switch (rev) {
> case 0x0:
> - return "1.0";
> case 0x1:
> - return "1.1";
> case 0x2:
> - return "1.2";
> case 0x3:
> - return "1.3";
> case 0x4:
> - return "1.4";
> + return (MXC_CPU_MX23 << 12) | (rev + 0x10);
> default:
> - return "??";
> + return 0;
> }
> case HW_DIGCTL_CHIPID_MX28:
> switch (rev) {
> case 0x1:
> - return "1.2";
> + return (MXC_CPU_MX28 << 12) | 0x12;
> default:
> - return "??";
> + return 0;
> }
> default:
> + return 0;
> + }
> +}
> +
> +#if defined(CONFIG_DISPLAY_CPUINFO)
> +const char *get_imx_type(u32 imxtype)
> +{
> + switch (imxtype) {
> + case MXC_CPU_MX23:
> + return "23"; /* Quad-Plus version of the mx6 */
> + case MXC_CPU_MX28:
> + return "28"; /* Dual-Plus version of the mx6 */
> + default:
> return "??";
> }
> }
>
> int print_cpuinfo(void)
> {
> + u32 cpurev;
> struct mxs_spl_data *data = (struct mxs_spl_data *)
> ((CONFIG_SYS_TEXT_BASE - sizeof(struct mxs_spl_data)) & ~0xf);
>
> - printf("CPU: Freescale i.MX%s rev%s at %d MHz\n",
> - get_cpu_type(),
> - get_cpu_rev(),
> + cpurev = get_cpu_rev();
> + printf("CPU: Freescale i.MX%s rev%d.%d at %d MHz\n",
> + get_imx_type((cpurev & 0xFF000) >> 12),
> + (cpurev & 0x000F0) >> 4,
> + (cpurev & 0x0000F) >> 0,
> mxc_get_clock(MXC_ARM_CLK) / 1000000);
> printf("BOOT: %s\n", mxs_boot_modes[data->boot_mode_idx].mode);
> return 0;
> diff --git a/arch/arm/include/asm/arch-mxs/sys_proto.h b/arch/arm/include/asm/arch-mxs/sys_proto.h
> index 4678723..d6e9fdb 100644
> --- a/arch/arm/include/asm/arch-mxs/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mxs/sys_proto.h
> @@ -11,6 +11,7 @@
> #define __SYS_PROTO_H__
>
> #include <asm/imx-common/regs-common.h>
> +#include <../arch-imx/cpu.h>
>
> int mxs_reset_block(struct mxs_register_32 *reg);
> int mxs_wait_mask_set(struct mxs_register_32 *reg,
>
Reviewed-by: Stefano Babic <sbabic@denx.de>
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h
2015-08-10 12:53 ` [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h Peng Fan
@ 2015-08-11 10:45 ` Stefano Babic
2015-08-12 15:49 ` Stefano Babic
1 sibling, 0 replies; 10+ messages in thread
From: Stefano Babic @ 2015-08-11 10:45 UTC (permalink / raw)
To: u-boot
On 10/08/2015 14:53, Peng Fan wrote:
> Move most macro definitions and prototypes into
> "arch/arm/include/asm/imx-common/sys_proto.h" to avoid duplicated
> function prototypes and marco definitions for different i.MX SoCs.
>
> This patch do not remove the sys_proto.h for different i.MX SoCs,
> because we need to modify lots of driver code and others. This patch
> remove duplicated macros and prototypes and incude "sys_proto.h"
> of imx-common for each sys_proto.h of different i.MX platforms.
> Then later we should avoid add stuff in sys_proto.h of each platform,
> and modify driver to include common sys_proto.h.
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Cc: Stefano Babic <sbabic@denx.de>
> ---
> arch/arm/include/asm/arch-mx31/sys_proto.h | 7 ++---
> arch/arm/include/asm/arch-mx35/sys_proto.h | 12 ++++----
> arch/arm/include/asm/arch-mx5/sys_proto.h | 22 +-------------
> arch/arm/include/asm/arch-mx6/sys_proto.h | 45 +----------------------------
> arch/arm/include/asm/arch-mxs/sys_proto.h | 15 ++--------
> arch/arm/include/asm/imx-common/sys_proto.h | 45 +++++++++++++++++++++++++++++
> 6 files changed, 59 insertions(+), 87 deletions(-)
> create mode 100644 arch/arm/include/asm/imx-common/sys_proto.h
>
> diff --git a/arch/arm/include/asm/arch-mx31/sys_proto.h b/arch/arm/include/asm/arch-mx31/sys_proto.h
> index 1626442..674b25c 100644
> --- a/arch/arm/include/asm/arch-mx31/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx31/sys_proto.h
> @@ -5,10 +5,10 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> +#ifndef _MX31_SYS_PROTO_H_
> +#define _MX31_SYS_PROTO_H_
>
> -#include "../arch-imx/cpu.h"
> +#include <asm/imx-common/sys_proto.h>
>
> struct mxc_weimcs {
> u32 upper;
> @@ -18,5 +18,4 @@ struct mxc_weimcs {
>
> void mxc_setup_weimcs(int cs, const struct mxc_weimcs *weimcs);
> int mxc_mmc_init(bd_t *bis);
> -u32 get_cpu_rev(void);
> #endif
> diff --git a/arch/arm/include/asm/arch-mx35/sys_proto.h b/arch/arm/include/asm/arch-mx35/sys_proto.h
> index 35c0352..0979fda 100644
> --- a/arch/arm/include/asm/arch-mx35/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx35/sys_proto.h
> @@ -5,12 +5,12 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> +#ifndef _MX35_SYS_PROTO_H_
> +#define _MX35_SYS_PROTO_H_
>
> -u32 get_cpu_rev(void);
> -void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config,
> - u32 row, u32 col, u32 dsize, u32 refresh);
> -#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
> +#include <asm/imx-common/sys_proto.h>
> +
> +void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config, u32 row,
> + u32 col, u32 dsize, u32 refresh);
>
> #endif
> diff --git a/arch/arm/include/asm/arch-mx5/sys_proto.h b/arch/arm/include/asm/arch-mx5/sys_proto.h
> index b06c77f..16c9b76 100644
> --- a/arch/arm/include/asm/arch-mx5/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx5/sys_proto.h
> @@ -5,24 +5,4 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> -
> -#include "../arch-imx/cpu.h"
> -
> -#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
> -u32 get_cpu_rev(void);
> -unsigned imx_ddr_size(void);
> -void sdelay(unsigned long);
> -void set_chipselect_size(int const);
> -
> -/*
> - * Initializes on-chip ethernet controllers.
> - * to override, implement board_eth_init()
> - */
> -
> -int fecmxc_initialize(bd_t *bis);
> -u32 get_ahb_clk(void);
> -u32 get_periph_clk(void);
> -
> -#endif
> +#include <asm/imx-common/sys_proto.h>
> diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h
> index eee8ca8..16c9b76 100644
> --- a/arch/arm/include/asm/arch-mx6/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h
> @@ -5,47 +5,4 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> -
> -#include <asm/imx-common/regs-common.h>
> -#include "../arch-imx/cpu.h"
> -
> -#define soc_rev() (get_cpu_rev() & 0xFF)
> -#define is_soc_rev(rev) (soc_rev() == rev)
> -
> -u32 get_nr_cpus(void);
> -u32 get_cpu_rev(void);
> -u32 get_cpu_speed_grade_hz(void);
> -u32 get_cpu_temp_grade(int *minc, int *maxc);
> -
> -/* returns MXC_CPU_ value */
> -#define cpu_type(rev) (((rev) >> 12) & 0xff)
> -
> -/* both macros return/take MXC_CPU_ constants */
> -#define get_cpu_type() (cpu_type(get_cpu_rev()))
> -#define is_cpu_type(cpu) (get_cpu_type() == cpu)
> -
> -const char *get_imx_type(u32 imxtype);
> -unsigned imx_ddr_size(void);
> -void set_chipselect_size(int const);
> -
> -#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
> -
> -/*
> - * Initializes on-chip ethernet controllers.
> - * to override, implement board_eth_init()
> - */
> -
> -int fecmxc_initialize(bd_t *bis);
> -u32 get_ahb_clk(void);
> -u32 get_periph_clk(void);
> -
> -int mxs_reset_block(struct mxs_register_32 *reg);
> -int mxs_wait_mask_set(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> -int mxs_wait_mask_clr(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> -#endif
> +#include <asm/imx-common/sys_proto.h>
> diff --git a/arch/arm/include/asm/arch-mxs/sys_proto.h b/arch/arm/include/asm/arch-mxs/sys_proto.h
> index d6e9fdb..20ff101 100644
> --- a/arch/arm/include/asm/arch-mxs/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mxs/sys_proto.h
> @@ -7,19 +7,10 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef __SYS_PROTO_H__
> -#define __SYS_PROTO_H__
> +#ifndef __MXS_SYS_PROTO_H__
> +#define __MXS_SYS_PROTO_H__
>
> -#include <asm/imx-common/regs-common.h>
> -#include <../arch-imx/cpu.h>
> -
> -int mxs_reset_block(struct mxs_register_32 *reg);
> -int mxs_wait_mask_set(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> -int mxs_wait_mask_clr(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> +#include <asm/imx-common/sys_proto.h>
>
> int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int), int (*cd)(int));
>
> diff --git a/arch/arm/include/asm/imx-common/sys_proto.h b/arch/arm/include/asm/imx-common/sys_proto.h
> new file mode 100644
> index 0000000..706bca0
> --- /dev/null
> +++ b/arch/arm/include/asm/imx-common/sys_proto.h
> @@ -0,0 +1,45 @@
> +/*
> + * (C) Copyright 2009
> + * Stefano Babic, DENX Software Engineering, sbabic at denx.de.
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#ifndef _SYS_PROTO_H_
> +#define _SYS_PROTO_H_
> +
> +#include <asm/imx-common/regs-common.h>
> +#include "../arch-imx/cpu.h"
> +
> +#define soc_rev() (get_cpu_rev() & 0xFF)
> +#define is_soc_rev(rev) (soc_rev() == rev)
> +
> +/* returns MXC_CPU_ value */
> +#define cpu_type(rev) (((rev) >> 12) & 0xff)
> +/* both macros return/take MXC_CPU_ constants */
> +#define get_cpu_type() (cpu_type(get_cpu_rev()))
> +#define is_cpu_type(cpu) (get_cpu_type() == cpu)
> +
> +#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
> +
> +u32 get_nr_cpus(void);
> +u32 get_cpu_rev(void);
> +u32 get_cpu_speed_grade_hz(void);
> +u32 get_cpu_temp_grade(int *minc, int *maxc);
> +const char *get_imx_type(u32 imxtype);
> +u32 imx_ddr_size(void);
> +void sdelay(unsigned long);
> +void set_chipselect_size(int const);
> +
> +/*
> + * Initializes on-chip ethernet controllers.
> + * to override, implement board_eth_init()
> + */
> +int fecmxc_initialize(bd_t *bis);
> +u32 get_ahb_clk(void);
> +u32 get_periph_clk(void);
> +
> +int mxs_reset_block(struct mxs_register_32 *reg);
> +int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
> +int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
> +#endif
>
Reviewed-by: Stefano Babic <sbabic@denx.de>
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h
2015-08-10 12:53 ` [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h Peng Fan
2015-08-11 10:45 ` Stefano Babic
@ 2015-08-12 15:49 ` Stefano Babic
2015-08-13 0:26 ` Peng Fan
1 sibling, 1 reply; 10+ messages in thread
From: Stefano Babic @ 2015-08-12 15:49 UTC (permalink / raw)
To: u-boot
Hi Peng,
On 10/08/2015 14:53, Peng Fan wrote:
> Move most macro definitions and prototypes into
> "arch/arm/include/asm/imx-common/sys_proto.h" to avoid duplicated
> function prototypes and marco definitions for different i.MX SoCs.
>
> This patch do not remove the sys_proto.h for different i.MX SoCs,
> because we need to modify lots of driver code and others. This patch
> remove duplicated macros and prototypes and incude "sys_proto.h"
> of imx-common for each sys_proto.h of different i.MX platforms.
> Then later we should avoid add stuff in sys_proto.h of each platform,
> and modify driver to include common sys_proto.h.
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Cc: Stefano Babic <sbabic@denx.de>
> ---
> arch/arm/include/asm/arch-mx31/sys_proto.h | 7 ++---
> arch/arm/include/asm/arch-mx35/sys_proto.h | 12 ++++----
> arch/arm/include/asm/arch-mx5/sys_proto.h | 22 +-------------
> arch/arm/include/asm/arch-mx6/sys_proto.h | 45 +----------------------------
> arch/arm/include/asm/arch-mxs/sys_proto.h | 15 ++--------
> arch/arm/include/asm/imx-common/sys_proto.h | 45 +++++++++++++++++++++++++++++
> 6 files changed, 59 insertions(+), 87 deletions(-)
> create mode 100644 arch/arm/include/asm/imx-common/sys_proto.h
>
This breaks MX35 boards:
+In file included from include/asm/arch/sys_proto.h:11:0,
+ from arch/arm/cpu/arm1136/mx35/mx35_sdram.c:11:
+arch/arm/include/asm/imx-common/sys_proto.h:38:23: error: unknown type
name 'bd_t'
Reason is:
int fecmxc_initialize(bd_t *bis);
Can you check and resubmit ? Thanks !
> diff --git a/arch/arm/include/asm/arch-mx31/sys_proto.h b/arch/arm/include/asm/arch-mx31/sys_proto.h
> index 1626442..674b25c 100644
> --- a/arch/arm/include/asm/arch-mx31/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx31/sys_proto.h
> @@ -5,10 +5,10 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> +#ifndef _MX31_SYS_PROTO_H_
> +#define _MX31_SYS_PROTO_H_
>
> -#include "../arch-imx/cpu.h"
> +#include <asm/imx-common/sys_proto.h>
>
> struct mxc_weimcs {
> u32 upper;
> @@ -18,5 +18,4 @@ struct mxc_weimcs {
>
> void mxc_setup_weimcs(int cs, const struct mxc_weimcs *weimcs);
> int mxc_mmc_init(bd_t *bis);
> -u32 get_cpu_rev(void);
> #endif
> diff --git a/arch/arm/include/asm/arch-mx35/sys_proto.h b/arch/arm/include/asm/arch-mx35/sys_proto.h
> index 35c0352..0979fda 100644
> --- a/arch/arm/include/asm/arch-mx35/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx35/sys_proto.h
> @@ -5,12 +5,12 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> +#ifndef _MX35_SYS_PROTO_H_
> +#define _MX35_SYS_PROTO_H_
>
> -u32 get_cpu_rev(void);
> -void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config,
> - u32 row, u32 col, u32 dsize, u32 refresh);
> -#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
> +#include <asm/imx-common/sys_proto.h>
> +
> +void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config, u32 row,
> + u32 col, u32 dsize, u32 refresh);
>
> #endif
> diff --git a/arch/arm/include/asm/arch-mx5/sys_proto.h b/arch/arm/include/asm/arch-mx5/sys_proto.h
> index b06c77f..16c9b76 100644
> --- a/arch/arm/include/asm/arch-mx5/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx5/sys_proto.h
> @@ -5,24 +5,4 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> -
> -#include "../arch-imx/cpu.h"
> -
> -#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
> -u32 get_cpu_rev(void);
> -unsigned imx_ddr_size(void);
> -void sdelay(unsigned long);
> -void set_chipselect_size(int const);
> -
> -/*
> - * Initializes on-chip ethernet controllers.
> - * to override, implement board_eth_init()
> - */
> -
> -int fecmxc_initialize(bd_t *bis);
> -u32 get_ahb_clk(void);
> -u32 get_periph_clk(void);
> -
> -#endif
> +#include <asm/imx-common/sys_proto.h>
> diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h
> index eee8ca8..16c9b76 100644
> --- a/arch/arm/include/asm/arch-mx6/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h
> @@ -5,47 +5,4 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef _SYS_PROTO_H_
> -#define _SYS_PROTO_H_
> -
> -#include <asm/imx-common/regs-common.h>
> -#include "../arch-imx/cpu.h"
> -
> -#define soc_rev() (get_cpu_rev() & 0xFF)
> -#define is_soc_rev(rev) (soc_rev() == rev)
> -
> -u32 get_nr_cpus(void);
> -u32 get_cpu_rev(void);
> -u32 get_cpu_speed_grade_hz(void);
> -u32 get_cpu_temp_grade(int *minc, int *maxc);
> -
> -/* returns MXC_CPU_ value */
> -#define cpu_type(rev) (((rev) >> 12) & 0xff)
> -
> -/* both macros return/take MXC_CPU_ constants */
> -#define get_cpu_type() (cpu_type(get_cpu_rev()))
> -#define is_cpu_type(cpu) (get_cpu_type() == cpu)
> -
> -const char *get_imx_type(u32 imxtype);
> -unsigned imx_ddr_size(void);
> -void set_chipselect_size(int const);
> -
> -#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
> -
> -/*
> - * Initializes on-chip ethernet controllers.
> - * to override, implement board_eth_init()
> - */
> -
> -int fecmxc_initialize(bd_t *bis);
> -u32 get_ahb_clk(void);
> -u32 get_periph_clk(void);
> -
> -int mxs_reset_block(struct mxs_register_32 *reg);
> -int mxs_wait_mask_set(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> -int mxs_wait_mask_clr(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> -#endif
> +#include <asm/imx-common/sys_proto.h>
> diff --git a/arch/arm/include/asm/arch-mxs/sys_proto.h b/arch/arm/include/asm/arch-mxs/sys_proto.h
> index d6e9fdb..20ff101 100644
> --- a/arch/arm/include/asm/arch-mxs/sys_proto.h
> +++ b/arch/arm/include/asm/arch-mxs/sys_proto.h
> @@ -7,19 +7,10 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> -#ifndef __SYS_PROTO_H__
> -#define __SYS_PROTO_H__
> +#ifndef __MXS_SYS_PROTO_H__
> +#define __MXS_SYS_PROTO_H__
>
> -#include <asm/imx-common/regs-common.h>
> -#include <../arch-imx/cpu.h>
> -
> -int mxs_reset_block(struct mxs_register_32 *reg);
> -int mxs_wait_mask_set(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> -int mxs_wait_mask_clr(struct mxs_register_32 *reg,
> - uint32_t mask,
> - unsigned int timeout);
> +#include <asm/imx-common/sys_proto.h>
>
> int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int), int (*cd)(int));
>
> diff --git a/arch/arm/include/asm/imx-common/sys_proto.h b/arch/arm/include/asm/imx-common/sys_proto.h
> new file mode 100644
> index 0000000..706bca0
> --- /dev/null
> +++ b/arch/arm/include/asm/imx-common/sys_proto.h
> @@ -0,0 +1,45 @@
> +/*
> + * (C) Copyright 2009
> + * Stefano Babic, DENX Software Engineering, sbabic at denx.de.
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#ifndef _SYS_PROTO_H_
> +#define _SYS_PROTO_H_
> +
> +#include <asm/imx-common/regs-common.h>
> +#include "../arch-imx/cpu.h"
> +
> +#define soc_rev() (get_cpu_rev() & 0xFF)
> +#define is_soc_rev(rev) (soc_rev() == rev)
> +
> +/* returns MXC_CPU_ value */
> +#define cpu_type(rev) (((rev) >> 12) & 0xff)
> +/* both macros return/take MXC_CPU_ constants */
> +#define get_cpu_type() (cpu_type(get_cpu_rev()))
> +#define is_cpu_type(cpu) (get_cpu_type() == cpu)
> +
> +#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
> +
> +u32 get_nr_cpus(void);
> +u32 get_cpu_rev(void);
> +u32 get_cpu_speed_grade_hz(void);
> +u32 get_cpu_temp_grade(int *minc, int *maxc);
> +const char *get_imx_type(u32 imxtype);
> +u32 imx_ddr_size(void);
> +void sdelay(unsigned long);
> +void set_chipselect_size(int const);
> +
> +/*
> + * Initializes on-chip ethernet controllers.
> + * to override, implement board_eth_init()
> + */
> +int fecmxc_initialize(bd_t *bis);
> +u32 get_ahb_clk(void);
> +u32 get_periph_clk(void);
> +
> +int mxs_reset_block(struct mxs_register_32 *reg);
> +int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
> +int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
> +#endif
>
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h
2015-08-12 15:49 ` Stefano Babic
@ 2015-08-13 0:26 ` Peng Fan
0 siblings, 0 replies; 10+ messages in thread
From: Peng Fan @ 2015-08-13 0:26 UTC (permalink / raw)
To: u-boot
Hi Stefano,
On Wed, Aug 12, 2015 at 05:49:15PM +0200, Stefano Babic wrote:
>Hi Peng,
>
>On 10/08/2015 14:53, Peng Fan wrote:
>> Move most macro definitions and prototypes into
>> "arch/arm/include/asm/imx-common/sys_proto.h" to avoid duplicated
>> function prototypes and marco definitions for different i.MX SoCs.
>>
>> This patch do not remove the sys_proto.h for different i.MX SoCs,
>> because we need to modify lots of driver code and others. This patch
>> remove duplicated macros and prototypes and incude "sys_proto.h"
>> of imx-common for each sys_proto.h of different i.MX platforms.
>> Then later we should avoid add stuff in sys_proto.h of each platform,
>> and modify driver to include common sys_proto.h.
>>
>> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
>> Cc: Stefano Babic <sbabic@denx.de>
>> ---
>> arch/arm/include/asm/arch-mx31/sys_proto.h | 7 ++---
>> arch/arm/include/asm/arch-mx35/sys_proto.h | 12 ++++----
>> arch/arm/include/asm/arch-mx5/sys_proto.h | 22 +-------------
>> arch/arm/include/asm/arch-mx6/sys_proto.h | 45 +----------------------------
>> arch/arm/include/asm/arch-mxs/sys_proto.h | 15 ++--------
>> arch/arm/include/asm/imx-common/sys_proto.h | 45 +++++++++++++++++++++++++++++
>> 6 files changed, 59 insertions(+), 87 deletions(-)
>> create mode 100644 arch/arm/include/asm/imx-common/sys_proto.h
>>
>
>This breaks MX35 boards:
>
>+In file included from include/asm/arch/sys_proto.h:11:0,
>+ from arch/arm/cpu/arm1136/mx35/mx35_sdram.c:11:
>+arch/arm/include/asm/imx-common/sys_proto.h:38:23: error: unknown type
>name 'bd_t'
>
>Reason is:
>
>int fecmxc_initialize(bd_t *bis);
>
>Can you check and resubmit ? Thanks !
Oh. I'll check this. I missed to build mx35 target.
[...]
Regards,
Peng.
--
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-08-13 0:26 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-10 12:53 [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Peng Fan
2015-08-10 12:53 ` [U-Boot] [PATCH 2/4] imx: mx31 use new formula for get_cpu_rev Peng Fan
2015-08-11 10:45 ` Stefano Babic
2015-08-10 12:53 ` [U-Boot] [PATCH 3/4] imx: mxs: reimplement get_cpu_rev Peng Fan
2015-08-11 10:45 ` Stefano Babic
2015-08-10 12:53 ` [U-Boot] [PATCH 4/4] imx-common: consolidate macros and prototypes into sys_proto.h Peng Fan
2015-08-11 10:45 ` Stefano Babic
2015-08-12 15:49 ` Stefano Babic
2015-08-13 0:26 ` Peng Fan
2015-08-11 10:45 ` [U-Boot] [PATCH 1/4] imx: add cpu type for i.MX2 and i.MX3 Stefano Babic
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.