Lines Matching +full:slew +full:- +full:delay +full:- +full:us
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2002 - 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org>
4 * and Markus Demleitner <msdemlei@cl.uni-heidelberg.de>
18 #include <linux/delay.h>
73 * the various frequencies, retrieved from the device-tree
117 u32 slew, done = 0; in g5_vdnap_switch_volt() local
120 slew = (speed_mode == CPUFREQ_LOW) ? 1 : 0; in g5_vdnap_switch_volt()
122 args.u[0].p = &slew; in g5_vdnap_switch_volt()
349 int rc = -ENODEV; in g5_neo2_cpufreq_init()
360 return -ENODEV; in g5_neo2_cpufreq_init()
363 valp = of_get_property(cpunode, "cpu-version", NULL); in g5_neo2_cpufreq_init()
365 DBG("No cpu-version property !\n"); in g5_neo2_cpufreq_init()
374 /* Look for the powertune data in the device-tree */ in g5_neo2_cpufreq_init()
375 g5_pmode_data = of_get_property(cpunode, "power-mode-data",&psize); in g5_neo2_cpufreq_init()
377 DBG("No power-mode-data !\n"); in g5_neo2_cpufreq_init()
380 g5_pmode_max = psize / sizeof(u32) - 1; in g5_neo2_cpufreq_init()
390 ssize = (shdr->len * sizeof(u32)) - sizeof(*shdr); in g5_neo2_cpufreq_init()
408 pfunc_set_vdnap0 = pmf_find_function(root, "set-vdnap0"); in g5_neo2_cpufreq_init()
410 pmf_find_function(root, "slewing-done"); in g5_neo2_cpufreq_init()
426 * From what I see, clock-frequency is always the maximal frequency. in g5_neo2_cpufreq_init()
427 * The current driver can not slew sysclk yet, so we really only deal in g5_neo2_cpufreq_init()
432 valp = of_get_property(cpunode, "clock-frequency", NULL); in g5_neo2_cpufreq_init()
434 return -ENODEV; in g5_neo2_cpufreq_init()
446 * sync (voltage is right for example). Firmware may leave us with in g5_neo2_cpufreq_init()
451 g5_pmode_cur = -1; in g5_neo2_cpufreq_init()
465 * hotplug CPU with a dynamic device-tree ... in g5_neo2_cpufreq_init()
495 rc = -ENODEV; in g5_pm72_cpufreq_init()
500 for_each_node_by_name(hwclock, "i2c-hwclock") { in g5_pm72_cpufreq_init()
502 "hwctrl-location", NULL); in g5_pm72_cpufreq_init()
507 if (!of_property_present(hwclock, "platform-get-frequency")) in g5_pm72_cpufreq_init()
513 rc = -ENODEV; in g5_pm72_cpufreq_init()
521 pmf_find_function(hwclock, "get-frequency"); in g5_pm72_cpufreq_init()
523 pmf_find_function(hwclock, "set-frequency-high"); in g5_pm72_cpufreq_init()
525 pmf_find_function(hwclock, "set-frequency-low"); in g5_pm72_cpufreq_init()
527 pmf_find_function(hwclock, "slewing-done"); in g5_pm72_cpufreq_init()
529 pmf_find_function(hwclock, "set-voltage-high-0"); in g5_pm72_cpufreq_init()
531 pmf_find_function(hwclock, "set-voltage-low-0"); in g5_pm72_cpufreq_init()
533 pmf_find_function(hwclock, "set-voltage-high-1"); in g5_pm72_cpufreq_init()
535 pmf_find_function(hwclock, "set-voltage-low-1"); in g5_pm72_cpufreq_init()
541 rc = -ENODEV; in g5_pm72_cpufreq_init()
559 /* Note: The device tree also contains a "platform-set-values" in g5_pm72_cpufreq_init()
565 /* Get max frequency from device-tree */ in g5_pm72_cpufreq_init()
566 valp = of_get_property(cpunode, "clock-frequency", NULL); in g5_pm72_cpufreq_init()
569 rc = -ENODEV; in g5_pm72_cpufreq_init()
585 rc = -ENODEV; in g5_pm72_cpufreq_init()
596 rc = -ENXIO; in g5_pm72_cpufreq_init()
611 * sync (voltage is right for example). Firmware may leave us with in g5_pm72_cpufreq_init()
616 g5_pmode_cur = -1; in g5_pm72_cpufreq_init()
655 return -ENODEV; in g5_cpufreq_init()