1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2508a58faSSricharan /*
3508a58faSSricharan  * (C) Copyright 2010
4508a58faSSricharan  * Texas Instruments, <www.ti.com>
5508a58faSSricharan  */
6508a58faSSricharan 
7508a58faSSricharan #ifndef _SYS_PROTO_H_
8508a58faSSricharan #define _SYS_PROTO_H_
9508a58faSSricharan 
10508a58faSSricharan #include <asm/arch/omap.h>
11508a58faSSricharan #include <asm/io.h>
12af1d002fSLokesh Vutla #include <asm/arch/clock.h>
13508a58faSSricharan #include <asm/omap_common.h>
146aff0509Spekon gupta #include <linux/mtd/omap_gpmc.h>
15af1d002fSLokesh Vutla #include <asm/arch/clock.h>
16939911a6STom Rini #include <asm/ti-common/sys_proto.h>
17508a58faSSricharan 
1871bed185SLokesh Vutla /*
1971bed185SLokesh Vutla  * Structure for Iodelay configuration registers.
2071bed185SLokesh Vutla  * Theoretical max for g_delay is 21560 ps.
2171bed185SLokesh Vutla  * Theoretical max for a_delay is 1/3rd of g_delay max.
2271bed185SLokesh Vutla  * So using u16 for both a/g_delay.
2371bed185SLokesh Vutla  */
2471bed185SLokesh Vutla struct iodelay_cfg_entry {
2571bed185SLokesh Vutla 	u16 offset;
2671bed185SLokesh Vutla 	u16 a_delay;
2771bed185SLokesh Vutla 	u16 g_delay;
2871bed185SLokesh Vutla };
2971bed185SLokesh Vutla 
30687054a7SLokesh Vutla struct pad_conf_entry {
31687054a7SLokesh Vutla 	u32 offset;
32687054a7SLokesh Vutla 	u32 val;
33687054a7SLokesh Vutla };
34687054a7SLokesh Vutla 
352d28eedaSKishon Vijay Abraham I struct mmc_platform_fixups {
362d28eedaSKishon Vijay Abraham I 	const char *hw_rev;
372d28eedaSKishon Vijay Abraham I 	u32 unsupported_caps;
382d28eedaSKishon Vijay Abraham I 	u32 max_freq;
392d28eedaSKishon Vijay Abraham I };
402d28eedaSKishon Vijay Abraham I 
41508a58faSSricharan struct omap_sysinfo {
42508a58faSSricharan 	char *board_string;
43508a58faSSricharan };
44508a58faSSricharan extern const struct omap_sysinfo sysinfo;
45508a58faSSricharan 
46508a58faSSricharan void gpmc_init(void);
47508a58faSSricharan void watchdog_init(void);
48508a58faSSricharan u32 get_device_type(void);
49508a58faSSricharan void do_set_mux(u32 base, struct pad_conf_entry const *array, int size);
501f68451cSLokesh Vutla void do_set_mux32(u32 base, struct pad_conf_entry const *array, int size);
513ef56e61SPaul Kocialkowski void set_muxconf_regs(void);
52508a58faSSricharan u32 wait_on_value(u32, u32, void *, u32);
53508a58faSSricharan void sdelay(unsigned long);
5493e6253dSKipisz, Steven void setup_early_clocks(void);
55508a58faSSricharan void prcm_init(void);
56d88d6c8cSKipisz, Steven void do_board_detect(void);
5761462cd7SKeerthy void vcores_init(void);
5801b753ffSSRICHARAN R void bypass_dpll(u32 const base);
59508a58faSSricharan void freq_update_core(void);
60508a58faSSricharan u32 get_sys_clk_freq(void);
61508a58faSSricharan u32 omap5_ddr_clk(void);
62508a58faSSricharan void cancel_out(u32 *num, u32 *den, u32 den_limit);
63508a58faSSricharan void sdram_init(void);
64508a58faSSricharan u32 omap_sdram_size(void);
65508a58faSSricharan u32 cortex_rev(void);
664596dcc1STom Rini void save_omap_boot_params(void);
67508a58faSSricharan void init_omap_revision(void);
68941f2fccSLokesh Vutla void init_package_revision(void);
69508a58faSSricharan void do_io_settings(void);
704ca94d81SLokesh Vutla void sri2c_init(void);
71a78274b2SNishanth Menon int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data);
7270239507SLokesh Vutla u32 warm_reset(void);
7338f25b12SLokesh Vutla void force_emif_self_refresh(void);
74ef1697e9SLokesh Vutla void get_ioregs(const struct ctrl_ioregs **regs);
75d4d986eeSLokesh Vutla void srcomp_enable(void);
760b1b60c7SLokesh Vutla void setup_warmreset_time(void);
772d28eedaSKishon Vijay Abraham I const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr);
78508a58faSSricharan 
div_round_up(u32 num,u32 den)790b1b60c7SLokesh Vutla static inline u32 div_round_up(u32 num, u32 den)
800b1b60c7SLokesh Vutla {
810b1b60c7SLokesh Vutla 	return (num + den - 1)/den;
820b1b60c7SLokesh Vutla }
830b1b60c7SLokesh Vutla 
usec_to_32k(u32 usec)840b1b60c7SLokesh Vutla static inline u32 usec_to_32k(u32 usec)
850b1b60c7SLokesh Vutla {
860b1b60c7SLokesh Vutla 	return div_round_up(32768 * usec, 1000000);
870b1b60c7SLokesh Vutla }
885f603761SPraveen Rao 
895f603761SPraveen Rao #define OMAP5_SERVICE_L2ACTLR_SET    0x104
901bbb556aSNishanth Menon #define OMAP5_SERVICE_ACR_SET        0x107
915f603761SPraveen Rao 
92508a58faSSricharan #endif
93