diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-11-08 11:16:13 +0100 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2011-11-08 11:16:13 +0100 |
commit | 13662dc5b177d68885695ef513dd4ae0e4d2a099 (patch) | |
tree | eac0ee192bd0bf750368e82909dcec095e54800d /arch/arm/plat-omap | |
parent | ARM: OMAP2/3: HWMOD: Add SYSS_HAS_RESET_STATUS for dss (diff) | |
download | linux-13662dc5b177d68885695ef513dd4ae0e4d2a099.tar.xz linux-13662dc5b177d68885695ef513dd4ae0e4d2a099.zip |
ARM: OMAP: HWMOD: Unify DSS resets for OMAPs
This patch adds a custom DSS reset function used on OMAPs from OMAP2
forward.
The function doesn't actually do a reset, it only waits for the reset to
complete. The reason for this is that on OMAP4 there is no possibility
to do a SW reset, and on OMAP2/3 doing a SW reset for dss_core resets
all the other DSS modules also, thus breaking the HWMOD model where
every DSS module is handled independently.
This fixes the problem with DSS reset on OMAP4, caused by the fact that
because there's no SW reset for dss_core on OMAP4, the HWMOD framework
doesn't try to reset dss_core and thus the DSS clocks were never enabled
at the same time. This causes causes the HWMOD reset to fail for
dss_dispc and dss_rfbi.
The common reset function will also allow us to fix another problem in
the future: before doing a reset we need to disable DSS outputs, which
are in some cases enabled by the bootloader, as otherwise DSS HW seems
to get more or less stuck, requiring a power reset to recover.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
[paul@pwsan.com: modified to build arch/arm/mach-omap2/display.o
unconditionally to avoid an error when !CONFIG_OMAP2_DSS]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r-- | arch/arm/plat-omap/include/plat/common.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/include/plat/common.h b/arch/arm/plat-omap/include/plat/common.h index c50df4814f6f..3ff3e36580f2 100644 --- a/arch/arm/plat-omap/include/plat/common.h +++ b/arch/arm/plat-omap/include/plat/common.h @@ -30,6 +30,7 @@ #include <linux/delay.h> #include <plat/i2c.h> +#include <plat/omap_hwmod.h> struct sys_timer; @@ -55,6 +56,8 @@ void am35xx_init_early(void); void ti816x_init_early(void); void omap4430_init_early(void); +extern int omap_dss_reset(struct omap_hwmod *); + void omap_sram_init(void); /* |