linux/arch/arm/mach-omap2
Benoît Cousson 5365efbe29 OMAP: hwmod: Add hardreset management support
Most processor IPs does have a hardreset signal controlled by the PRM.
This is different of the softreset used for local IP reset from the
SYSCONFIG register.
The granularity can be much finer than orginal HWMOD, for ex, the IVA
hwmod contains 3 reset lines, the IPU 3 as well, the DSP 2...
Since this granularity is needed by the driver, we have to ensure
than one hwmod exist for each hardreset line.

- Store reset lines as hwmod resources that a driver can query by name like
  an irq or sdma line.

- Add two functions for asserting / deasserting reset lines in hwmods
  processor that require manual reset control.
- Add one functions to get the current reset state.
- If an hwmod contains only one line, an automatic assertion / de-assertion
  is done.
  -> de-assert the hardreset line only during enable from disable transition
  -> assert the hardreset line only during shutdown

Note: The hwmods with hardreset line and HWMOD_INIT_NO_RESET flag must be
kept in INITIALIZED state.
They can be properly enabled only if the hardreset line is de-asserted
before.

For information here is the list of IPs with HW reset control
on an OMAP4430 device:

RM_DSP_RSTCTRL
  1,1,'RST2','RW','1','DSP - MMU, cache and slave interface reset control'
  0,0,'RST1','RW','1','DSP - DSP reset control'

RM_IVA_RSTCTRL
  2,2,'RST3','RW','1','IVA logic and SL2 reset control'
  1,1,'RST2','RW','1','IVA Sequencer2 reset control'
  0,0,'RST1','RW','1','IVA sequencer1 reset control'

RM_IPU_RSTCTRL
  2,2,'RST3','RW','1','IPU MMU and CACHE interface reset control.'
  1,1,'RST2','RW','1','IPU Cortex M3 CPU2  reset control.'
  0,0,'RST1','RW','1','IPU Cortex M3 CPU1  reset control.'

PRM_RSTCTRL
  1,1,'RST_GLOBAL_COLD_SW','RW','0','Global COLD software reset control.'
  0,0,'RST_GLOBAL_WARM_SW','RW','0','Global WARM software reset control.'

RM_CPU0_CPU0_RSTCTRL
RM_CPU1_CPU1_RSTCTRL
  0,0,'RST','RW','0','Cortex A9 CPU0&1 warm local reset control'

Signed-off-by: Benoit Cousson <b-cousson@ti.com>
[paul@pwsan.com: made the hardreset functions static; moved the register
 twiddling into prm*.c functions in previous patches; changed the
 function names to conform with hwmod practice]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Rajendra Nayak <rnayak@ti.com>
