diff options
Diffstat (limited to 'drivers/cpufreq/cpufreq-dt-platdev.c')
| -rw-r--r-- | drivers/cpufreq/cpufreq-dt-platdev.c | 94 | 
1 files changed, 94 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c new file mode 100644 index 000000000000..3646b143bbf5 --- /dev/null +++ b/drivers/cpufreq/cpufreq-dt-platdev.c @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2016 Linaro. + * Viresh Kumar <viresh.kumar@linaro.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/err.h> +#include <linux/of.h> +#include <linux/platform_device.h> + +static const struct of_device_id machines[] __initconst = { +	{ .compatible = "allwinner,sun4i-a10", }, +	{ .compatible = "allwinner,sun5i-a10s", }, +	{ .compatible = "allwinner,sun5i-a13", }, +	{ .compatible = "allwinner,sun5i-r8", }, +	{ .compatible = "allwinner,sun6i-a31", }, +	{ .compatible = "allwinner,sun6i-a31s", }, +	{ .compatible = "allwinner,sun7i-a20", }, +	{ .compatible = "allwinner,sun8i-a23", }, +	{ .compatible = "allwinner,sun8i-a33", }, +	{ .compatible = "allwinner,sun8i-a83t", }, +	{ .compatible = "allwinner,sun8i-h3", }, + +	{ .compatible = "hisilicon,hi6220", }, + +	{ .compatible = "fsl,imx27", }, +	{ .compatible = "fsl,imx51", }, +	{ .compatible = "fsl,imx53", }, +	{ .compatible = "fsl,imx7d", }, + +	{ .compatible = "marvell,berlin", }, + +	{ .compatible = "samsung,exynos3250", }, +	{ .compatible = "samsung,exynos4210", }, +	{ .compatible = "samsung,exynos4212", }, +	{ .compatible = "samsung,exynos4412", }, +	{ .compatible = "samsung,exynos5250", }, +#ifndef CONFIG_BL_SWITCHER +	{ .compatible = "samsung,exynos5420", }, +	{ .compatible = "samsung,exynos5800", }, +#endif + +	{ .compatible = "renesas,emev2", }, +	{ .compatible = "renesas,r7s72100", }, +	{ .compatible = "renesas,r8a73a4", }, +	{ .compatible = "renesas,r8a7740", }, +	{ .compatible = "renesas,r8a7778", }, +	{ .compatible = "renesas,r8a7779", }, +	{ .compatible = "renesas,r8a7790", }, +	{ .compatible = "renesas,r8a7791", }, +	{ .compatible = "renesas,r8a7793", }, +	{ .compatible = "renesas,r8a7794", }, +	{ .compatible = "renesas,sh73a0", }, + +	{ .compatible = "rockchip,rk2928", }, +	{ .compatible = "rockchip,rk3036", }, +	{ .compatible = "rockchip,rk3066a", }, +	{ .compatible = "rockchip,rk3066b", }, +	{ .compatible = "rockchip,rk3188", }, +	{ .compatible = "rockchip,rk3228", }, +	{ .compatible = "rockchip,rk3288", }, +	{ .compatible = "rockchip,rk3366", }, +	{ .compatible = "rockchip,rk3368", }, +	{ .compatible = "rockchip,rk3399", }, + +	{ .compatible = "sigma,tango4" }, + +	{ .compatible = "ti,omap2", }, +	{ .compatible = "ti,omap3", }, +	{ .compatible = "ti,omap4", }, +	{ .compatible = "ti,omap5", }, + +	{ .compatible = "xlnx,zynq-7000", }, +}; + +static int __init cpufreq_dt_platdev_init(void) +{ +	struct device_node *np = of_find_node_by_path("/"); + +	if (!np) +		return -ENODEV; + +	if (!of_match_node(machines, np)) +		return -ENODEV; + +	of_node_put(of_root); + +	return PTR_ERR_OR_ZERO(platform_device_register_simple("cpufreq-dt", -1, +							       NULL, 0)); +} +device_initcall(cpufreq_dt_platdev_init);  | 
