[U-Boot] [PATCH V2 4/5] imx: mxs: reimplement get_cpu_rev
Stefano Babic
sbabic at denx.de
Sun Aug 23 17:23:54 CEST 2015
On 13/08/2015 04:55, 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 at freescale.com>
> Cc: Stefano Babic <sbabic at denx.de>
> Reviewed-by: Stefano Babic <sbabic at denx.de>
> ---
>
> Changes v2:
> none.
>
> 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,
>
Applied to u-boot-imx, thanks !
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
=====================================================================
More information about the U-Boot
mailing list