Merge tag 'omap-cleanup-a-for-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into omap-for-v3.8/cleanup-prcm
The first set of OMAP PRM/CM-related cleanup patches for 3.8. Prepares for the future move of the PRM/CM code to drivers/. Also includes some prcm.[ch] cleanup patches from the WDTIMER cleanup series that don't need external acks. Basic test logs for this branch on top of v3.7-rc2 are here: http://www.pwsan.com/omap/testlogs/prcm_cleanup_a_3.8/20121021123719/ But due to the number of unrelated regressions present in v3.7-rc[12], it's not particularly usable as a testing base. With reverts, fixes, and workarounds applied as documented in: http://www.pwsan.com/omap/testlogs/test_v3.7-rc2/20121020134755/README.txt the following test logs were obtained: http://www.pwsan.com/omap/testlogs/prcm_cleanup_a_3.8/20121020231757/ which indicate that the series tests cleanly. Conflicts: arch/arm/mach-omap2/Makefile arch/arm/mach-omap2/clockdomain2xxx_3xxx.c arch/arm/mach-omap2/pm24xx.c
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
#include <plat/prcm.h>
|
||||
|
||||
#include "prm2xxx_3xxx.h"
|
||||
#include "prm2xxx.h"
|
||||
#include "prm3xxx.h"
|
||||
#include "prm44xx.h"
|
||||
|
||||
/*
|
||||
@@ -53,6 +55,13 @@ static struct irq_chip_generic **prcm_irq_chips;
|
||||
*/
|
||||
static struct omap_prcm_irq_setup *prcm_irq_setup;
|
||||
|
||||
/*
|
||||
* prm_ll_data: function pointers to SoC-specific implementations of
|
||||
* common PRM functions
|
||||
*/
|
||||
static struct prm_ll_data null_prm_ll_data;
|
||||
static struct prm_ll_data *prm_ll_data = &null_prm_ll_data;
|
||||
|
||||
/* Private functions */
|
||||
|
||||
/*
|
||||
@@ -319,64 +328,71 @@ err:
|
||||
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
|
||||
/**
|
||||
* prm_read_reset_sources - return the sources of the SoC's last reset
|
||||
*
|
||||
* Return a u32 bitmask representing the reset sources that caused the
|
||||
* SoC to reset. The low-level per-SoC functions called by this
|
||||
* function remap the SoC-specific reset source bits into an
|
||||
* OMAP-common set of reset source bits, defined in
|
||||
* arch/arm/mach-omap2/prm.h. Returns the standardized reset source
|
||||
* u32 bitmask from the hardware upon success, or returns (1 <<
|
||||
* OMAP_UNKNOWN_RST_SRC_ID_SHIFT) if no low-level read_reset_sources()
|
||||
* function was registered.
|
||||
*/
|
||||
u32 __weak omap2_prm_read_mod_reg(s16 module, u16 idx)
|
||||
u32 prm_read_reset_sources(void)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
|
||||
u32 ret = 1 << OMAP_UNKNOWN_RST_SRC_ID_SHIFT;
|
||||
|
||||
if (prm_ll_data->read_reset_sources)
|
||||
ret = prm_ll_data->read_reset_sources();
|
||||
else
|
||||
WARN_ONCE(1, "prm: %s: no mapping function defined for reset sources\n", __func__);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* prm_register - register per-SoC low-level data with the PRM
|
||||
* @pld: low-level per-SoC OMAP PRM data & function pointers to register
|
||||
*
|
||||
* Register per-SoC low-level OMAP PRM data and function pointers with
|
||||
* the OMAP PRM common interface. The caller must keep the data
|
||||
* pointed to by @pld valid until it calls prm_unregister() and
|
||||
* it returns successfully. Returns 0 upon success, -EINVAL if @pld
|
||||
* is NULL, or -EEXIST if prm_register() has already been called
|
||||
* without an intervening prm_unregister().
|
||||
*/
|
||||
int prm_register(struct prm_ll_data *pld)
|
||||
{
|
||||
if (!pld)
|
||||
return -EINVAL;
|
||||
|
||||
if (prm_ll_data != &null_prm_ll_data)
|
||||
return -EEXIST;
|
||||
|
||||
prm_ll_data = pld;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __weak omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx)
|
||||
/**
|
||||
* prm_unregister - unregister per-SoC low-level data & function pointers
|
||||
* @pld: low-level per-SoC OMAP PRM data & function pointers to unregister
|
||||
*
|
||||
* Unregister per-SoC low-level OMAP PRM data and function pointers
|
||||
* that were previously registered with prm_register(). The
|
||||
* caller may not destroy any of the data pointed to by @pld until
|
||||
* this function returns successfully. Returns 0 upon success, or
|
||||
* -EINVAL if @pld is NULL or if @pld does not match the struct
|
||||
* prm_ll_data * previously registered by prm_register().
|
||||
*/
|
||||
int prm_unregister(struct prm_ll_data *pld)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function called on non-omap2xxx/3xxx\n");
|
||||
}
|
||||
if (!pld || prm_ll_data != pld)
|
||||
return -EINVAL;
|
||||
|
||||
prm_ll_data = &null_prm_ll_data;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user