From patchwork Wed May 31 16:51:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam Protsenko X-Patchwork-Id: 769271 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3wdGj74xC7z9s2Q for ; Thu, 1 Jun 2017 02:51:55 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="FxIIOPhH"; dkim-atps=neutral Received: by lists.denx.de (Postfix, from userid 105) id 73F1CC21C61; Wed, 31 May 2017 16:51:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 74298C21C44; Wed, 31 May 2017 16:51:46 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 475BDC21C44; Wed, 31 May 2017 16:51:45 +0000 (UTC) Received: from mail-lf0-f51.google.com (mail-lf0-f51.google.com [209.85.215.51]) by lists.denx.de (Postfix) with ESMTPS id 0889EC21C3D for ; Wed, 31 May 2017 16:51:44 +0000 (UTC) Received: by mail-lf0-f51.google.com with SMTP id c184so8158942lfe.2 for ; Wed, 31 May 2017 09:51:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=iGVcLjUbePC/Uet+oB9PU0pg6FA36AcY9OskkjQ70d8=; b=FxIIOPhHN5Bzkjpx4SpzXoLWA3ozbu5zuZqnOLEQ623GLZzOoFBqerD/GpJW9MQ9dK dXNuaU7DvXvKm/A/2X6dnPTstpn2Ya0yMXT9klHK+SDblP3dApEFJBq0a7ITOREYeJwN glpjsjKP/p1voCSVSxbz1J29K5sPKzMx3JrSU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=iGVcLjUbePC/Uet+oB9PU0pg6FA36AcY9OskkjQ70d8=; b=Gxn6fsreJXgsyCpIhMBBhsbu8y/j2bSyIQUu/vfyI27jDFtGn7qCUIlow06O2eyO1W D+vp6AYhdV1L9WWZP4HZ+G0/TUCUBNSg2UQewtW7APJzu3E0ELVQrTVWaZSoG10PhxMD irPsFmR9hnk4FIOFkBHdRWg32lIYbLQ3Xp9FI7GhEJy91APPQsumvAdJ23lhenWEI3Jv EAKRYXE7GIaKV/n+98NpsPwGY3KJfVpsErVGEC8zZqULhlqZjzg7qHEh3ORymViiLZlk 3EvFIJCXx5cVfYUqrkDZDqGOWOxBvKY9+7ZMHddOC4XNk2ayoEg7gGpuETImsI3mBO0I 1LcQ== X-Gm-Message-State: AODbwcCBYfIdDlCs5BY7Bg6jbLMeP/hoj1mejeMG28i/+jy0R9SgPDy7 dGhhTYkzmhYpT/2FJbFJ9g== X-Received: by 10.25.221.155 with SMTP id w27mr7948214lfi.72.1496249502986; Wed, 31 May 2017 09:51:42 -0700 (PDT) Received: from localhost ([195.238.92.132]) by smtp.gmail.com with ESMTPSA id z3sm3708518lff.66.2017.05.31.09.51.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 31 May 2017 09:51:41 -0700 (PDT) From: Sam Protsenko To: u-boot@lists.denx.de Date: Wed, 31 May 2017 19:51:39 +0300 Message-Id: <20170531165139.24255-1-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.11.0 Cc: Praneeth Bajjuri , Tom Rini Subject: [U-Boot] [PATCH] arm: omap: Unify get_device_type() function X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Refactor OMAP3/4/5 code so that we have only one get_device_type() function for all platforms. Details: - Add ctrl variable for AM33xx and OMAP3 platforms (like it's done for OMAP4/5), so we can obtain status register in common way - For now ctrl structure for AM33xx/OMAP3 contains only status register address - Run hw_data_init() in order to assign ctrl to proper structure - Extract some definitions to omap_am_common.h, because including omap_common.h in am33xx board files breaks compilation Buildman script was run for all OMAP boards. Result output: arm: (for 38/616 boards) all +348.9 bss -6.2 data +3.5 rodata +300.0 spl/u-boot-spl:all +281.4 spl/u-boot-spl:data +2.2 spl/u-boot-spl:rodata +252.0 spl/u-boot-spl:text +27.2 text +51.7 (no errors to report) Tested on AM57x EVM. Signed-off-by: Sam Protsenko --- arch/arm/include/asm/arch-am33xx/cpu.h | 6 ------ arch/arm/include/asm/arch-am33xx/omap.h | 3 +++ arch/arm/include/asm/arch-omap3/omap.h | 3 +++ arch/arm/include/asm/omap_am_common.h | 21 +++++++++++++++++++++ arch/arm/include/asm/omap_common.h | 16 +++------------- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/am33xx/Makefile | 2 ++ arch/arm/mach-omap2/am33xx/board.c | 3 +++ arch/arm/mach-omap2/am33xx/hw_data.c | 19 +++++++++++++++++++ arch/arm/mach-omap2/am33xx/prcm-regs.c | 15 +++++++++++++++ arch/arm/mach-omap2/am33xx/sys_info.c | 10 ---------- arch/arm/mach-omap2/hwinit-common.c | 9 --------- arch/arm/mach-omap2/omap3/Makefile | 2 ++ arch/arm/mach-omap2/omap3/board.c | 12 ++++++++++++ arch/arm/mach-omap2/omap3/hw_data.c | 19 +++++++++++++++++++ arch/arm/mach-omap2/omap3/prcm-regs.c | 15 +++++++++++++++ arch/arm/mach-omap2/omap3/sys_info.c | 9 +-------- arch/arm/mach-omap2/sysinfo-common.c | 21 +++++++++++++++++++++ board/ti/am335x/board.c | 1 + 19 files changed, 141 insertions(+), 46 deletions(-) create mode 100644 arch/arm/include/asm/omap_am_common.h create mode 100644 arch/arm/mach-omap2/am33xx/hw_data.c create mode 100644 arch/arm/mach-omap2/am33xx/prcm-regs.c create mode 100644 arch/arm/mach-omap2/omap3/hw_data.c create mode 100644 arch/arm/mach-omap2/omap3/prcm-regs.c create mode 100644 arch/arm/mach-omap2/sysinfo-common.c diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h index 8cae291ea0..e8d7d549e8 100644 --- a/arch/arm/include/asm/arch-am33xx/cpu.h +++ b/arch/arm/include/asm/arch-am33xx/cpu.h @@ -36,12 +36,6 @@ #define TCFG_RESET BIT(0) /* software reset */ #define TCFG_EMUFREE BIT(1) /* behaviour of tmr on debug */ #define TCFG_IDLEMOD_SHIFT (2) /* power management */ -/* device type */ -#define DEVICE_MASK (BIT(8) | BIT(9) | BIT(10)) -#define TST_DEVICE 0x0 -#define EMU_DEVICE 0x1 -#define HS_DEVICE 0x2 -#define GP_DEVICE 0x3 /* cpu-id for AM43XX AM33XX and TI81XX family */ #define AM437X 0xB98C diff --git a/arch/arm/include/asm/arch-am33xx/omap.h b/arch/arm/include/asm/arch-am33xx/omap.h index 3293caaca4..5a1b95c2c0 100644 --- a/arch/arm/include/asm/arch-am33xx/omap.h +++ b/arch/arm/include/asm/arch-am33xx/omap.h @@ -41,6 +41,9 @@ struct omap_boot_parameters { unsigned char boot_device; unsigned char reset_reason; }; + +#define DEVICE_TYPE_SHIFT 0x8 +#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT) #endif #endif diff --git a/arch/arm/include/asm/arch-omap3/omap.h b/arch/arm/include/asm/arch-omap3/omap.h index db763e49a3..8933f5489f 100644 --- a/arch/arm/include/asm/arch-omap3/omap.h +++ b/arch/arm/include/asm/arch-omap3/omap.h @@ -91,6 +91,9 @@ struct s32ktimer { unsigned int s32k_cr; /* 0x10 */ }; +#define DEVICE_TYPE_SHIFT 0x8 +#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT) + #endif /* __ASSEMBLY__ */ #ifndef __ASSEMBLY__ diff --git a/arch/arm/include/asm/omap_am_common.h b/arch/arm/include/asm/omap_am_common.h new file mode 100644 index 0000000000..70aa15b22c --- /dev/null +++ b/arch/arm/include/asm/omap_am_common.h @@ -0,0 +1,21 @@ +/* + * Common definitions for OMAP/AM based boards. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _OMAP_AM_COMMON_H_ +#define _OMAP_AM_COMMON_H_ + +/* Silicon device type */ +#define TST_DEVICE 0x0 +#define EMU_DEVICE 0x1 +#define HS_DEVICE 0x2 +#define GP_DEVICE 0x3 + +void hw_data_init(void); + +#endif /* _OMAP_AM_COMMON_H_ */ diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index c1a70b15d0..39eb3162af 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -12,6 +12,7 @@ #ifndef __ASSEMBLY__ #include +#include #define NUM_SYS_CLKS 7 @@ -595,6 +596,8 @@ extern struct dplls dra7xx_dplls; extern struct vcores_data const **omap_vcores; extern const u32 sys_clk_array[8]; extern struct omap_sys_ctrl_regs const **ctrl; +extern struct omap_sys_ctrl_regs const am33xx_ctrl; +extern struct omap_sys_ctrl_regs const omap3_ctrl; extern struct omap_sys_ctrl_regs const omap4_ctrl; extern struct omap_sys_ctrl_regs const omap5_ctrl; extern struct omap_sys_ctrl_regs const dra7xx_ctrl; @@ -602,8 +605,6 @@ extern struct omap_sys_ctrl_regs const dra7xx_ctrl; extern struct pmic_data tps659038; extern struct pmic_data lp8733; -void hw_data_init(void); - const struct dpll_params *get_mpu_dpll_params(struct dplls const *); const struct dpll_params *get_core_dpll_params(struct dplls const *); const struct dpll_params *get_per_dpll_params(struct dplls const *); @@ -745,17 +746,6 @@ static inline u8 is_dra72x(void) #define DRA722_ES2_0 0x07220200 /* - * silicon device type - * Moving to common from cpu.h, since it is shared by various omap devices - */ -#define DEVICE_MASK (BIT(8) | BIT(9) | BIT(10)) -#define TST_DEVICE 0x0 -#define EMU_DEVICE 0x1 -#define HS_DEVICE 0x2 -#define GP_DEVICE 0x3 - - -/* * SRAM scratch space entries */ #define OMAP_SRAM_SCRATCH_OMAP_REV SRAM_SCRATCH_SPACE_ADDR diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index aa3986dddb..d43085ca98 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -20,6 +20,7 @@ endif endif obj-y += utils.o +obj-y += sysinfo-common.o ifneq ($(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),) obj-y += hwinit-common.o obj-y += clocks-common.o diff --git a/arch/arm/mach-omap2/am33xx/Makefile b/arch/arm/mach-omap2/am33xx/Makefile index 05cc8a11c5..50dd9d84cc 100644 --- a/arch/arm/mach-omap2/am33xx/Makefile +++ b/arch/arm/mach-omap2/am33xx/Makefile @@ -18,6 +18,8 @@ obj-y += ddr.o obj-y += emif4.o obj-y += board.o obj-y += mux.o +obj-y += prcm-regs.o +obj-y += hw_data.o obj-$(CONFIG_CLOCK_SYNTHESIZER) += clk_synthesizer.o diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c index a8b5d13238..26e3b4fe3b 100644 --- a/arch/arm/mach-omap2/am33xx/board.c +++ b/arch/arm/mach-omap2/am33xx/board.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -326,6 +327,7 @@ void early_system_init(void) #ifdef CONFIG_SPL_BUILD void board_init_f(ulong dummy) { + hw_data_init(); early_system_init(); board_early_init_f(); sdram_init(); @@ -340,6 +342,7 @@ void board_init_f(ulong dummy) int arch_cpu_init_dm(void) { + hw_data_init(); #ifndef CONFIG_SKIP_LOWLEVEL_INIT early_system_init(); #endif diff --git a/arch/arm/mach-omap2/am33xx/hw_data.c b/arch/arm/mach-omap2/am33xx/hw_data.c new file mode 100644 index 0000000000..63e55cff77 --- /dev/null +++ b/arch/arm/mach-omap2/am33xx/hw_data.c @@ -0,0 +1,19 @@ +/* + * HW data initialization for AM33xx. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +struct omap_sys_ctrl_regs const **ctrl = + (struct omap_sys_ctrl_regs const **)OMAP_SRAM_SCRATCH_SYS_CTRL; + +void hw_data_init(void) +{ + *ctrl = &am33xx_ctrl; +} diff --git a/arch/arm/mach-omap2/am33xx/prcm-regs.c b/arch/arm/mach-omap2/am33xx/prcm-regs.c new file mode 100644 index 0000000000..c9a3af6584 --- /dev/null +++ b/arch/arm/mach-omap2/am33xx/prcm-regs.c @@ -0,0 +1,15 @@ +/* + * HW regs data for AM33xx. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +struct omap_sys_ctrl_regs const am33xx_ctrl = { + .control_status = CTRL_BASE + 0x40, +}; diff --git a/arch/arm/mach-omap2/am33xx/sys_info.c b/arch/arm/mach-omap2/am33xx/sys_info.c index 564bae6793..ea434aaf33 100644 --- a/arch/arm/mach-omap2/am33xx/sys_info.c +++ b/arch/arm/mach-omap2/am33xx/sys_info.c @@ -51,16 +51,6 @@ u32 get_cpu_type(void) } /** - * get_device_type(): tell if GP/HS/EMU/TST - */ -u32 get_device_type(void) -{ - int mode; - mode = readl(&cstat->statusreg) & (DEVICE_MASK); - return mode >>= 8; -} - -/** * get_sysboot_value(void) - return SYS_BOOT[4:0] */ u32 get_sysboot_value(void) diff --git a/arch/arm/mach-omap2/hwinit-common.c b/arch/arm/mach-omap2/hwinit-common.c index c090442598..7f6db3cf37 100644 --- a/arch/arm/mach-omap2/hwinit-common.c +++ b/arch/arm/mach-omap2/hwinit-common.c @@ -278,15 +278,6 @@ int checkboard(void) return 0; } -/* - * get_device_type(): tell if GP/HS/EMU/TST - */ -u32 get_device_type(void) -{ - return (readl((*ctrl)->control_status) & - (DEVICE_TYPE_MASK)) >> DEVICE_TYPE_SHIFT; -} - #if defined(CONFIG_DISPLAY_CPUINFO) /* * Print CPU information diff --git a/arch/arm/mach-omap2/omap3/Makefile b/arch/arm/mach-omap2/omap3/Makefile index 06cc9f2658..61a76b6f66 100644 --- a/arch/arm/mach-omap2/omap3/Makefile +++ b/arch/arm/mach-omap2/omap3/Makefile @@ -14,6 +14,8 @@ obj-y += board.o obj-y += boot.o obj-y += clock.o obj-y += sys_info.o +obj-y += prcm-regs.o +obj-y += hw_data.o ifdef CONFIG_SPL_BUILD obj-$(CONFIG_SPL_OMAP3_ID_NAND) += spl_id_nand.o endif diff --git a/arch/arm/mach-omap2/omap3/board.c b/arch/arm/mach-omap2/omap3/board.c index 01df579df2..fd3307bf59 100644 --- a/arch/arm/mach-omap2/omap3/board.c +++ b/arch/arm/mach-omap2/omap3/board.c @@ -201,13 +201,25 @@ void s_init(void) #endif } +void early_system_init(void) +{ + hw_data_init(); +} + #ifdef CONFIG_SPL_BUILD void board_init_f(ulong dummy) { + early_system_init(); mem_init(); } #endif +int arch_cpu_init_dm(void) +{ + early_system_init(); + return 0; +} + /* * Routine: misc_init_r * Description: A basic misc_init_r that just displays the die ID diff --git a/arch/arm/mach-omap2/omap3/hw_data.c b/arch/arm/mach-omap2/omap3/hw_data.c new file mode 100644 index 0000000000..53b220aec3 --- /dev/null +++ b/arch/arm/mach-omap2/omap3/hw_data.c @@ -0,0 +1,19 @@ +/* + * HW data initialization for OMAP3. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +struct omap_sys_ctrl_regs const **ctrl = + (struct omap_sys_ctrl_regs const **)OMAP_SRAM_SCRATCH_SYS_CTRL; + +void hw_data_init(void) +{ + *ctrl = &omap3_ctrl; +} diff --git a/arch/arm/mach-omap2/omap3/prcm-regs.c b/arch/arm/mach-omap2/omap3/prcm-regs.c new file mode 100644 index 0000000000..ca29ce9bda --- /dev/null +++ b/arch/arm/mach-omap2/omap3/prcm-regs.c @@ -0,0 +1,15 @@ +/* + * HW regs data for OMAP3. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include + +struct omap_sys_ctrl_regs const omap3_ctrl = { + .control_status = OMAP34XX_CTRL_BASE + 0x2F0, +}; diff --git a/arch/arm/mach-omap2/omap3/sys_info.c b/arch/arm/mach-omap2/omap3/sys_info.c index 7e6c2633f9..433337419f 100644 --- a/arch/arm/mach-omap2/omap3/sys_info.c +++ b/arch/arm/mach-omap2/omap3/sys_info.c @@ -17,6 +17,7 @@ #include /* get mem tables */ #include #include +#include #include #include @@ -236,14 +237,6 @@ u32 get_boot_type(void) return (readl(&ctrl_base->status) & SYSBOOT_MASK); } -/************************************************************* - * get_device_type(): tell if GP/HS/EMU/TST - *************************************************************/ -u32 get_device_type(void) -{ - return ((readl(&ctrl_base->status) & (DEVICE_MASK)) >> 8); -} - #ifdef CONFIG_DISPLAY_CPUINFO /** * Print CPU information diff --git a/arch/arm/mach-omap2/sysinfo-common.c b/arch/arm/mach-omap2/sysinfo-common.c new file mode 100644 index 0000000000..1dc7051ab3 --- /dev/null +++ b/arch/arm/mach-omap2/sysinfo-common.c @@ -0,0 +1,21 @@ +/* + * System information routines for all OMAP based boards. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include + +/** + * Tell if device is GP/HS/EMU/TST. + */ +u32 get_device_type(void) +{ + return (readl((*ctrl)->control_status) & DEVICE_TYPE_MASK) >> + DEVICE_TYPE_SHIFT; +} diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c index 517965c0f0..b8e355ea49 100644 --- a/board/ti/am335x/board.c +++ b/board/ti/am335x/board.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include