diff options
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 9 | ||||
| -rw-r--r-- | arch/arm/plat-omap/include/plat/omap_hwmod.h | 4 |
3 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 2c27fdb61e66..45f1d9c44e94 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
| @@ -1422,6 +1422,9 @@ static int _ocp_softreset(struct omap_hwmod *oh) | |||
| 1422 | goto dis_opt_clks; | 1422 | goto dis_opt_clks; |
| 1423 | _write_sysconfig(v, oh); | 1423 | _write_sysconfig(v, oh); |
| 1424 | 1424 | ||
| 1425 | if (oh->class->sysc->srst_udelay) | ||
| 1426 | udelay(oh->class->sysc->srst_udelay); | ||
| 1427 | |||
| 1425 | if (oh->class->sysc->sysc_flags & SYSS_HAS_RESET_STATUS) | 1428 | if (oh->class->sysc->sysc_flags & SYSS_HAS_RESET_STATUS) |
| 1426 | omap_test_timeout((omap_hwmod_read(oh, | 1429 | omap_test_timeout((omap_hwmod_read(oh, |
| 1427 | oh->class->sysc->syss_offs) | 1430 | oh->class->sysc->syss_offs) |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index cc9bd106a854..6abc75753e42 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -2594,6 +2594,15 @@ static struct omap_hwmod omap44xx_ipu_hwmod = { | |||
| 2594 | static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = { | 2594 | static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = { |
| 2595 | .rev_offs = 0x0000, | 2595 | .rev_offs = 0x0000, |
| 2596 | .sysc_offs = 0x0010, | 2596 | .sysc_offs = 0x0010, |
| 2597 | /* | ||
| 2598 | * ISS needs 100 OCP clk cycles delay after a softreset before | ||
| 2599 | * accessing sysconfig again. | ||
| 2600 | * The lowest frequency at the moment for L3 bus is 100 MHz, so | ||
| 2601 | * 1usec delay is needed. Add an x2 margin to be safe (2 usecs). | ||
| 2602 | * | ||
| 2603 | * TODO: Indicate errata when available. | ||
| 2604 | */ | ||
| 2605 | .srst_udelay = 2, | ||
| 2597 | .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS | | 2606 | .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS | |
| 2598 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), | 2607 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), |
| 2599 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | 2608 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | |
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h index 8070145ccb98..3f26db4ee8e6 100644 --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h | |||
| @@ -305,6 +305,7 @@ struct omap_hwmod_sysc_fields { | |||
| 305 | * @rev_offs: IP block revision register offset (from module base addr) | 305 | * @rev_offs: IP block revision register offset (from module base addr) |
| 306 | * @sysc_offs: OCP_SYSCONFIG register offset (from module base addr) | 306 | * @sysc_offs: OCP_SYSCONFIG register offset (from module base addr) |
| 307 | * @syss_offs: OCP_SYSSTATUS register offset (from module base addr) | 307 | * @syss_offs: OCP_SYSSTATUS register offset (from module base addr) |
| 308 | * @srst_udelay: Delay needed after doing a softreset in usecs | ||
| 308 | * @idlemodes: One or more of {SIDLE,MSTANDBY}_{OFF,FORCE,SMART} | 309 | * @idlemodes: One or more of {SIDLE,MSTANDBY}_{OFF,FORCE,SMART} |
| 309 | * @sysc_flags: SYS{C,S}_HAS* flags indicating SYSCONFIG bits supported | 310 | * @sysc_flags: SYS{C,S}_HAS* flags indicating SYSCONFIG bits supported |
| 310 | * @clockact: the default value of the module CLOCKACTIVITY bits | 311 | * @clockact: the default value of the module CLOCKACTIVITY bits |
| @@ -330,9 +331,10 @@ struct omap_hwmod_class_sysconfig { | |||
| 330 | u16 sysc_offs; | 331 | u16 sysc_offs; |
| 331 | u16 syss_offs; | 332 | u16 syss_offs; |
| 332 | u16 sysc_flags; | 333 | u16 sysc_flags; |
| 334 | struct omap_hwmod_sysc_fields *sysc_fields; | ||
| 335 | u8 srst_udelay; | ||
| 333 | u8 idlemodes; | 336 | u8 idlemodes; |
| 334 | u8 clockact; | 337 | u8 clockact; |
| 335 | struct omap_hwmod_sysc_fields *sysc_fields; | ||
| 336 | }; | 338 | }; |
| 337 | 339 | ||
| 338 | /** | 340 | /** |
