// SPDX-License-Identifier: GPL-2.0-only /* * Copyright 2021 Linaro Limited * * Author: Daniel Lezcano * * DTPM hierarchy description */ #include #include #include #include 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