18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * PM domain driver for Keystone2 devices 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2013 Texas Instruments, Inc. 68c2ecf20Sopenharmony_ci * Santosh Shilimkar <santosh.shillimkar@ti.com> 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Based on Kevins work on DAVINCI SOCs 98c2ecf20Sopenharmony_ci * Kevin Hilman <khilman@linaro.org> 108c2ecf20Sopenharmony_ci */ 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include <linux/init.h> 138c2ecf20Sopenharmony_ci#include <linux/pm_runtime.h> 148c2ecf20Sopenharmony_ci#include <linux/pm_clock.h> 158c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 168c2ecf20Sopenharmony_ci#include <linux/of.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#include "keystone.h" 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic struct dev_pm_domain keystone_pm_domain = { 218c2ecf20Sopenharmony_ci .ops = { 228c2ecf20Sopenharmony_ci USE_PM_CLK_RUNTIME_OPS 238c2ecf20Sopenharmony_ci USE_PLATFORM_PM_SLEEP_OPS 248c2ecf20Sopenharmony_ci }, 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic struct pm_clk_notifier_block platform_domain_notifier = { 288c2ecf20Sopenharmony_ci .pm_domain = &keystone_pm_domain, 298c2ecf20Sopenharmony_ci .con_ids = { NULL }, 308c2ecf20Sopenharmony_ci}; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic const struct of_device_id of_keystone_table[] = { 338c2ecf20Sopenharmony_ci {.compatible = "ti,k2hk"}, 348c2ecf20Sopenharmony_ci {.compatible = "ti,k2e"}, 358c2ecf20Sopenharmony_ci {.compatible = "ti,k2l"}, 368c2ecf20Sopenharmony_ci { /* end of list */ }, 378c2ecf20Sopenharmony_ci}; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciint __init keystone_pm_runtime_init(void) 408c2ecf20Sopenharmony_ci{ 418c2ecf20Sopenharmony_ci struct device_node *np; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci np = of_find_matching_node(NULL, of_keystone_table); 448c2ecf20Sopenharmony_ci if (!np) 458c2ecf20Sopenharmony_ci return 0; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci pm_clk_add_notifier(&platform_bus_type, &platform_domain_notifier); 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci return 0; 508c2ecf20Sopenharmony_ci} 51