162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Runtime PM support code for OMAP1
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Author: Kevin Hilman, Deep Root Systems, LLC
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 2010 Texas Instruments, Inc.
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci#include <linux/init.h>
1062306a36Sopenharmony_ci#include <linux/kernel.h>
1162306a36Sopenharmony_ci#include <linux/io.h>
1262306a36Sopenharmony_ci#include <linux/pm_runtime.h>
1362306a36Sopenharmony_ci#include <linux/pm_clock.h>
1462306a36Sopenharmony_ci#include <linux/platform_device.h>
1562306a36Sopenharmony_ci#include <linux/mutex.h>
1662306a36Sopenharmony_ci#include <linux/clk.h>
1762306a36Sopenharmony_ci#include <linux/err.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "soc.h"
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistatic struct dev_pm_domain default_pm_domain = {
2262306a36Sopenharmony_ci	.ops = {
2362306a36Sopenharmony_ci		USE_PM_CLK_RUNTIME_OPS
2462306a36Sopenharmony_ci		USE_PLATFORM_PM_SLEEP_OPS
2562306a36Sopenharmony_ci	},
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cistatic struct pm_clk_notifier_block platform_bus_notifier = {
2962306a36Sopenharmony_ci	.pm_domain = &default_pm_domain,
3062306a36Sopenharmony_ci	.con_ids = { "ick", "fck", NULL, },
3162306a36Sopenharmony_ci};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cistatic int __init omap1_pm_runtime_init(void)
3462306a36Sopenharmony_ci{
3562306a36Sopenharmony_ci	if (!cpu_class_is_omap1())
3662306a36Sopenharmony_ci		return -ENODEV;
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	pm_clk_add_notifier(&platform_bus_type, &platform_bus_notifier);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	return 0;
4162306a36Sopenharmony_ci}
4262306a36Sopenharmony_cicore_initcall(omap1_pm_runtime_init);
43