162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright 2021 Linaro Limited 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Author: Daniel Lezcano <daniel.lezcano@linaro.org> 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * DTPM hierarchy description 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci#include <linux/dtpm.h> 1062306a36Sopenharmony_ci#include <linux/module.h> 1162306a36Sopenharmony_ci#include <linux/of.h> 1262306a36Sopenharmony_ci#include <linux/platform_device.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cistatic struct dtpm_node __initdata rk3399_hierarchy[] = { 1562306a36Sopenharmony_ci [0] = { .name = "rk3399", 1662306a36Sopenharmony_ci .type = DTPM_NODE_VIRTUAL }, 1762306a36Sopenharmony_ci [1] = { .name = "package", 1862306a36Sopenharmony_ci .type = DTPM_NODE_VIRTUAL, 1962306a36Sopenharmony_ci .parent = &rk3399_hierarchy[0] }, 2062306a36Sopenharmony_ci [2] = { .name = "/cpus/cpu@0", 2162306a36Sopenharmony_ci .type = DTPM_NODE_DT, 2262306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 2362306a36Sopenharmony_ci [3] = { .name = "/cpus/cpu@1", 2462306a36Sopenharmony_ci .type = DTPM_NODE_DT, 2562306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 2662306a36Sopenharmony_ci [4] = { .name = "/cpus/cpu@2", 2762306a36Sopenharmony_ci .type = DTPM_NODE_DT, 2862306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 2962306a36Sopenharmony_ci [5] = { .name = "/cpus/cpu@3", 3062306a36Sopenharmony_ci .type = DTPM_NODE_DT, 3162306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 3262306a36Sopenharmony_ci [6] = { .name = "/cpus/cpu@100", 3362306a36Sopenharmony_ci .type = DTPM_NODE_DT, 3462306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 3562306a36Sopenharmony_ci [7] = { .name = "/cpus/cpu@101", 3662306a36Sopenharmony_ci .type = DTPM_NODE_DT, 3762306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 3862306a36Sopenharmony_ci [8] = { .name = "/gpu@ff9a0000", 3962306a36Sopenharmony_ci .type = DTPM_NODE_DT, 4062306a36Sopenharmony_ci .parent = &rk3399_hierarchy[1] }, 4162306a36Sopenharmony_ci [9] = { /* sentinel */ } 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cistatic struct of_device_id __initdata rockchip_dtpm_match_table[] = { 4562306a36Sopenharmony_ci { .compatible = "rockchip,rk3399", .data = rk3399_hierarchy }, 4662306a36Sopenharmony_ci {}, 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistatic int __init rockchip_dtpm_init(void) 5062306a36Sopenharmony_ci{ 5162306a36Sopenharmony_ci return dtpm_create_hierarchy(rockchip_dtpm_match_table); 5262306a36Sopenharmony_ci} 5362306a36Sopenharmony_cimodule_init(rockchip_dtpm_init); 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_cistatic void __exit rockchip_dtpm_exit(void) 5662306a36Sopenharmony_ci{ 5762306a36Sopenharmony_ci return dtpm_destroy_hierarchy(); 5862306a36Sopenharmony_ci} 5962306a36Sopenharmony_cimodule_exit(rockchip_dtpm_exit); 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ciMODULE_SOFTDEP("pre: panfrost cpufreq-dt"); 6262306a36Sopenharmony_ciMODULE_DESCRIPTION("Rockchip DTPM driver"); 6362306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 6462306a36Sopenharmony_ciMODULE_ALIAS("platform:dtpm"); 6562306a36Sopenharmony_ciMODULE_AUTHOR("Daniel Lezcano <daniel.lezcano@kernel.org"); 66