A few more OMAP fixes for the 3.7-rc timeframe. Mostly hwmod fixes.
Basic test logs are available here:
http://www.pwsan.com/omap/testlogs/fixes_b_v3.7-rc/20121029222655/
However the v3.7-rc3 kernel is still missing fixes for several regressions,
which cause several tests to fail. With several reverts, fixes, and workarounds
applied, the following test logs were obtained:
http://www.pwsan.com/omap/testlogs/TEST_fixes_b_v3.7-rc/20121030185805/
which indicate that the series tests cleanly.
- Paul
---
vmlinux object size
(delta in bytes from test_v3.7-rc3 (8f0d8163b50e01f398b14bcd4dc039ac5ab18d64)):
text data bss total kernel
-108 -8 0 -116 am33xx_only
+56 +16 0 +72 n800_multi_omap2xxx
+20 +16 0 +36 n800_only_a
0 0 0 0 omap1_defconfig
0 0 0 0 omap1_defconfig_1510innovator_only
0 0 0 0 omap1_defconfig_5912osk_only
-92 -16 0 -108 omap2plus_defconfig
-96 -8 0 -104 omap2plus_defconfig_2430sdp_only
-92 +16 0 -76 omap2plus_defconfig_cpupm
-92 -16 0 -108 omap2plus_defconfig_no_pm
-92 +16 0 -76 omap2plus_defconfig_omap2_4_only
-172 +16 0 -156 omap2plus_defconfig_omap3_4_only
+12 +16 0 +28 rmk_omap3430_ldp_oldconfig
+44 +24 0 +68 rmk_omap4430_sdp_oldconfig
Miguel Vadillo (1):
ARM: OMAP2+: clockdomain: Fix OMAP4 ISS clk domain to support only SWSUP
Paul Walmsley (2):
ARM: OMAP2+: hwmod: add flag to prevent hwmod code from touching IP block during init
ARM: OMAP4: hwmod data: do not enable or reset the McPDM during kernel init
Tero Kristo (1):
ARM: OMAP: hwmod: wait for sysreset complete after enabling hwmod
arch/arm/mach-omap2/clockdomains44xx_data.c | 2 -
arch/arm/mach-omap2/omap_hwmod.c | 59 ++++++++++++++++++++------
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 8 ++++
arch/arm/plat-omap/include/plat/omap_hwmod.h | 6 +++
4 files changed, 60 insertions(+), 15 deletions(-)
From: Miguel Vadillo <redacted>
Since CAM domain (ISS) has no module wake-up dependency
with any other clock domain of the device and the dynamic
dependency from L3_main_2 is always disabled, the domain
needs to be in force wakeup in order to be able to access
it for configure (sysconfig) it or use it.
Also since there is no clock in the domain managed automatically
by the hardware, there is no use to configure automatic
clock domain transition. SW should keep the SW_WKUP domain
transition as long as a module in the domain is required to
be functional.
Signed-off-by: Miguel Vadillo <redacted>
Signed-off-by: Benoit Cousson <redacted>
---
arch/arm/mach-omap2/clockdomains44xx_data.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
From: Tero Kristo <redacted>
When waking up from off-mode, some IP blocks are reset automatically by
hardware. For this reason, software must wait until the reset has
completed before attempting to access the IP block.
This patch fixes for example the bug introduced by commit
6c31b2150ff96755d24e0ab6d6fea08a7bf5c44c ("mmc: omap_hsmmc: remove access
to SYSCONFIG register"), in which the MMC IP block is reset during
off-mode entry, but the code expects the module to be already available
during the execution of context restore.
Signed-off-by: Tero Kristo <redacted>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Benoit Cousson <redacted>
Cc: Venkatraman S <redacted>
Tested-by: Kevin Hilman <redacted>
[paul at pwsan.com: moved softreset wait code into separate function; call
from top of _enable_sysc() rather than the bottom]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
---
arch/arm/mach-omap2/omap_hwmod.c | 56 +++++++++++++++++++++++++++++---------
1 file changed, 42 insertions(+), 14 deletions(-)
Add HWMOD_EXT_OPT_MAIN_CLK flag to indicate that this IP block is
dependent on an off-chip functional clock that is not guaranteed to be
present during initialization. IP blocks marked with this flag are
left in the INITIALIZED state during kernel init.
This is a workaround for a hardware problem. It should be possible to
guarantee that at least one clock source will be present and active
for any IP block's main functional clock. This ensures that the hwmod
code can enable and reset the IP block. Resetting the IP block during
kernel init prevents any bogus bootloader, ROM code, or previous OS
configuration from affecting the kernel. Hopefully a clock
multiplexer can be added on future SoCs.
N.B., at some point in the future, it should be possible to query the
clock framework for this type of information. Then this flag should
no longer be needed.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Beno?t Cousson <redacted>
---
arch/arm/mach-omap2/omap_hwmod.c | 3 +++
arch/arm/plat-omap/include/plat/omap_hwmod.h | 6 ++++++
2 files changed, 9 insertions(+)
Resolve this kernel boot message:
omap_hwmod: mcpdm: cannot be enabled for reset (3)
The McPDM on OMAP4 can only receive its functional clock from an
off-chip source. This source is not guaranteed to be present on the
board, and when present, it is controlled by I2C. This would
introduce a board dependency to the early hwmod code which it was not
designed to handle. Also, neither the driver for this off-chip clock
provider nor the I2C code is available early in boot when the hwmod
code is attempting to enable and reset IP blocks. This effectively
makes it impossible to enable and reset this device during hwmod init.
At its core, this patch is a workaround for an OMAP hardware problem.
It should be possible to configure the OMAP to provide any IP block's
functional clock from an on-chip source. (This is true for almost
every IP block on the chip. As far as I know, McPDM is the only
exception.) If the kernel cannot reset and configure IP blocks, it
cannot guarantee a sane SoC state. Relying on an optional off-chip
clock also creates a board dependency which is beyond the scope of the
early hwmod code.
This patch works around the issue by marking the McPDM hwmod record
with the HWMOD_EXT_OPT_MAIN_CLK flag. This prevents the hwmod
code from touching the device early during boot.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: P?ter Ujfalusi <redacted>
Cc: Beno?t Cousson <redacted>
Acked-by: Peter Ujfalusi <redacted>
---
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 8 ++++++++
1 file changed, 8 insertions(+)
Here's the updated patch for this one.
- Paul
From: Tero Kristo <redacted>
Date: Mon, 29 Oct 2012 22:02:13 -0600
Subject: [PATCH 1/3] ARM: OMAP: hwmod: wait for sysreset complete after
enabling hwmod
When waking up from off-mode, some IP blocks are reset automatically by
hardware. For this reason, software must wait until the reset has
completed before attempting to access the IP block.
This patch fixes for example the bug introduced by commit
6c31b2150ff96755d24e0ab6d6fea08a7bf5c44c ("mmc: omap_hsmmc: remove access
to SYSCONFIG register"), in which the MMC IP block is reset during
off-mode entry, but the code expects the module to be already available
during the execution of context restore.
This version includes a fix from Kevin Hilman [off-list ref] for
GPIO problems on the 37xx EVM - thanks Kevin.
Signed-off-by: Tero Kristo <redacted>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Benoit Cousson <redacted>
Cc: Venkatraman S <redacted>
Tested-by: Kevin Hilman <redacted>
Cc: Kevin Hilman <redacted>
[paul at pwsan.com: moved softreset wait code into separate function; call
from top of _enable_sysc() rather than the bottom; include fix from Kevin
Hilman for GPIO sluggishness]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
---
arch/arm/mach-omap2/omap_hwmod.c | 60 +++++++++++++++++++++++++++++---------
1 file changed, 46 insertions(+), 14 deletions(-)