Lines Matching +full:switching +full:- +full:freq
2 * Copyright (C) 2002 - 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org>
3 * and Markus Demleitner <msdemlei@cl.uni-heidelberg.de>
49 #define PCR_FREQ_REQ_VALID 0x00010000U /* freq request valid */
76 * the various frequencies, retrieved from the device-tree
96 * SMU based voltage switching for Neo2 platforms
111 * Platform function based voltage/vdnap switching for Neo2
148 * SCOM based frequency switching for 970FX rev3
208 * Fake voltage switching for platforms with missing support
218 * Platform function based voltage switching for PowerMac7,2 & 7,3
243 * Platform function based frequency switching for PowerMac7,2 & 7,3
352 int rc = -ENODEV; in g5_neo2_cpufreq_init()
363 return -ENODEV; in g5_neo2_cpufreq_init()
366 valp = of_get_property(cpunode, "cpu-version", NULL); in g5_neo2_cpufreq_init()
368 DBG("No cpu-version property !\n"); in g5_neo2_cpufreq_init()
377 /* Look for the powertune data in the device-tree */ in g5_neo2_cpufreq_init()
378 g5_pmode_data = of_get_property(cpunode, "power-mode-data",&psize); in g5_neo2_cpufreq_init()
380 DBG("No power-mode-data !\n"); in g5_neo2_cpufreq_init()
383 g5_pmode_max = psize / sizeof(u32) - 1; in g5_neo2_cpufreq_init()
393 ssize = (shdr->len * sizeof(u32)) - sizeof(*shdr); in g5_neo2_cpufreq_init()
411 pfunc_set_vdnap0 = pmf_find_function(root, "set-vdnap0"); in g5_neo2_cpufreq_init()
413 pmf_find_function(root, "slewing-done"); in g5_neo2_cpufreq_init()
428 * From what I see, clock-frequency is always the maximal frequency. in g5_neo2_cpufreq_init()
430 * with powertune steps for now. We also only implement full freq and in g5_neo2_cpufreq_init()
431 * half freq in this version. So far, I haven't yet seen a machine in g5_neo2_cpufreq_init()
434 valp = of_get_property(cpunode, "clock-frequency", NULL); in g5_neo2_cpufreq_init()
436 return -ENODEV; in g5_neo2_cpufreq_init()
453 g5_pmode_cur = -1; in g5_neo2_cpufreq_init()
467 * hotplug CPU with a dynamic device-tree ... in g5_neo2_cpufreq_init()
497 rc = -ENODEV; in g5_pm72_cpufreq_init()
502 for_each_node_by_name(hwclock, "i2c-hwclock") { in g5_pm72_cpufreq_init()
504 "hwctrl-location", NULL); in g5_pm72_cpufreq_init()
509 if (!of_get_property(hwclock, "platform-get-frequency", NULL)) in g5_pm72_cpufreq_init()
515 rc = -ENODEV; in g5_pm72_cpufreq_init()
523 pmf_find_function(hwclock, "get-frequency"); in g5_pm72_cpufreq_init()
525 pmf_find_function(hwclock, "set-frequency-high"); in g5_pm72_cpufreq_init()
527 pmf_find_function(hwclock, "set-frequency-low"); in g5_pm72_cpufreq_init()
529 pmf_find_function(hwclock, "slewing-done"); in g5_pm72_cpufreq_init()
531 pmf_find_function(hwclock, "set-voltage-high-0"); in g5_pm72_cpufreq_init()
533 pmf_find_function(hwclock, "set-voltage-low-0"); in g5_pm72_cpufreq_init()
535 pmf_find_function(hwclock, "set-voltage-high-1"); in g5_pm72_cpufreq_init()
537 pmf_find_function(hwclock, "set-voltage-low-1"); in g5_pm72_cpufreq_init()
543 rc = -ENODEV; in g5_pm72_cpufreq_init()
561 /* Note: The device tree also contains a "platform-set-values" in g5_pm72_cpufreq_init()
567 /* Get max frequency from device-tree */ in g5_pm72_cpufreq_init()
568 valp = of_get_property(cpunode, "clock-frequency", NULL); in g5_pm72_cpufreq_init()
571 rc = -ENODEV; in g5_pm72_cpufreq_init()
577 /* Now calculate reduced frequency by using the cpuid input freq in g5_pm72_cpufreq_init()
587 rc = -ENODEV; in g5_pm72_cpufreq_init()
598 rc = -ENXIO; in g5_pm72_cpufreq_init()
618 g5_pmode_cur = -1; in g5_pm72_cpufreq_init()
657 return -ENODEV; in g5_cpufreq_init()