forked from Minki/linux
0378ba4899
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 commit0ba58de231
("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:0ba58de231
("drivers: sh: Get rid of CONFIG_ARCH_SHMOBILE_MULTI"). Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
/*
|
|
* Runtime PM support code
|
|
*
|
|
* Copyright (C) 2009-2010 Magnus Damm
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*/
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/io.h>
|
|
#include <linux/pm_runtime.h>
|
|
#include <linux/pm_domain.h>
|
|
#include <linux/pm_clock.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/clk.h>
|
|
#include <linux/sh_clk.h>
|
|
#include <linux/bitmap.h>
|
|
#include <linux/slab.h>
|
|
|
|
static struct dev_pm_domain default_pm_domain = {
|
|
.ops = {
|
|
USE_PM_CLK_RUNTIME_OPS
|
|
USE_PLATFORM_PM_SLEEP_OPS
|
|
},
|
|
};
|
|
|
|
static struct pm_clk_notifier_block platform_bus_notifier = {
|
|
.pm_domain = &default_pm_domain,
|
|
.con_ids = { NULL, },
|
|
};
|
|
|
|
static int __init sh_pm_runtime_init(void)
|
|
{
|
|
if (IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_ARCH_SHMOBILE)) {
|
|
if (!of_find_compatible_node(NULL, NULL,
|
|
"renesas,cpg-mstp-clocks"))
|
|
return 0;
|
|
if (IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS_OF) &&
|
|
of_find_node_with_property(NULL, "#power-domain-cells"))
|
|
return 0;
|
|
}
|
|
|
|
pm_clk_add_notifier(&platform_bus_type, &platform_bus_notifier);
|
|
return 0;
|
|
}
|
|
core_initcall(sh_pm_runtime_init);
|