lkml.org 
[lkml]   [2016]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.2.y-ckt 71/98] ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property
    Date
    4.2.8-ckt6 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Lokesh Vutla <lokeshvutla@ti.com>

    commit 2e18f5a1bc18e8af7031b3b26efde25307014837 upstream.

    Introduce a dt property, ti,no-idle, that prevents an IP to idle at any
    point. This is to handle Errata i877, which tells that GMAC clocks
    cannot be disabled.

    Acked-by: Roger Quadros <rogerq@ti.com>
    Tested-by: Mugunthan V N <mugunthanvnm@ti.com>
    Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Paul Walmsley <paul@pwsan.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    Documentation/devicetree/bindings/arm/omap/omap.txt | 1 +
    arch/arm/mach-omap2/omap_hwmod.c | 9 ++++++++-
    arch/arm/mach-omap2/omap_hwmod.h | 3 +++
    3 files changed, 12 insertions(+), 1 deletion(-)

    diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt
    index 4f6a82c..cbe35b3 100644
    --- a/Documentation/devicetree/bindings/arm/omap/omap.txt
    +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
    @@ -23,6 +23,7 @@ Optional properties:
    during suspend.
    - ti,no-reset-on-init: When present, the module should not be reset at init
    - ti,no-idle-on-init: When present, the module should not be idled at init
    +- ti,no-idle: When present, the module is never allowed to idle.

    Example:

    diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
    index 486cc4d..573da0d 100644
    --- a/arch/arm/mach-omap2/omap_hwmod.c
    +++ b/arch/arm/mach-omap2/omap_hwmod.c
    @@ -2180,6 +2180,11 @@ static int _enable(struct omap_hwmod *oh)
    */
    static int _idle(struct omap_hwmod *oh)
    {
    + if (oh->flags & HWMOD_NO_IDLE) {
    + oh->_int_flags |= _HWMOD_SKIP_ENABLE;
    + return 0;
    + }
    +
    pr_debug("omap_hwmod: %s: idling\n", oh->name);

    if (oh->_state != _HWMOD_STATE_ENABLED) {
    @@ -2484,6 +2489,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
    oh->flags |= HWMOD_INIT_NO_RESET;
    if (of_find_property(np, "ti,no-idle-on-init", NULL))
    oh->flags |= HWMOD_INIT_NO_IDLE;
    + if (of_find_property(np, "ti,no-idle", NULL))
    + oh->flags |= HWMOD_NO_IDLE;
    }

    oh->_state = _HWMOD_STATE_INITIALIZED;
    @@ -2610,7 +2617,7 @@ static void __init _setup_postsetup(struct omap_hwmod *oh)
    * XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
    * it should be set by the core code as a runtime flag during startup
    */
    - if ((oh->flags & HWMOD_INIT_NO_IDLE) &&
    + if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) &&
    (postsetup_state == _HWMOD_STATE_IDLE)) {
    oh->_int_flags |= _HWMOD_SKIP_ENABLE;
    postsetup_state = _HWMOD_STATE_ENABLED;
    diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
    index b5d27ec..1681310 100644
    --- a/arch/arm/mach-omap2/omap_hwmod.h
    +++ b/arch/arm/mach-omap2/omap_hwmod.h
    @@ -523,6 +523,8 @@ struct omap_hwmod_omap4_prcm {
    * HWMOD_RECONFIG_IO_CHAIN: omap_hwmod code needs to reconfigure wake-up
    * events by calling _reconfigure_io_chain() when a device is enabled
    * or idled.
    + * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain
    + * IPs like CPSW on DRA7, where clocks to this module cannot be disabled.
    */
    #define HWMOD_SWSUP_SIDLE (1 << 0)
    #define HWMOD_SWSUP_MSTANDBY (1 << 1)
    @@ -538,6 +540,7 @@ struct omap_hwmod_omap4_prcm {
    #define HWMOD_FORCE_MSTANDBY (1 << 11)
    #define HWMOD_SWSUP_SIDLE_ACT (1 << 12)
    #define HWMOD_RECONFIG_IO_CHAIN (1 << 13)
    +#define HWMOD_NO_IDLE (1 << 15)

    /*
    * omap_hwmod._int_flags definitions
    --
    2.7.0
    \
     
     \ /
      Last update: 2016-03-16 01:21    [W:4.043 / U:0.456 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site