30 May, 2016

1 commit

  • Since commits 71d076ceb245f0d9 ("ARM: shmobile: Enable PM and
    PM_GENERIC_DOMAINS for SoCs with PM Domains") and 2ee98234b88174f2
    ("arm64: renesas: Enable PM and PM_GENERIC_DOMAINS for SoCs with PM
    Domains"), CONFIG_PM and CONFIG_PM_GENERIC_DOMAINS are enabled
    unconditionally for Renesas ARM-based SoCs. Hence the legacy clock
    domain is no longer used on these SoCs.

    Remove the related support code, and stop entering drivers/sh/ on ARM.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

25 Feb, 2016

1 commit

  • CONFIG_ARCH_SHMOBILE is not only enabled for Renesas ARM platforms
    (which are DT based and multi-platform), but also on a select set of
    Renesas SuperH platforms (SH7722/SH7723/SH7724/SH7343/SH7366). Hence
    since commit 0ba58de231066e47 ("drivers: sh: Get rid of
    CONFIG_ARCH_SHMOBILE_MULTI"), the legacy clock domain is no longer
    installed on these SuperH platforms, and module clocks may not be
    enabled when needed, leading to driver failures.

    To fix this, add an additional check for CONFIG_OF.

    Fixes: 0ba58de231066e47 ("drivers: sh: Get rid of CONFIG_ARCH_SHMOBILE_MULTI").
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

17 Nov, 2015

1 commit


14 Sep, 2015

2 commits

  • If the default PM Domain using PM_CLK is used for PM runtime, the real
    Clock Domain cannot be registered from DT later.

    Hence do not enable it when running a multi-platform kernel with genpd
    support on R-Car or RZ. The CPG/MSTP Clock Domain driver will take care
    of PM runtime management of the module clocks.

    Now most multi-platform ARM shmobile platforms (SH-Mobile, R-Mobile,
    R-Car, RZ) use DT-based PM Domains to take care of PM runtime management
    of the module clocks, simplify the platform logic by replacing the
    explicit SoC checks by a single check for the presence of MSTP clocks in
    DT.

    Backwards-compatiblity with old DTs (mainly for R-Car Gen2) is provided
    by checking for the presence of a "#power-domain-cells" property in DT.

    The default PM Domain is still needed for:
    - backwards-compatibility with old DTs that lack PM Domain properties,
    - the CONFIG_PM=n case,
    - legacy (non-DT) ARM/shmobile platforms without genpd support
    (r8a7778, r8a7779),
    - legacy SuperH.

    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Ulf Hansson
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     
  • EMMA Mobile EV2 doesn't have MSTP clocks. All its device drivers manage
    clocks explicitly, without relying on Runtime PM, so it doesn't need the
    legacy default PM Domain.

    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Ulf Hansson
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

13 May, 2015

1 commit


27 Apr, 2015

3 commits

  • Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     
  • If the default PM domain using PM_CLK is used for PM runtime, the real PM
    domain(s) cannot be registered from DT later.

    Hence do not enable it when running a multi-platform kernel with genpd
    support on an r8a73a4. The R-Mobile PM domain driver will take care of
    PM runtime management of the module clocks.

    The default PM domain is still needed for:
    - platforms without genpd support,
    - the legacy (non-DT) case, where genpd may take over later, except
    for the C5 "always on" PM domain.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     
  • If the default PM domain using PM_CLK is used for PM runtime, the real PM
    domain(s) cannot be registered from DT later.

    Hence do not enable it when running a multi-platform kernel with genpd
    support on an sh73a0. The R-Mobile PM domain driver will take care of
    PM runtime management of the module clocks.

    The default PM domain is still needed for:
    - platforms without genpd support,
    - the legacy (non-DT) case, where genpd may take over later, except
    for the C5 "always on" PM domain.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

24 Feb, 2015

1 commit

  • If the default PM domain using PM_CLK is used for PM runtime, the real PM
    domain(s) cannot be registered from DT later.

    Hence do not enable it when running a multi-platform kernel with genpd
    support on an r8a7740. The R-Mobile PM domain driver will take care of
    PM runtime management of the module clocks.

    The default PM domain is still needed for:
    - platforms without genpd support,
    - the legacy (non-DT) case, where genpd may take over later, except
    for the C5 "always on" PM domain.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

05 Dec, 2014

1 commit

  • After commit b2b49ccbdd54 (PM: Kconfig: Set PM_RUNTIME if PM_SLEEP is
    selected) PM_RUNTIME is always set if PM is set, so #ifdef blocks
    depending on CONFIG_PM_RUNTIME may now be changed to depend on
    CONFIG_PM.

    Replace CONFIG_PM_RUNTIME with CONFIG_PM in drivers/sh/pm_runtime.c.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Simon Horman
    Acked-by: Geert Uytterhoeven

    Rafael J. Wysocki
     

09 Sep, 2014

1 commit


05 Jun, 2014

1 commit


26 May, 2014

2 commits

  • If we override the platform bus calls for pm_runtime then we end up
    with the calls to the devices' suspend and resume methods ignored
    in favour of the bus ones.

    Change to calling the pm_runtime calls to suspend and resume the
    devices specifically in the drivers/sh/pm_runtime.c implementation
    to allow any device that may want to run power management to do so.

    Note, all the current sh driver implementations do not use their
    own power management code so this is not a major implementation
    issues.

    This also brings the implementation into line with the versions
    used by the Davinci and Keystone PM domain code, so once fully
    tested these implementations could be merged together.

    Signed-off-by: Ben Dooks
    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Laurent Pinchart
    Signed-off-by: Simon Horman

    Ben Dooks
     
  • In the runtime_pm idle callback the code assumes that a NULL .runtime_idle
    entry is the same as a .runtime_idle entry that returns 0 as a result. This
    means the entry in drivers/sh/pm_runtime can be removed in favour of just
    leaving the entry NULL.

    Signed-off-by: Ben Dooks
    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Laurent Pinchart
    Tested-by: Laurent Pinchart [r8a7779 legacy]
    Signed-off-by: Simon Horman

    Ben Dooks
     

12 May, 2014

1 commit

  • If the kernel is built to support multi-ARM configuration with shmobile
    support built in, then drivers/sh is not built. This contains the PM
    runtime code in drivers/sh/pm_runtime.c, which implicitly enables the
    module clocks for all devices, and thus is quite essential.
    Without this, the state of clocks depends on implicit reset state, or on
    the bootloader.

    If ARCH_SHMOBILE_MULTI then build the drivers/sh directory, but ensure that
    bits that may conflict (drivers/sh/clk if the common clock framework is
    enabled) or are not used (drivers/sh/intc), are not built.
    Also, only enable the PM runtime code when actually running on a shmobile
    SoCs that needs it.

    ARCH_SHMOBILE_MULTI was added a while ago by commit
    efacfce5f8a523457e9419a25d52fe39db00b26a ("ARM: shmobile: Introduce
    ARCH_SHMOBILE_MULTI"), but drivers/sh was compiled for both
    ARCH_SHMOBILE_LEGACY and ARCH_SHMOBILE_MULTI until commit
    bf98c1eac1d4a6bcf00532e4fa41d8126cd6c187 ("ARM: Rename ARCH_SHMOBILE to
    ARCH_SHMOBILE_LEGACY").

    Inspired by a patch from Ben Dooks .

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

04 Jun, 2013

1 commit

  • The "runtime idle" helper routine, rpm_idle(), currently ignores
    return values from .runtime_idle() callbacks executed by it.
    However, it turns out that many subsystems use
    pm_generic_runtime_idle() which checks the return value of the
    driver's callback and executes pm_runtime_suspend() for the device
    unless that value is not 0. If that logic is moved to rpm_idle()
    instead, pm_generic_runtime_idle() can be dropped and its users
    will not need any .runtime_idle() callbacks any more.

    Moreover, the PCI, SCSI, and SATA subsystems' .runtime_idle()
    routines, pci_pm_runtime_idle(), scsi_runtime_idle(), and
    ata_port_runtime_idle(), respectively, as well as a few drivers'
    ones may be simplified if rpm_idle() calls rpm_suspend() after 0 has
    been returned by the .runtime_idle() callback executed by it.

    To reduce overall code bloat, make the changes described above.

    Tested-by: Mika Westerberg
    Tested-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Kevin Hilman
    Reviewed-by: Ulf Hansson
    Acked-by: Alan Stern

    Rafael J. Wysocki
     

11 Nov, 2011

2 commits

  • Signed-off-by: Paul Mundt

    Paul Mundt
     
  • The runtime PM platform support stub in use by ARM-based SH/R-Mobile
    platforms contains nothing that's specifically ARM-related and instead of
    wholly generic to anything using the clock framework.

    The recent runtime PM changes interact rather badly with the lazy
    disabling of clocks late in the boot process through the clock framework,
    leading to situations where the runtime suspend/resume paths are entered
    without a clock being actively driven due to having been lazily gated
    off.

    In order to correct this we can trivially tie in the aforementioned stub
    as a general fallback for all SH platforms that don't presently have
    their own runtime PM implementations (the corner case being SH-based
    SH-Mobile platforms, which have their own stub through the hwblk API --
    which in turn has bitrotted and will be subsequently adapted to use the
    same stub as everyone else), regardless of whether the platforms choose
    to define power domains of their own or not.

    This fixes up regressions for clock framework users who also build in
    runtime PM support without any specific power domains of their own, which
    was previously causing the serial console to be lost when warring with
    lazy clock disabling.

    Signed-off-by: Paul Mundt

    Paul Mundt