Lines Matching +full:sun50i +full:- +full:cpufreq +full:- +full:nvmem
1 // SPDX-License-Identifier: GPL-2.0
3 * Allwinner CPUFreq nvmem based driver
5 * The sun50i-cpufreq-nvmem driver reads the efuse value from the SoC to
14 #include <linux/nvmem-consumer.h>
28 * sun50i_cpufreq_get_efuse() - Determine speed grade from efuse value
44 return -ENODEV; in sun50i_cpufreq_get_efuse()
48 return -ENOENT; in sun50i_cpufreq_get_efuse()
51 "allwinner,sun50i-h6-operating-points"); in sun50i_cpufreq_get_efuse()
54 return -ENOENT; in sun50i_cpufreq_get_efuse()
60 if (PTR_ERR(speedbin_nvmem) != -EPROBE_DEFER) in sun50i_cpufreq_get_efuse()
61 pr_err("Could not get nvmem cell: %ld\n", in sun50i_cpufreq_get_efuse()
75 * the slowest bin. Expected efuse values are 1-3, slowest in sun50i_cpufreq_get_efuse()
79 *versions = efuse_value - 1; in sun50i_cpufreq_get_efuse()
98 return -ENOMEM; in sun50i_cpufreq_nvmem_probe()
110 ret = -ENODEV; in sun50i_cpufreq_nvmem_probe()
122 cpufreq_dt_pdev = platform_device_register_simple("cpufreq-dt", -1, in sun50i_cpufreq_nvmem_probe()
162 .name = "sun50i-cpufreq-nvmem",
167 { .compatible = "allwinner,sun50i-h6" },
185 * Since the driver depends on nvmem drivers, which may return EPROBE_DEFER,
196 return -ENODEV; in sun50i_cpufreq_init()
203 platform_device_register_simple("sun50i-cpufreq-nvmem", in sun50i_cpufreq_init()
204 -1, NULL, 0); in sun50i_cpufreq_init()
221 MODULE_DESCRIPTION("Sun50i-h6 cpufreq driver");