diff options
| -rw-r--r-- | arch/arm/mach-omap2/control.c | 43 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/control.h | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h | 1 | 
3 files changed, 46 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c index 08e674bb041..3223b81e753 100644 --- a/arch/arm/mach-omap2/control.c +++ b/arch/arm/mach-omap2/control.c @@ -241,6 +241,49 @@ void omap3_ctrl_write_boot_mode(u8 bootmode)  #endif +/** + * omap_ctrl_write_dsp_boot_addr - set boot address for a remote processor + * @bootaddr: physical address of the boot loader + * + * Set boot address for the boot loader of a supported processor + * when a power ON sequence occurs. + */ +void omap_ctrl_write_dsp_boot_addr(u32 bootaddr) +{ +	u32 offset = cpu_is_omap243x() ? OMAP243X_CONTROL_IVA2_BOOTADDR : +		     cpu_is_omap34xx() ? OMAP343X_CONTROL_IVA2_BOOTADDR : +		     cpu_is_omap44xx() ? OMAP4_CTRL_MODULE_CORE_DSP_BOOTADDR : +		     0; + +	if (!offset) { +		pr_err("%s: unsupported omap type\n", __func__); +		return; +	} + +	omap_ctrl_writel(bootaddr, offset); +} + +/** + * omap_ctrl_write_dsp_boot_mode - set boot mode for a remote processor + * @bootmode: 8-bit value to pass to some boot code + * + * Sets boot mode for the boot loader of a supported processor + * when a power ON sequence occurs. + */ +void omap_ctrl_write_dsp_boot_mode(u8 bootmode) +{ +	u32 offset = cpu_is_omap243x() ? OMAP243X_CONTROL_IVA2_BOOTMOD : +		     cpu_is_omap34xx() ? OMAP343X_CONTROL_IVA2_BOOTMOD : +		     0; + +	if (!offset) { +		pr_err("%s: unsupported omap type\n", __func__); +		return; +	} + +	omap_ctrl_writel(bootmode, offset); +} +  #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM)  /*   * Clears the scratchpad contents in case of cold boot- diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h index a406fd045ce..fcc98f822d9 100644 --- a/arch/arm/mach-omap2/control.h +++ b/arch/arm/mach-omap2/control.h @@ -397,6 +397,8 @@ extern u32 omap3_arm_context[128];  extern void omap3_control_save_context(void);  extern void omap3_control_restore_context(void);  extern void omap3_ctrl_write_boot_mode(u8 bootmode); +extern void omap_ctrl_write_dsp_boot_addr(u32 bootaddr); +extern void omap_ctrl_write_dsp_boot_mode(u8 bootmode);  extern void omap3630_ctrl_disable_rta(void);  extern int omap3_ctrl_save_padconf(void);  #else diff --git a/arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h b/arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h index 2f7ac70a20d..01970824e0e 100644 --- a/arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h +++ b/arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h @@ -42,6 +42,7 @@  #define OMAP4_CTRL_MODULE_CORE_STD_FUSE_OPP_DPLL_1		0x0268  #define OMAP4_CTRL_MODULE_CORE_STATUS				0x02c4  #define OMAP4_CTRL_MODULE_CORE_DEV_CONF				0x0300 +#define OMAP4_CTRL_MODULE_CORE_DSP_BOOTADDR			0x0304  #define OMAP4_CTRL_MODULE_CORE_LDOVBB_IVA_VOLTAGE_CTRL		0x0314  #define OMAP4_CTRL_MODULE_CORE_LDOVBB_MPU_VOLTAGE_CTRL		0x0318  #define OMAP4_CTRL_MODULE_CORE_LDOSRAM_IVA_VOLTAGE_CTRL		0x0320  |