// SPDX-License-Identifier: GPL-2.0-only /* * Copyright 2021 Linaro Limited * * Author: Daniel Lezcano <daniel.lezcano@linaro.org> * * DTPM hierarchy description */ #include <linux/dtpm.h> #include <linux/module.h> #include <linux/of.h> #include <linux/platform_device.h> static struct dtpm_node __initdata rk3399_hierarchy[] = { [0]{ .name = "rk3399", .type = DTPM_NODE_VIRTUAL }, [1]{ .name = "package", .type = DTPM_NODE_VIRTUAL, .parent = &rk3399_hierarchy[0] }, [2]{ .name = "/cpus/cpu@0", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [3]{ .name = "/cpus/cpu@1", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [4]{ .name = "/cpus/cpu@2", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [5]{ .name = "/cpus/cpu@3", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [6]{ .name = "/cpus/cpu@100", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [7]{ .name = "/cpus/cpu@101", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [8]{ .name = "/gpu@ff9a0000", .type = DTPM_NODE_DT, .parent = &rk3399_hierarchy[1] }, [9]{ /* sentinel */ } }; static struct of_device_id __initdata rockchip_dtpm_match_table[] = { { .compatible = "rockchip,rk3399", .data = rk3399_hierarchy }, {}, }; static int __init rockchip_dtpm_init(void) { return dtpm_create_hierarchy(rockchip_dtpm_match_table); } module_init(rockchip_dtpm_init); static void __exit rockchip_dtpm_exit(void) { return dtpm_destroy_hierarchy(); } module_exit(rockchip_dtpm_exit); MODULE_SOFTDEP("pre: panfrost cpufreq-dt"); MODULE_DESCRIPTION("Rockchip DTPM driver"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:dtpm"); MODULE_AUTHOR("Daniel Lezcano <daniel.lezcano@kernel.org");