Loading arch/arm/mach-omap2/devices.c +0 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ #include "soc.h" #include "common.h" #include "mux.h" #include "control.h" #include "display.h" Loading arch/arm/mach-omap2/omap_hwmod.c +1 −106 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ #include "prm44xx.h" #include "prm33xx.h" #include "prminst44xx.h" #include "mux.h" #include "pm.h" /* Name of the OMAP hwmod for the MPU */ Loading Loading @@ -217,9 +216,6 @@ static LIST_HEAD(omap_hwmod_list); /* mpu_oh: used to add/remove MPU initiator from sleepdep list */ static struct omap_hwmod *mpu_oh; /* io_chain_lock: used to serialize reconfigurations of the I/O chain */ static DEFINE_SPINLOCK(io_chain_lock); /* * linkspace: ptr to a buffer that struct omap_hwmod_link records are * allocated from - used to reduce the number of small memory Loading Loading @@ -593,51 +589,6 @@ static int _set_module_autoidle(struct omap_hwmod *oh, u8 autoidle, return 0; } /** * _set_idle_ioring_wakeup - enable/disable IO pad wakeup on hwmod idle for mux * @oh: struct omap_hwmod * * @set_wake: bool value indicating to set (true) or clear (false) wakeup enable * * Set or clear the I/O pad wakeup flag in the mux entries for the * hwmod @oh. This function changes the @oh->mux->pads_dynamic array * in memory. If the hwmod is currently idled, and the new idle * values don't match the previous ones, this function will also * update the SCM PADCTRL registers. Otherwise, if the hwmod is not * currently idled, this function won't touch the hardware: the new * mux settings are written to the SCM PADCTRL registers when the * hwmod is idled. No return value. */ static void _set_idle_ioring_wakeup(struct omap_hwmod *oh, bool set_wake) { struct omap_device_pad *pad; bool change = false; u16 prev_idle; int j; if (!oh->mux || !oh->mux->enabled) return; for (j = 0; j < oh->mux->nr_pads_dynamic; j++) { pad = oh->mux->pads_dynamic[j]; if (!(pad->flags & OMAP_DEVICE_PAD_WAKEUP)) continue; prev_idle = pad->idle; if (set_wake) pad->idle |= OMAP_WAKEUP_EN; else pad->idle &= ~OMAP_WAKEUP_EN; if (prev_idle != pad->idle) change = true; } if (change && oh->_state == _HWMOD_STATE_IDLE) omap_hwmod_mux(oh->mux, _HWMOD_STATE_IDLE); } /** * _enable_wakeup: set OCP_SYSCONFIG.ENAWAKEUP bit in the hardware * @oh: struct omap_hwmod * Loading Loading @@ -2017,29 +1968,6 @@ static int _reset(struct omap_hwmod *oh) return r; } /** * _reconfigure_io_chain - clear any I/O chain wakeups and reconfigure chain * * Call the appropriate PRM function to clear any logged I/O chain * wakeups and to reconfigure the chain. This apparently needs to be * done upon every mux change. Since hwmods can be concurrently * enabled and idled, hold a spinlock around the I/O chain * reconfiguration sequence. No return value. * * XXX When the PRM code is moved to drivers, this function can be removed, * as the PRM infrastructure should abstract this. */ static void _reconfigure_io_chain(void) { unsigned long flags; spin_lock_irqsave(&io_chain_lock, flags); omap_prm_reconfigure_io_chain(); spin_unlock_irqrestore(&io_chain_lock, flags); } /** * _omap4_update_context_lost - increment hwmod context loss counter if * hwmod context was lost, and clear hardware context loss reg Loading Loading @@ -2109,18 +2037,9 @@ static int _enable(struct omap_hwmod *oh) /* * hwmods with HWMOD_INIT_NO_IDLE flag set are left in enabled * state at init. Now that someone is really trying to enable * them, just ensure that the hwmod mux is set. * state at init. */ if (oh->_int_flags & _HWMOD_SKIP_ENABLE) { /* * If the caller has mux data populated, do the mux'ing * which wouldn't have been done as part of the _enable() * done during setup. */ if (oh->mux) omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); oh->_int_flags &= ~_HWMOD_SKIP_ENABLE; return 0; } Loading @@ -2145,16 +2064,6 @@ static int _enable(struct omap_hwmod *oh) if (_are_all_hardreset_lines_asserted(oh)) return 0; /* Mux pins for device runtime if populated */ if (oh->mux && (!oh->mux->enabled || ((oh->_state == _HWMOD_STATE_IDLE) && oh->mux->pads_dynamic))) { omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); _reconfigure_io_chain(); } else if (oh->flags & HWMOD_RECONFIG_IO_CHAIN) { _reconfigure_io_chain(); } _add_initiator_dep(oh, mpu_oh); if (oh->clkdm) { Loading Loading @@ -2260,14 +2169,6 @@ static int _idle(struct omap_hwmod *oh) clkdm_hwmod_disable(oh->clkdm, oh); } /* Mux pins for device idle if populated */ if (oh->mux && oh->mux->pads_dynamic) { omap_hwmod_mux(oh->mux, _HWMOD_STATE_IDLE); _reconfigure_io_chain(); } else if (oh->flags & HWMOD_RECONFIG_IO_CHAIN) { _reconfigure_io_chain(); } oh->_state = _HWMOD_STATE_IDLE; return 0; Loading Loading @@ -2334,10 +2235,6 @@ static int _shutdown(struct omap_hwmod *oh) for (i = 0; i < oh->rst_lines_cnt; i++) _assert_hardreset(oh, oh->rst_lines[i].name); /* Mux pins to safe mode or use populated off mode values */ if (oh->mux) omap_hwmod_mux(oh->mux, _HWMOD_STATE_DISABLED); oh->_state = _HWMOD_STATE_DISABLED; return 0; Loading Loading @@ -3729,7 +3626,6 @@ int omap_hwmod_enable_wakeup(struct omap_hwmod *oh) _write_sysconfig(v, oh); } _set_idle_ioring_wakeup(oh, true); spin_unlock_irqrestore(&oh->_lock, flags); return 0; Loading Loading @@ -3762,7 +3658,6 @@ int omap_hwmod_disable_wakeup(struct omap_hwmod *oh) _write_sysconfig(v, oh); } _set_idle_ioring_wakeup(oh, false); spin_unlock_irqrestore(&oh->_lock, flags); return 0; Loading Loading
arch/arm/mach-omap2/devices.c +0 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ #include "soc.h" #include "common.h" #include "mux.h" #include "control.h" #include "display.h" Loading
arch/arm/mach-omap2/omap_hwmod.c +1 −106 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ #include "prm44xx.h" #include "prm33xx.h" #include "prminst44xx.h" #include "mux.h" #include "pm.h" /* Name of the OMAP hwmod for the MPU */ Loading Loading @@ -217,9 +216,6 @@ static LIST_HEAD(omap_hwmod_list); /* mpu_oh: used to add/remove MPU initiator from sleepdep list */ static struct omap_hwmod *mpu_oh; /* io_chain_lock: used to serialize reconfigurations of the I/O chain */ static DEFINE_SPINLOCK(io_chain_lock); /* * linkspace: ptr to a buffer that struct omap_hwmod_link records are * allocated from - used to reduce the number of small memory Loading Loading @@ -593,51 +589,6 @@ static int _set_module_autoidle(struct omap_hwmod *oh, u8 autoidle, return 0; } /** * _set_idle_ioring_wakeup - enable/disable IO pad wakeup on hwmod idle for mux * @oh: struct omap_hwmod * * @set_wake: bool value indicating to set (true) or clear (false) wakeup enable * * Set or clear the I/O pad wakeup flag in the mux entries for the * hwmod @oh. This function changes the @oh->mux->pads_dynamic array * in memory. If the hwmod is currently idled, and the new idle * values don't match the previous ones, this function will also * update the SCM PADCTRL registers. Otherwise, if the hwmod is not * currently idled, this function won't touch the hardware: the new * mux settings are written to the SCM PADCTRL registers when the * hwmod is idled. No return value. */ static void _set_idle_ioring_wakeup(struct omap_hwmod *oh, bool set_wake) { struct omap_device_pad *pad; bool change = false; u16 prev_idle; int j; if (!oh->mux || !oh->mux->enabled) return; for (j = 0; j < oh->mux->nr_pads_dynamic; j++) { pad = oh->mux->pads_dynamic[j]; if (!(pad->flags & OMAP_DEVICE_PAD_WAKEUP)) continue; prev_idle = pad->idle; if (set_wake) pad->idle |= OMAP_WAKEUP_EN; else pad->idle &= ~OMAP_WAKEUP_EN; if (prev_idle != pad->idle) change = true; } if (change && oh->_state == _HWMOD_STATE_IDLE) omap_hwmod_mux(oh->mux, _HWMOD_STATE_IDLE); } /** * _enable_wakeup: set OCP_SYSCONFIG.ENAWAKEUP bit in the hardware * @oh: struct omap_hwmod * Loading Loading @@ -2017,29 +1968,6 @@ static int _reset(struct omap_hwmod *oh) return r; } /** * _reconfigure_io_chain - clear any I/O chain wakeups and reconfigure chain * * Call the appropriate PRM function to clear any logged I/O chain * wakeups and to reconfigure the chain. This apparently needs to be * done upon every mux change. Since hwmods can be concurrently * enabled and idled, hold a spinlock around the I/O chain * reconfiguration sequence. No return value. * * XXX When the PRM code is moved to drivers, this function can be removed, * as the PRM infrastructure should abstract this. */ static void _reconfigure_io_chain(void) { unsigned long flags; spin_lock_irqsave(&io_chain_lock, flags); omap_prm_reconfigure_io_chain(); spin_unlock_irqrestore(&io_chain_lock, flags); } /** * _omap4_update_context_lost - increment hwmod context loss counter if * hwmod context was lost, and clear hardware context loss reg Loading Loading @@ -2109,18 +2037,9 @@ static int _enable(struct omap_hwmod *oh) /* * hwmods with HWMOD_INIT_NO_IDLE flag set are left in enabled * state at init. Now that someone is really trying to enable * them, just ensure that the hwmod mux is set. * state at init. */ if (oh->_int_flags & _HWMOD_SKIP_ENABLE) { /* * If the caller has mux data populated, do the mux'ing * which wouldn't have been done as part of the _enable() * done during setup. */ if (oh->mux) omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); oh->_int_flags &= ~_HWMOD_SKIP_ENABLE; return 0; } Loading @@ -2145,16 +2064,6 @@ static int _enable(struct omap_hwmod *oh) if (_are_all_hardreset_lines_asserted(oh)) return 0; /* Mux pins for device runtime if populated */ if (oh->mux && (!oh->mux->enabled || ((oh->_state == _HWMOD_STATE_IDLE) && oh->mux->pads_dynamic))) { omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); _reconfigure_io_chain(); } else if (oh->flags & HWMOD_RECONFIG_IO_CHAIN) { _reconfigure_io_chain(); } _add_initiator_dep(oh, mpu_oh); if (oh->clkdm) { Loading Loading @@ -2260,14 +2169,6 @@ static int _idle(struct omap_hwmod *oh) clkdm_hwmod_disable(oh->clkdm, oh); } /* Mux pins for device idle if populated */ if (oh->mux && oh->mux->pads_dynamic) { omap_hwmod_mux(oh->mux, _HWMOD_STATE_IDLE); _reconfigure_io_chain(); } else if (oh->flags & HWMOD_RECONFIG_IO_CHAIN) { _reconfigure_io_chain(); } oh->_state = _HWMOD_STATE_IDLE; return 0; Loading Loading @@ -2334,10 +2235,6 @@ static int _shutdown(struct omap_hwmod *oh) for (i = 0; i < oh->rst_lines_cnt; i++) _assert_hardreset(oh, oh->rst_lines[i].name); /* Mux pins to safe mode or use populated off mode values */ if (oh->mux) omap_hwmod_mux(oh->mux, _HWMOD_STATE_DISABLED); oh->_state = _HWMOD_STATE_DISABLED; return 0; Loading Loading @@ -3729,7 +3626,6 @@ int omap_hwmod_enable_wakeup(struct omap_hwmod *oh) _write_sysconfig(v, oh); } _set_idle_ioring_wakeup(oh, true); spin_unlock_irqrestore(&oh->_lock, flags); return 0; Loading Loading @@ -3762,7 +3658,6 @@ int omap_hwmod_disable_wakeup(struct omap_hwmod *oh) _write_sysconfig(v, oh); } _set_idle_ioring_wakeup(oh, false); spin_unlock_irqrestore(&oh->_lock, flags); return 0; Loading