From patchwork Fri Jun 2 15:00:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam Protsenko X-Patchwork-Id: 101278 Delivered-To: patch@linaro.org Received: by 10.140.96.100 with SMTP id j91csp439808qge; Fri, 2 Jun 2017 08:00:10 -0700 (PDT) X-Received: by 10.80.148.129 with SMTP id s1mr2229628eda.106.1496415610771; Fri, 02 Jun 2017 08:00:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1496415610; cv=none; d=google.com; s=arc-20160816; b=FSNQyDQqvM5kENs3i8uTOcTlK9prMq58yGXtzdcC1uGJHHtIUd4pAYtM1XwPuWB8Jy KZuxdw+y9BjVR7ejgH3WGlL5D7iDHjwqOGXu9PLlyu3caeI8fZhNDfzRMERaNLaJYl/B CDpjXJXUVzpIPaGxjXJGOdPCOOGRg9xy7DpSpM3Hj8iQ3ZFCHkjHCt7EcQKPW8P91kYu QEnpELR2NXvFxXlS4iLoZEZQuDuTomPR0wJm4RYgB5zFCxnosX0EvMesQEFsc3gFMGDY wHCVgeV6PeYRTpG2XYF+aFU1cUc+9hohMQW6LQSeriM8UdaYmJ0T6leDg9WYtT2bA2Mj kbWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:cc:message-id:date:to:from :dkim-signature:arc-authentication-results; bh=cOQ3OCVpA2S9TMxB/lHJkqXVrx3u18TIYHkTlF3Vabs=; b=kBHtA7n8VpLYjrWASOZZacZJmO5LogaqwPgMQUmsHl70zpVQrEnReO6FnWj1F4TZlA +vZL1W6O0JmIrAtND31MjbLJW34N++MV9hjT0b2IRSDUGy0aBH+4SLkrxc4yWhy2AhCL ArL2/KVKL3JTXyTagBTaD/4ydEe2I4J3nqhOieKG/3TWStDU8Tt3yFGTeyds2Vg50Ivr dvJnGhK7HusW+bQdFe6/S0XfsDm4mKQnlZcscJyStdiH48lImwDeZWsh8H8opSpGrwSl QUD3eZytWqqrZxuDrRImvsMVSVioq4xFkpSYsJbRE8cbOmHb3bBZBUBhnDZv/QFJemg3 jaAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.denx.de (dione.denx.de. [81.169.180.215]) by mx.google.com with ESMTP id l33si2899745edd.276.2017.06.02.08.00.10; Fri, 02 Jun 2017 08:00:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) client-ip=81.169.180.215; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.denx.de (Postfix, from userid 105) id 49A1CC21D10; Fri, 2 Jun 2017 15:00:10 +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 0142BC21C5C; Fri, 2 Jun 2017 15:00:06 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6A96EC21C5C; Fri, 2 Jun 2017 15:00:04 +0000 (UTC) Received: from mail-lf0-f49.google.com (mail-lf0-f49.google.com [209.85.215.49]) by lists.denx.de (Postfix) with ESMTPS id C1260C21C4F for ; Fri, 2 Jun 2017 15:00:03 +0000 (UTC) Received: by mail-lf0-f49.google.com with SMTP id a136so30045254lfa.0 for ; Fri, 02 Jun 2017 08:00:03 -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=U/zfepDz1nI+MT4e0d/uDWJ5OWeLrji7ytVrQtL/c6g=; b=iQSezvO4zcJIVuOoJ9wg/3v3VaLOpPdohTuIiOmOX/RJW4W+pkRn3kkMVaXK1w+Tb5 mtnxZm1OLyatztph/uS2VgiqhOXI6ZZwYdKffuq2ezpQv5OKtE27iN5UhCAKKOA4h873 UH7W+Ioyy4y9Di/c37tY04q3uSm1izzTMU3G0= 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=U/zfepDz1nI+MT4e0d/uDWJ5OWeLrji7ytVrQtL/c6g=; b=Ev4N6BtQlv7VMR3eoby8HaYMb+iUDEWkl4/pnKAlFxUlR/QsIOxF+IqKki37cCztzR 0x4/YUkjfKsAfkX3H/5ApqvG3G/b0LZCdvTJABSUaFxqlm9BEt9qvMwxzy+0mRt/pArt krbFIULMPX3cVWWYAOelWYxFU6ZSNic7+7YT/rTzqYPYldlBhNZ0BorkWAUMwIgM1/iE LxvQYHQRt/U+lfrAjpyPQI9iWv9g7RAkrPgzkzJoR6ue7Of78po52qBDza5Cjvf9k0Bp fuH/K9EGLQCKlDWXgz/QYwGRbZylDT3z1jAyWItZhcgoQcKHyGG+DhB2igFexXlKhNb8 bCMg== X-Gm-Message-State: AODbwcA8E95jbHTvnlLO3fZCIS3P5PKBsLwuGXaGcdNpkdtVd72Nz4Nf Uw690onQ72NAHk0JHaKpdw== X-Received: by 10.46.14.26 with SMTP id 26mr2432859ljo.71.1496415602582; Fri, 02 Jun 2017 08:00:02 -0700 (PDT) Received: from localhost (187-227-133-95.pool.ukrtel.net. [95.133.227.187]) by smtp.gmail.com with ESMTPSA id r80sm4977939lff.63.2017.06.02.08.00.01 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 02 Jun 2017 08:00:01 -0700 (PDT) From: Sam Protsenko To: u-boot@lists.denx.de Date: Fri, 2 Jun 2017 18:00:00 +0300 Message-Id: <20170602150000.679-1-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.11.0 Cc: Praneeth Bajjuri , Tom Rini Subject: [U-Boot] [PATCH v2] 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 - Remove DEVICE_MASK and DEVICE_GP definitions as they are not used (DEVICE_TYPE_MASK and GP_DEVICE are used instead) - Guard structs in omap_common.h with #ifndefs, because otherwise 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 +352.5 bss -1.4 data +3.5 rodata +300.0 spl/u-boot-spl:all +284.7 spl/u-boot-spl:data +2.2 spl/u-boot-spl:rodata +252.0 spl/u-boot-spl:text +30.5 text +50.4 (no errors to report) Tested on AM57x EVM and BeagleBoard xM. Signed-off-by: Sam Protsenko --- Changes in v2: - fixed crash on OMAP3 (move hw_data_init() from arch_cpu_init_dm() to s_init()) - guard structures in omap_common.h with #ifndefs rather than extracting common definitions to omap_am_common.h 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/arch-omap4/omap.h | 1 - arch/arm/include/asm/arch-omap5/omap.h | 1 - arch/arm/include/asm/omap_common.h | 11 ++++++++++- 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 | 7 +++++++ 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 + 20 files changed, 122 insertions(+), 36 deletions(-) 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/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h index b86a776840..1a3ff7dc2f 100644 --- a/arch/arm/include/asm/arch-omap4/omap.h +++ b/arch/arm/include/asm/arch-omap4/omap.h @@ -100,7 +100,6 @@ struct s32ktimer { #define DEVICE_TYPE_SHIFT (0x8) #define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT) -#define DEVICE_GP 0x3 #endif /* __ASSEMBLY__ */ diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h index 8f31da1a7b..2f005dd3ad 100644 --- a/arch/arm/include/asm/arch-omap5/omap.h +++ b/arch/arm/include/asm/arch-omap5/omap.h @@ -127,7 +127,6 @@ struct s32ktimer { #define DEVICE_TYPE_SHIFT 0x6 #define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT) -#define DEVICE_GP 0x3 /* Output impedance control */ #define ds_120_ohm 0x0 diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index c1a70b15d0..ac9ba428d8 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -484,6 +484,7 @@ struct omap_sys_ctrl_regs { u32 ctrl_core_sma_sw_1; }; +#ifndef CONFIG_AM33XX struct dpll_params { u32 m; u32 n; @@ -516,6 +517,7 @@ struct dpll_regs { u32 cm_div_h23_dpll; u32 cm_div_h24_dpll; }; +#endif /* CONFIG_AM33XX */ struct dplls { const struct dpll_params *mpu; @@ -539,6 +541,7 @@ struct pmic_data { int (*pmic_write)(u8 sa, u8 reg_addr, u8 reg_data); }; +#ifndef CONFIG_AM33XX enum { OPP_LOW, OPP_NOM, @@ -584,6 +587,7 @@ struct vcores_data { struct volts eve; struct volts iva; }; +#endif /* CONFIG_AM33XX */ extern struct prcm_regs const **prcm; extern struct prcm_regs const omap5_es1_prcm; @@ -595,6 +599,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; @@ -611,6 +617,7 @@ const struct dpll_params *get_iva_dpll_params(struct dplls const *); const struct dpll_params *get_usb_dpll_params(struct dplls const *); const struct dpll_params *get_abe_dpll_params(struct dplls const *); +#ifndef CONFIG_AM33XX void do_enable_clocks(u32 const *clk_domains, u32 const *clk_modules_hw_auto, u32 const *clk_modules_explicit_en, @@ -619,6 +626,7 @@ void do_enable_clocks(u32 const *clk_domains, void do_disable_clocks(u32 const *clk_domains, u32 const *clk_modules_disable, u8 wait_for_disable); +#endif /* CONFIG_AM33XX */ void setup_post_dividers(u32 const base, const struct dpll_params *params); @@ -630,7 +638,9 @@ void enable_basic_uboot_clocks(void); void enable_usb_clocks(int index); void disable_usb_clocks(int index); +#ifndef CONFIG_AM33XX void scale_vcores(struct vcores_data const *); +#endif /* CONFIG_AM33XX */ int get_voltrail_opp(int rail_offset); u32 get_offset_code(u32 volt_offset, struct pmic_data *pmic); void do_scale_vcore(u32 vcore_reg, u32 volt_mv, struct pmic_data *pmic); @@ -748,7 +758,6 @@ static inline u8 is_dra72x(void) * 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 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..b728365c52 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..cd8e302272 100644 --- a/arch/arm/mach-omap2/omap3/board.c +++ b/arch/arm/mach-omap2/omap3/board.c @@ -173,6 +173,11 @@ void try_unlock_memory(void) return; } +void early_system_init(void) +{ + hw_data_init(); +} + /****************************************************************************** * Routine: s_init * Description: Does early system init of muxing and clocks. @@ -181,6 +186,7 @@ void try_unlock_memory(void) void s_init(void) { watchdog_init(); + early_system_init(); try_unlock_memory(); @@ -204,6 +210,7 @@ void s_init(void) #ifdef CONFIG_SPL_BUILD void board_init_f(ulong dummy) { + early_system_init(); mem_init(); } #endif 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..155f5b245d 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..b5c4ed70b8 100644 --- a/board/ti/am335x/board.c +++ b/board/ti/am335x/board.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include