Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f4990f4 authored by R Sricharan's avatar R Sricharan Committed by Paul Walmsley
Browse files

ARM: OMAP2+: PRM/CM: Move the stubbed prm and cm functions to prcm.c file and make them __weak



Some prm and cm registers read/write and status functions
are built only for some custom OMAP2+ builds and are stubbed
in header files for other builds under ifdef statements.
But this results in adding new CONFIG_ARCH_OMAPXXX
checks when SOCs are added in the future. So move them
to a common place for OMAP2+ and make them 'weak' implementations.

This way no new ifdefs would be required in the future and also
cleans up the existing code.

Signed-off-by: default avatarR Sricharan <r.sricharan@ti.com>
[paul@pwsan.com: unsplit quoted strings; moved PRM functions to
 mach-omap2/prm_common.c; resolved sparse warnings]
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent bed9d1bb
Loading
Loading
Loading
Loading
+0 −25
Original line number Diff line number Diff line
@@ -16,38 +16,13 @@ extern void omap4_cminst_clkdm_enable_hwsup(u8 part, s16 inst, u16 cdoffs);
extern void omap4_cminst_clkdm_disable_hwsup(u8 part, s16 inst, u16 cdoffs);
extern void omap4_cminst_clkdm_force_sleep(u8 part, s16 inst, u16 cdoffs);
extern void omap4_cminst_clkdm_force_wakeup(u8 part, s16 inst, u16 cdoffs);

extern int omap4_cminst_wait_module_ready(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs);

# ifdef CONFIG_ARCH_OMAP4
extern int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
					 u16 clkctrl_offs);

extern void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst, s16 cdoffs,
				       u16 clkctrl_offs);
extern void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
					u16 clkctrl_offs);

# else

static inline int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
					u16 clkctrl_offs)
{
	return 0;
}

static inline void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst,
				s16 cdoffs, u16 clkctrl_offs)
{
}

static inline void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
				 u16 clkctrl_offs)
{
}

# endif

/*
 * In an ideal world, we would not export these low-level functions,
 * but this will probably take some time to fix properly
+23 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include "prm2xxx_3xxx.h"
#include "prm44xx.h"
#include "prminst44xx.h"
#include "cminst44xx.h"
#include "prm-regbits-24xx.h"
#include "prm-regbits-44xx.h"
#include "control.h"
@@ -164,3 +165,25 @@ void __init omap2_set_globals_prcm(struct omap_globals *omap2_globals)
		omap_cm_base_init();
	}
}

/*
 * Stubbed functions so that common files continue to build when
 * custom builds are used
 * XXX These are temporary and should be removed at the earliest possible
 * opportunity
 */
int __weak omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
					u16 clkctrl_offs)
{
	return 0;
}

void __weak omap4_cminst_module_enable(u8 mode, u8 part, u16 inst,
				s16 cdoffs, u16 clkctrl_offs)
{
}

void __weak omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
				 u16 clkctrl_offs)
{
}
+0 −65
Original line number Diff line number Diff line
@@ -228,68 +228,6 @@


#ifndef __ASSEMBLER__
/*
 * Stub omap2xxx/omap3xxx functions so that common files
 * continue to build when custom builds are used
 */
#if defined(CONFIG_ARCH_OMAP4) && !(defined(CONFIG_ARCH_OMAP2) ||	\
					defined(CONFIG_ARCH_OMAP3))
static inline u32 omap2_prm_read_mod_reg(s16 module, u16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
}
static inline u32 omap2_prm_rmw_mod_reg_bits(u32 mask, u32 bits,
		s16 module, s16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline u32 omap2_prm_set_mod_reg_bits(u32 bits, s16 module, s16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline u32 omap2_prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline u32 omap2_prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
static inline int omap2_prm_deassert_hardreset(s16 prm_mod, u8 rst_shift,
						u8 st_shift)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function and "
		"not suppose to be used on omap4\n");
	return 0;
}
#else
/* Power/reset management domain register get/set */
extern u32 omap2_prm_read_mod_reg(s16 module, u16 idx);
extern void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx);
@@ -320,9 +258,6 @@ extern void omap3xxx_prm_read_pending_irqs(unsigned long *events);
extern void omap3xxx_prm_ocp_barrier(void);
extern void omap3xxx_prm_save_and_clear_irqen(u32 *saved_mask);
extern void omap3xxx_prm_restore_irqen(u32 *saved_mask);

#endif	/* CONFIG_ARCH_OMAP4 */

#endif

/*
+62 −0
Original line number Diff line number Diff line
@@ -319,3 +319,65 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
	omap_prcm_irq_cleanup();
	return -ENOMEM;
}

/*
 * Stubbed functions so that common files continue to build when
 * custom builds are used
 * XXX These are temporary and should be removed at the earliest possible
 * opportunity
 */
u32 __weak omap2_prm_read_mod_reg(s16 module, u16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

void __weak omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
}

u32 __weak omap2_prm_rmw_mod_reg_bits(u32 mask, u32 bits,
		s16 module, s16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

u32 __weak omap2_prm_set_mod_reg_bits(u32 bits, s16 module, s16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

u32 __weak omap2_prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

u32 __weak omap2_prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

int __weak omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

int __weak omap2_prm_assert_hardreset(s16 prm_mod, u8 shift)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}

int __weak omap2_prm_deassert_hardreset(s16 prm_mod, u8 rst_shift,
						u8 st_shift)
{
	WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
	return 0;
}