1d34efc76SSteve Sakoman /* 2d34efc76SSteve Sakoman * (C) Copyright 2010 3d34efc76SSteve Sakoman * Texas Instruments, <www.ti.com> 4d34efc76SSteve Sakoman * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6d34efc76SSteve Sakoman */ 7d34efc76SSteve Sakoman 8d34efc76SSteve Sakoman #ifndef _SYS_PROTO_H_ 9d34efc76SSteve Sakoman #define _SYS_PROTO_H_ 10d34efc76SSteve Sakoman 11508a58faSSricharan #include <asm/arch/omap.h> 12af1d002fSLokesh Vutla #include <asm/arch/clock.h> 13d34efc76SSteve Sakoman #include <asm/io.h> 14d2f18c27SAneesh V #include <asm/omap_common.h> 156aff0509Spekon gupta #include <linux/mtd/omap_gpmc.h> 16469ec1e3SAneesh V #include <asm/arch/mux_omap4.h> 17939911a6STom Rini #include <asm/ti-common/sys_proto.h> 18d34efc76SSteve Sakoman 194a0eb757SSRICHARAN R DECLARE_GLOBAL_DATA_PTR; 204a0eb757SSRICHARAN R 217cb998baSPaul Kocialkowski #ifdef CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS 22675cc77aSHardik Patel extern const struct emif_regs emif_regs_elpida_200_mhz_2cs; 23675cc77aSHardik Patel extern const struct emif_regs emif_regs_elpida_380_mhz_1cs; 24675cc77aSHardik Patel extern const struct emif_regs emif_regs_elpida_400_mhz_1cs; 25675cc77aSHardik Patel extern const struct emif_regs emif_regs_elpida_400_mhz_2cs; 2638e5a5abSNishanth Menon extern const struct dmm_lisa_map_regs lisa_map_2G_x_1_x_2; 2738e5a5abSNishanth Menon extern const struct dmm_lisa_map_regs lisa_map_2G_x_2_x_2; 2838e5a5abSNishanth Menon extern const struct dmm_lisa_map_regs ma_lisa_map_2G_x_2_x_2; 297cb998baSPaul Kocialkowski #else 307cb998baSPaul Kocialkowski extern const struct lpddr2_device_details elpida_2G_S4_details; 317cb998baSPaul Kocialkowski extern const struct lpddr2_device_details elpida_4G_S4_details; 327cb998baSPaul Kocialkowski #endif 3396703acdSPaul Kocialkowski 34ed5ddebeSPaul Kocialkowski #ifdef CONFIG_SYS_DEFAULT_LPDDR2_TIMINGS 35ed5ddebeSPaul Kocialkowski extern const struct lpddr2_device_timings jedec_default_timings; 36ed5ddebeSPaul Kocialkowski #else 3796703acdSPaul Kocialkowski extern const struct lpddr2_device_timings elpida_2G_S4_timings; 3896703acdSPaul Kocialkowski #endif 3996703acdSPaul Kocialkowski 40d34efc76SSteve Sakoman struct omap_sysinfo { 41d34efc76SSteve Sakoman char *board_string; 42d34efc76SSteve Sakoman }; 43d2f18c27SAneesh V extern const struct omap_sysinfo sysinfo; 44d34efc76SSteve Sakoman 4527952014SSteve Sakoman void gpmc_init(void); 46d34efc76SSteve Sakoman void watchdog_init(void); 47d34efc76SSteve Sakoman u32 get_device_type(void); 48469ec1e3SAneesh V void do_set_mux(u32 base, struct pad_conf_entry const *array, int size); 49*3ef56e61SPaul Kocialkowski void set_muxconf_regs(void); 500e7b6217SSteve Sakoman u32 wait_on_value(u32, u32, void *, u32); 510e7b6217SSteve Sakoman void sdelay(unsigned long); 5293e6253dSKipisz, Steven void setup_early_clocks(void); 533776801dSAneesh V void prcm_init(void); 54d88d6c8cSKipisz, Steven void do_board_detect(void); 5501b753ffSSRICHARAN R void bypass_dpll(u32 const base); 563776801dSAneesh V void freq_update_core(void); 573776801dSAneesh V u32 get_sys_clk_freq(void); 583776801dSAneesh V u32 omap4_ddr_clk(void); 59095aea29SAneesh V void cancel_out(u32 *num, u32 *den, u32 den_limit); 602ae610f0SAneesh V void sdram_init(void); 61508a58faSSricharan u32 omap_sdram_size(void); 62508a58faSSricharan u32 cortex_rev(void); 634596dcc1STom Rini void save_omap_boot_params(void); 64508a58faSSricharan void init_omap_revision(void); 65508a58faSSricharan void do_io_settings(void); 664ca94d81SLokesh Vutla void sri2c_init(void); 67a78274b2SNishanth Menon int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data); 6870239507SLokesh Vutla u32 warm_reset(void); 6938f25b12SLokesh Vutla void force_emif_self_refresh(void); 700b1b60c7SLokesh Vutla void setup_warmreset_time(void); 716d8abe6aSNishanth Menon 726d8abe6aSNishanth Menon #define OMAP4_SERVICE_PL310_CONTROL_REG_SET 0x102 736d8abe6aSNishanth Menon 74d34efc76SSteve Sakoman #endif 75