linux/arch/arm/plat-omap/include/plat
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
..
blizzard.h omap: Checkpatch cleanup for blizzard.h 2010-03-11 14:50:00 -08:00
board-ams-delta.h
board-sx1.h
board-voiceblue.h
board.h omap: Move omap2 FS USB platform init code into mach-omap2/usb-fs.c 2010-07-05 16:31:29 +03:00
clkdev_omap.h OMAP3 clock: reorganize CK_* platform flags 2010-01-26 20:12:56 -07:00
clkdev.h
clock.h OMAP: clock: add kerneldoc for structures; move flags closer to structs 2010-07-26 16:34:27 -06:00
clockdomain.h OMAP clockdomain/powerdomain: improve documentation 2010-01-26 20:13:02 -07:00
common.h Merge branch 'devel-map-io' into omap-for-linus 2010-08-04 14:43:45 +03:00
control.h omap4: Adding PBIAS Configuration for MMC1 Controller 2010-05-20 11:21:22 -07:00
cpu.h OMAP3630: Add ES1.1 and ES1.2 detection 2010-08-04 14:43:51 +03:00
display.h OMAP: DSS2: change manual update scaling setup 2010-08-05 16:52:03 +03:00
dma-44xx.h omap4: Add auto-generated irq and dma headers 2010-02-23 14:02:52 -08:00
dma.h omap: dma: Support for prefetch in destination synchronizedtransfer 2010-08-02 14:21:40 +03:00
dmtimer.h
flash.h omap: convert boards to use physmap-flash 2010-02-15 10:03:32 -08:00
fpga.h
gpio-switch.h
gpio.h OMAP2/3: GPIO: generalize prepare for idle 2010-05-12 09:39:16 -07:00
gpmc-smc91x.h
gpmc.h omap3 nand: cleanup virtual address usages 2010-08-02 15:30:38 +03:00
hardware.h
hwa742.h
i2c.h omap: i2c: Fix muxing for command line enabled bus 2010-02-25 14:45:08 -08:00
io.h omap3/4: Remove overlapping mapping of L4_WKUP io space 2010-02-23 10:57:41 -08:00
iommu2.h
iommu.h omap iommu: add functionality to get TLB miss interrupt 2010-06-29 07:55:07 +03:00
iovmm.h
irda.h
irqs-44xx.h omap4: Add auto-generated irq and dma headers 2010-02-23 14:02:52 -08:00
irqs.h omap: add missing FIQ_START definition required forarch/arm/kernel/fiq.c compilation 2010-05-05 11:11:10 -07:00
keypad.h Merge branch '7xx-iosplit-plat' with omap-fixes 2009-11-10 18:10:34 -08:00
lcd_mipid.h
led.h
mailbox.h omap: mailbox: reorganize headers 2010-08-04 15:50:20 +03:00
mcbsp.h OMAP: McBSP: Function to query the FIFO size 2010-06-03 16:12:39 +01:00
mcspi.h
memory.h omap2/3/4: Replace orred CONFIG_ARCH_OMAP2/3/4 with CONFIG_ARCH_OMAP2PLUS 2010-02-15 09:27:04 -08:00
menelaus.h omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
mmc.h omap_hsmmc: add init_card pass-through callback 2010-08-11 08:59:04 -07:00
multi.h omap2/3/4: Fix multi.h when omap3 and omap4 are selected without omap2 2010-05-03 17:21:31 -07:00
mux.h Merge branch 'devel-misc' into omap-for-linus 2010-08-02 14:23:38 +03:00
nand.h omap3 nand: cleanup virtual address usages 2010-08-02 15:30:38 +03:00
nokia-dsi-panel.h OMAP: DSS2: Add Nokia DSI command mode panel configuration struct 2010-08-03 15:18:48 +03:00
omap7xx.h omap1: Add 7xx clocks and pin muxes for SPI 2010-01-08 10:29:05 -08:00
omap16xx.h omap: Clean the serial port defines 2010-02-15 08:48:53 -08:00
omap24xx.h omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
omap34xx.h crypto: omap - Updates omap sham device related platform code 2010-05-03 11:10:03 +08:00
omap44xx.h OMAP4: PRM: Remove MPU internal code name and apply PRCM naming convention 2010-05-20 12:31:11 -06:00
omap730.h
omap850.h
omap1510.h
omap_device.h OMAP: hwmod/device: add omap_{device,hwmod}_get_mpu_rt_va 2010-07-26 16:34:33 -06:00
omap_hwmod.h OMAP: hwmod: Add hardreset management support 2010-09-21 15:12:40 -06:00
omap-alsa.h
omap-pm.h OMAP: PM constraints: add omap_pm_set_min_clk_rate() 2010-07-26 16:34:34 -06:00
onenand.h
param.h
powerdomain.h OMAP4 powerdomain: Support LOWPOWERSTATECHANGE for powerdomains 2010-05-20 12:31:13 -06:00
prcm.h OMAP4: prcm: Add temporarily helper functions for rmw and read inside the PRM 2010-09-21 15:11:42 -06:00
sdrc.h OMAP2: Add funcs for writing SMS_ROT_* registers 2009-12-09 11:44:32 +02:00
serial.h omap2/3: Fix DEBUG_LL for omap zoom2/3 2010-05-03 17:53:08 -07:00
smp.h omap: Fix sev instruction usage for multi-omap 2010-08-16 09:22:04 +03:00
sram.h OMAP3: PM: CORE domain off-mode support 2009-11-11 14:42:25 -08:00
system.h omap: pass the reboot command to the boot loader 2010-03-11 14:50:00 -08:00
tc.h
timer-gp.h
timex.h
uncompress.h omap: Add back UART MDR1 check into uncompress.h 2010-08-02 14:21:39 +03:00
usb.h omap: Move omap1 USB platform init code into mach-omap1/usb.c 2010-07-05 16:31:30 +03:00
vram.h ARM: OMAP: Convert OMAPFB and VRAM SDRAM reservation to LMB 2010-07-27 08:48:23 +01:00
vrfb.h OMAP: Add support for VRFB rotation engine 2009-12-09 12:04:33 +02:00