From: Paul Walmsley Date: Mon, 27 Feb 2012 22:23:56 +0000 (-0700) Subject: ARM: OMAP2+: hwmod: revise hardreset behavior X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15028b90ff9c07c159925d3a7885f60294d18829;p=pandora-kernel.git ARM: OMAP2+: hwmod: revise hardreset behavior Change the way that hardreset lines are handled by the hwmod code. Hardreset lines are generally associated with initiator IP blocks. Prior to this change, the hwmod code expected to control hardreset lines itself, asserting them on shutdown and deasserting them upon enable. But driver authors inside TI have commented to us that their drivers require direct control over these lines. Unfortunately, these drivers haven't been posted publicly yet, so it's hard to determine exactly what is needed, a priori. This change attempts to set forth some reasonable semantics that should be an improvement over the current code. The semantics implemented by this patch are as follows: - If the hwmod is not marked with HWMOD_INIT_NO_RESET, then assert all associated hardreset lines during IP block setup. This is intended to place the IP blocks into a known state that will not interfere with other devices during kernel boot. - IP blocks with hardreset lines will not be automatically enabled or idled during setup. Instead, they will be left in the INITIALIZED state. - When the hwmod code is asked to enable the IP block -- presumably by the driver -- all clocks will be enabled, but the hardreset lines will remain untouched. For this to not return timeout warnings if the hardreset lines are asserted, we bypass the PRCM transition test. - When the hwmod code is asked to idle the IP block -- presumably by the driver -- all clocks will be disabled, but the hardreset lines will remain untouched. For this to not return timeout warnings if the hardreset lines are asserted, we bypass the PRCM transition test. Custom reset functions for IP blocks with hardreset lines still should be supported and are strongly endorsed. It is intended that every subsystem with hardreset lines should have a custom reset function that can place their subsystem into quiescent idle with the hardreset lines deasserted. This reverts most of commit 5365efbe29250a227502256cc912351fe2157b42 ("OMAP: hwmod: Add hardreset management support"). Later code reorganizations caused the sequencing of the code from this patch to be changed, anyway. It is expected that drivers may require additional functions to be exposed from the hwmod code, such as a function to allow drivers to wait for IDLEST bits to change after hardreset lines are toggled. Driver authors are expected to propose these if needed. Signed-off-by: Paul Walmsley Cc: BenoƮt Cousson --- Reading git-diff-tree failed