2010-09-21 15:12:40 -06:00
..
include/mach omap: Use CONFIG_SMP for test_for_ipi and test_for_ltirq 2010-08-16 09:22:04 +03:00
board-2430sdp.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-3430sdp.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-3630sdp.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-4430sdp.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-am3517evm.c omap3: introduce omap3_map_io 2010-08-04 14:43:18 +03:00
board-apollon.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-cm-t35.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-devkit8000.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-flash.c omap3 flash: rename board-sdp-flash.c to be use by other boards 2010-08-02 15:43:29 +03:00
board-generic.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-h4.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-igep0020.c omap3: introduce omap3_map_io 2010-08-04 14:43:18 +03:00
board-ldp.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-n8x0.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-omap3beagle.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-omap3evm.c Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux 2010-08-08 10:02:59 -07:00
board-omap3pandora.c omap: pandora: pass wl1251 information to SDIO core 2010-08-11 08:59:04 -07:00
board-omap3stalker.c omap3: introduce omap3_map_io 2010-08-04 14:43:18 +03:00
board-omap3touchbook.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-omap4panda.c omap4: Add OMAP4 Panda Support 2010-08-02 13:18:05 +03:00
board-overo.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-rx51-peripherals.c Merge branch 'devel-misc' into omap-for-linus 2010-08-02 14:23:38 +03:00
board-rx51-sdram.c omap3: rx51: Add SDRAM init 2009-11-22 10:24:33 -08:00
board-rx51-video.c omap: mux: Remove old mux code 2010-07-05 16:31:40 +03:00
board-rx51.c omap3: Unify omap2_set_globals_3[43,6x]x functions 2010-08-04 14:43:18 +03:00
board-zoom2.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-zoom3.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
board-zoom-debugboard.c omap2/3: Fix DEBUG_LL for omap zoom2/3 2010-05-03 17:53:08 -07:00
board-zoom-peripherals.c omap3: zoom2/3 / 3630sdp: Don't init always all uarts 2010-03-15 16:34:17 -05:00
clkt2xxx_apll.c OMAP2 PRCM: convert OMAP2 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:04 -06:00
clkt2xxx_dpllcore.c OMAP2xxx clock: move the DPLL+CORE composite clock code into mach-omap2/clkt2xxx_dpllcore.c 2010-01-26 20:13:06 -07:00
clkt2xxx_osc.c OMAP2xxx clock: move osc_clk code into mach-omap2/clkt2xxx_osc.c 2010-01-28 18:13:49 -07:00
clkt2xxx_sys.c OMAP2xxx clock: move sys_clk code into mach-omap2/clkt2xxx_sys.c 2010-01-28 18:13:49 -07:00
clkt2xxx_virt_prcm_set.c OMAP2 clock: fix recursive spinlock attempt when CONFIG_CPU_FREQ=y 2010-05-20 12:31:14 -06:00
clkt34xx_dpll3m2.c OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clkt_clksel.c OMAP2+ clock: clean up clkt_clksel.c 2010-05-20 12:31:06 -06:00
clkt_dpll.c OMAP2/3/4 clock: fix DPLL multiplier value errors; also copyrights, includes, documentation 2010-02-24 12:15:03 -07:00
clock2xxx.c OMAP2/3 clock: combine OMAP2 & 3 boot-time MPU rate change code 2010-02-24 17:45:15 -07:00
clock2xxx.h OMAP2 clock: split OMAP2420, OMAP2430 clock data into their own files 2010-02-24 12:29:42 -07:00
clock3xxx_data.c OMAP3: Fix a cpu type check problem 2010-08-16 09:21:19 +03:00
clock3xxx.c OMAP2/3 clock: combine OMAP2 & 3 boot-time MPU rate change code 2010-02-24 17:45:15 -07:00
clock3xxx.h OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock34xx.c OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock34xx.h OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock36xx.c OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock36xx.h OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock44xx_data.c OMAP4: clock: Fix multi-omap boot with reset un-used clocks 2010-06-16 19:01:33 +03:00
clock44xx.h OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock2420_data.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2010-05-21 14:46:51 -07:00
clock2430_data.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2010-05-21 14:46:51 -07:00
clock2430.c OMAP2 clock: split OMAP2420, OMAP2430 clock data into their own files 2010-02-24 12:29:42 -07:00
clock3517.c OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock3517.h OMAP3/4 clock: split into per-chip family files 2010-02-24 12:16:15 -07:00
clock_common_data.c OMAP3 clock: rename RATE_IN_343X, RATE_IN_3430ES2 to match reality 2010-05-20 12:31:07 -06:00
clock.c OMAP2+ clock: clean up clkt_clksel.c 2010-05-20 12:31:06 -06:00
clock.h OMAP2+ clock: clean up clkt_clksel.c 2010-05-20 12:31:06 -06:00
clockdomain.c OMAP2 PRCM: convert OMAP2 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:04 -06:00
clockdomains44xx.h OMAP4: PRM: Remove MPU internal code name and apply PRCM naming convention 2010-05-20 12:31:11 -06:00
clockdomains.h omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
cm4xxx.c OMAP4: hwmod & CM: Implement the omap4_cm_wait_module_ready function 2010-05-20 12:31:08 -06:00
cm44xx.h OMAP4: PRCM: Add offset defines for all CM registers 2010-05-20 12:31:12 -06:00
cm-regbits-24xx.h OMAP2 PRCM: convert OMAP2 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:04 -06:00
cm-regbits-34xx.h OMAP3 PRCM: convert OMAP3 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:05 -06:00
cm-regbits-44xx.h OMAP4: PRCM: Define shift macros as n instead of 1 << n 2010-01-29 10:14:22 -07:00
cm.c OMAP24xx: CM: fix mask used for checking IDLEST status 2010-07-26 16:34:28 -06:00
cm.h OMAP4: hwmod & CM: Implement the omap4_cm_wait_module_ready function 2010-05-20 12:31:08 -06:00
control.c OMAP3 PRCM: convert OMAP3 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:05 -06:00
cpuidle34xx.c OMAP3: cpuidle: Add valid field into C-state parameter passing 2010-02-23 11:05:02 -08:00
devices.c Merge branch 'v2.6.35-omap-mailbox-for-next' of git://gitorious.org/~doyu/lk/mainline into omap-for-linus 2010-08-04 16:10:38 +03:00
dpll3xxx.c fix typos concerning "hierarchy" 2010-06-16 18:03:14 +02:00
emu.c omap2/3: Fix initcalls for multi-omap 2010-02-15 09:27:05 -08:00
gpmc-nand.c omap3 nand: cleanup virtual address usages 2010-08-02 15:30:38 +03:00
gpmc-onenand.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
gpmc-smc91x.c omap: use smc91x_platdata to setup smc91x 2009-12-11 16:16:33 -08:00
gpmc.c omap3 nand: cleanup virtual address usages 2010-08-02 15:30:38 +03:00
hsmmc.c omap: pandora: pass wl1251 information to SDIO core 2010-08-11 08:59:04 -07:00
hsmmc.h omap: pandora: pass wl1251 information to SDIO core 2010-08-11 08:59:04 -07:00
i2c.c omap: mux: Convert 2420 platform init code to use new mux code 2010-07-05 16:31:40 +03:00
id.c omap3: id: fix 3630 rev detection 2010-08-16 09:21:19 +03:00
io.c Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
iommu2.c omap iommu: move iommu_disable at fault to the above layer 2010-06-29 07:55:07 +03:00
irq.c OMAP2/3: IRQ: ensure valid base address 2010-02-03 08:48:06 -08:00
Kconfig omap4: Add OMAP4 Panda Support 2010-08-02 13:18:05 +03:00
mailbox.c omap: mailbox: reorganize headers 2010-08-04 15:50:20 +03:00
Makefile OMAP2/3: PRM: add module hard reset support 2010-09-21 15:12:40 -06:00
Makefile.boot
mcbsp.c Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2010-08-08 10:01:46 -07:00
mux34xx.c omap: mux: Remove unncessary parens from mux34xx.c 2010-07-05 16:31:36 +03:00
mux34xx.h omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
mux2420.c omap: mux: Add data for 2420 2010-07-05 16:31:36 +03:00
mux2420.h omap: mux: Add data for 2420 2010-07-05 16:31:36 +03:00
mux2430.c omap: mux: Add data for 2430 2010-07-05 16:31:36 +03:00
mux2430.h omap: mux: Add data for 2430 2010-07-05 16:31:36 +03:00
mux.c omap: mux: fix multipath gpio handling 2010-08-02 14:23:07 +03:00
mux.h omap: mux: Add data for 2430 2010-07-05 16:31:36 +03:00
omap4-common.c omap4: Move SOC specific code from board file 2010-05-20 11:17:51 -07:00
omap44xx-smc.S omap4: Add smc API to read AuxCoreBoot0 register 2010-08-02 13:18:18 +03:00
omap_hwmod_3xxx_data.c OMAP3: hwmod data: add data for OMAP3 IVA2 2010-07-26 16:34:32 -06:00
omap_hwmod_2420_data.c OMAP2: hwmod data: add IVA1 (2420), IVA2 (2430) hwmods 2010-07-26 16:34:33 -06:00
omap_hwmod_2430_data.c OMAP2: hwmod data: add IVA1 (2420), IVA2 (2430) hwmods 2010-07-26 16:34:33 -06:00
omap_hwmod_common_data.c OMAP: hwmod data: add class for IVA hwmods 2010-07-26 16:34:31 -06:00
omap_hwmod_common_data.h OMAP: hwmod data: add class for IVA hwmods 2010-07-26 16:34:31 -06:00
omap_hwmod.c OMAP: hwmod: Add hardreset management support 2010-09-21 15:12:40 -06:00
omap-headsmp.S omap4: Add smc API to read AuxCoreBoot0 register 2010-08-02 13:18:18 +03:00
omap-hotplug.c omap4: hotplug: Add basic CPU hotplug support 2010-08-02 13:18:19 +03:00
omap-iommu.c omap iommu: update ducati mmu irq define name 2010-06-29 07:55:08 +03:00
omap-smp.c omap: Fix sev instruction usage for multi-omap 2010-08-16 09:22:04 +03:00
opp2xxx.h omap2/3: Multiboot compile fixes to compile in omap2 and omap3 2010-02-15 09:26:55 -08:00
opp2420_data.c OMAP2xxx OPP: clean up comments in OPP data 2010-01-08 15:23:15 -07:00
opp2430_data.c OMAP2xxx OPP: clean up comments in OPP data 2010-01-08 15:23:15 -07:00
pm24xx.c omap: mux: Remove old mux code 2010-07-05 16:31:40 +03:00
pm34xx.c OMAP3: PM: ensure IO wakeups are properly disabled 2010-08-16 09:22:05 +03:00
pm44xx.c omap4: suspend: Add basic system suspend support 2010-08-02 13:18:18 +03:00
pm-debug.c OMAP3: PM: Add milliseconds interface to suspend wakeup timer 2010-05-12 09:39:00 -07:00
pm.c OMAP: PM: create omap_devices for MPU, DSP, L3 2010-07-26 16:34:31 -06:00
pm.h OMAP3: PM: Add milliseconds interface to suspend wakeup timer 2010-05-12 09:39:00 -07:00
powerdomain.c OMAP2: powerdomain: Add break in switch statement 2010-08-03 10:21:07 +03:00
powerdomains24xx.h omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
powerdomains34xx.h omap: 3630: disable TLL SAR on 3630 ES1 2010-08-04 14:43:52 +03:00
powerdomains44xx.h OMAP4 powerdomain: Support LOWPOWERSTATECHANGE for powerdomains 2010-05-20 12:31:13 -06:00
powerdomains.h OMAP2+ powerdomains/clockdomains: prepare for multi-OMAP configs 2010-01-29 10:14:23 -07:00
prcm-common.h OMAP4: PRCM: Remove duplicate definition of base addresses 2010-05-20 12:31:12 -06:00
prcm.c OMAP4: prcm: Add temporarily helper functions for rmw and read inside the PRM 2010-09-21 15:11:42 -06:00
prm2xxx_3xxx.c OMAP2/3: PRM: add module hard reset support 2010-09-21 15:12:40 -06:00
prm44xx.c OMAP4: PRM: add module hard reset support 2010-09-21 15:12:21 -06:00
prm44xx.h OMAP4: PRCM: Add offset defines for all PRM registers 2010-05-20 12:31:12 -06:00
prm-regbits-24xx.h OMAP2 PRCM: convert OMAP2 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:04 -06:00
prm-regbits-34xx.h OMAP3 PRCM: convert OMAP3 PRCM macros to the _SHIFT/_MASK suffixes 2010-05-20 12:31:05 -06:00
prm-regbits-44xx.h OMAP4: PRCM: Define shift macros as n instead of 1 << n 2010-01-29 10:14:22 -07:00
prm.h OMAP2/3: PRM: add module hard reset support 2010-09-21 15:12:40 -06:00
sdram-hynix-h8mbx00u0mer-0em.h omap3: zoom: Introduce zoom3 board support 2009-11-22 10:24:33 -08:00
sdram-micron-mt46h32m32lf-6.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdram-numonyx-m65kxxxxam.h omap3: SDRC: add timing data for Numonyx M65KxxxxAM 2010-02-17 17:23:20 -08:00
sdram-qimonda-hyb18m512160af-6.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdrc2xxx.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdrc.c omap2/3/4: ioremap omap_globals module 2010-02-23 10:57:40 -08:00
sdrc.h OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* 2009-12-11 16:16:00 -07:00
serial.c omap2/3/4: serial: errata i202: fix for MDR1 access 2010-08-02 13:18:12 +03:00
sleep24xx.S omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sleep34xx.S fix typos concerning "acquire" 2010-06-16 18:03:15 +02:00
sram34xx.S OMAP3: SDRC: Place SDRC AC timing and MR changes in CORE DVFS SRAM code behind Kconfig 2009-12-11 17:00:42 -07:00
sram242x.S
sram243x.S
timer-gp.c OMAP4: clock: Remove clock hacks from timer-gp.c 2010-02-24 17:45:17 -07:00
timer-mpu.c omap4: Use irq line defines from irq-44xx.h 2010-02-23 15:29:08 -08:00
usb-ehci.c omap: mux: Remove old mux code 2010-07-05 16:31:40 +03:00
usb-fs.c omap: mux: Make omap2 FS USB code use new mux functions 2010-07-05 16:31:38 +03:00
usb-musb.c omap: mux: Remove old mux code 2010-07-05 16:31:40 +03:00
usb-tusb6010.c omap: mux: Convert 2420 platform init code to use new mux code 2010-07-05 16:31:40 +03:00