| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/cpufreq/ |
| D | apple,cluster-cpufreq.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/cpufreq/apple,cluster-cpufreq.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Apple SoC cluster cpufreq device 10 - Hector Martin <marcan@marcan.st> 13 Apple SoCs (e.g. M1) have a per-cpu-cluster DVFS controller that is part of 14 the cluster management register block. This binding uses the standard 15 operating-points-v2 table to define the CPU performance states, with the 16 opp-level property specifying the hardware p-state index for that level. [all …]
|
| D | cpufreq-qcom-hw.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/cpufreq/cpufreq-qcom-hw.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Qualcomm Technologies, Inc. CPUFREQ 10 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 14 CPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI) 21 - description: v1 of CPUFREQ HW 23 - enum: 24 - qcom,qcm2290-cpufreq-hw [all …]
|
| D | cpufreq-mediatek.txt | 1 Binding for MediaTek's CPUFreq driver 5 - clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names. 6 - clock-names: Should contain the following: 7 "cpu" - The multiplexer for clock input of CPU cluster. 8 "intermediate" - A parent of "cpu" clock which is used as "intermediate" clock 11 Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for 13 - operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp-v2.yaml 15 - proc-supply: Regulator for Vproc of CPU cluster. 18 - sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver 23 - mediatek,cci: [all …]
|
| /kernel/linux/linux-6.6/arch/arm64/boot/dts/apple/ |
| D | t600x-dieX.dtsi | 1 // SPDX-License-Identifier: GPL-2.0+ OR MIT 9 DIE_NODE(cpufreq_e): cpufreq@210e20000 { 10 …compatible = "apple,t6000-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq"; 12 #performance-domain-cells = <0>; 15 DIE_NODE(cpufreq_p0): cpufreq@211e20000 { 16 …compatible = "apple,t6000-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq"; 18 #performance-domain-cells = <0>; 21 DIE_NODE(cpufreq_p1): cpufreq@212e20000 { 22 …compatible = "apple,t6000-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq"; 24 #performance-domain-cells = <0>; [all …]
|
| /kernel/linux/linux-6.6/drivers/cpufreq/ |
| D | vexpress-spc-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Versatile Express SPC CPUFreq Interface driver 5 * Copyright (C) 2013 - 2019 ARM Ltd. 16 #include <linux/cpufreq.h> 45 #define ACTUAL_FREQ(cluster, freq) ((cluster == A7_CLUSTER) ? freq << 1 : freq) argument 46 #define VIRT_FREQ(cluster, freq) ((cluster == A7_CLUSTER) ? freq >> 1 : freq) argument 71 static unsigned int find_cluster_maxfreq(int cluster) in find_cluster_maxfreq() argument 79 if (cluster == per_cpu(physical_cluster, j) && in find_cluster_maxfreq() 138 ret = -EIO; in ve_spc_cpufreq_set_rate() 154 /* Recalc freq for old cluster when switching clusters */ in ve_spc_cpufreq_set_rate() [all …]
|
| D | apple-soc-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Apple SoC CPU cluster performance state driver 7 * Based on scpi-cpufreq.c 13 #include <linux/cpufreq.h> 90 .compatible = "apple,t8103-cluster-cpufreq", 94 .compatible = "apple,t8112-cluster-cpufreq", 98 .compatible = "apple,cluster-cpufreq", 107 struct apple_cpu_priv *priv = policy->driver_data; in apple_soc_cpufreq_get_rate() 111 if (priv->info->cur_pstate_mask) { in apple_soc_cpufreq_get_rate() 112 u64 reg = readq_relaxed(priv->reg_base + APPLE_DVFS_STATUS); in apple_soc_cpufreq_get_rate() [all …]
|
| D | tegra186-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0-only 6 #include <linux/cpufreq.h> 7 #include <linux/dma-mapping.h> 13 #include <soc/tegra/bpmp-abi.h> 28 /* CPU0 - A57 Cluster */ 33 /* CPU1 - Denver Cluster */ 38 /* CPU2 - Denver Cluster */ 43 /* CPU3 - A57 Cluster */ 48 /* CPU4 - A57 Cluster */ 53 /* CPU5 - A57 Cluster */ [all …]
|
| D | tegra194-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Copyright (c) 2020 - 2022, NVIDIA CORPORATION. All rights reserved 7 #include <linux/cpufreq.h> 9 #include <linux/dma-mapping.h> 20 #include <soc/tegra/bpmp-abi.h> 32 #define SCRATCH_FREQ_CORE_REG(data, cpu) (data->regs + CMU_CLKS_BASE + CORE_OFFSET(cpu)) 36 (data->regs + (MMCRAB_CLUSTER_BASE(cl) + data->soc->actmon_cntr_base)) 39 /* cpufreq transisition latency */ 83 dev = get_cpu_device(policy->cpu); in tegra_cpufreq_set_bw() 85 return -ENODEV; in tegra_cpufreq_set_bw() [all …]
|
| D | armada-8k-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * CPUFreq support for Armada 8K 25 { .compatible = "marvell,ap806-cpu-clock" }, 26 { .compatible = "marvell,ap807-cpu-clock" }, 44 /* If the CPUs share the same clock, then they are in the same cluster. */ 84 return -EINVAL; in armada_8k_add_opp() 141 return -ENODEV; in armada_8k_cpufreq_init() 148 return -ENOMEM; in armada_8k_cpufreq_init() 190 armada_8k_pdev = platform_device_register_simple("cpufreq-dt", -1, in armada_8k_cpufreq_init() 216 MODULE_DESCRIPTION("Armada 8K cpufreq driver");
|
| D | qoriq-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0-only 11 #include <linux/clk-provider.h> 12 #include <linux/cpufreq.h> 34 * struct soc_data - SoC specific data 48 /* get platform freq by searching bus-frequency property */ in get_bus_freq() 51 ret = of_property_read_u32(soc, "bus-frequency", &sysfreq); in get_bus_freq() 58 pltclk = clk_get(NULL, "cg-pll0-div1"); in get_bus_freq() 88 struct cpumask *dstp = policy->cpus; in set_affected_cpus() 99 if (clk_is_match(policy->clk, clk)) in set_affected_cpus() 131 for (i = 0; i < count - 1; i++) { in freq_table_sort() [all …]
|
| /kernel/linux/linux-5.10/drivers/cpufreq/ |
| D | vexpress-spc-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Versatile Express SPC CPUFreq Interface driver 5 * Copyright (C) 2013 - 2019 ARM Ltd. 16 #include <linux/cpufreq.h> 47 #define ACTUAL_FREQ(cluster, freq) ((cluster == A7_CLUSTER) ? freq << 1 : freq) argument 48 #define VIRT_FREQ(cluster, freq) ((cluster == A7_CLUSTER) ? freq >> 1 : freq) argument 74 static unsigned int find_cluster_maxfreq(int cluster) in find_cluster_maxfreq() argument 82 if (cluster == per_cpu(physical_cluster, j) && in find_cluster_maxfreq() 141 ret = -EIO; in ve_spc_cpufreq_set_rate() 157 /* Recalc freq for old cluster when switching clusters */ in ve_spc_cpufreq_set_rate() [all …]
|
| D | tegra186-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0-only 6 #include <linux/cpufreq.h> 7 #include <linux/dma-mapping.h> 13 #include <soc/tegra/bpmp-abi.h> 26 #define NO_CPU -1 28 /* Denver cluster */ 34 /* A57 cluster */ 61 for (i = 0; i < data->num_clusters; i++) { in tegra186_cpufreq_init() 62 struct tegra186_cpufreq_cluster *cluster = &data->clusters[i]; in tegra186_cpufreq_init() local 64 cluster->info; in tegra186_cpufreq_init() [all …]
|
| D | tegra194-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0 7 #include <linux/cpufreq.h> 9 #include <linux/dma-mapping.h> 19 #include <soc/tegra/bpmp-abi.h> 28 /* cpufreq transisition latency */ 31 enum cluster { enum 59 static void get_cpu_cluster(void *cluster) in get_cpu_cluster() argument 63 *((uint32_t *)cluster) = MPIDR_AFFINITY_LEVEL(mpidr, 1); in get_cpu_cluster() 67 * Read per-core Read-only system register NVFREQ_FEEDBACK_EL1. 87 return nltbl->ref_clk_hz / KHZ * ndiv / (nltbl->pdiv * nltbl->mdiv); in map_ndiv_to_freq() [all …]
|
| D | armada-8k-cpufreq.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * CPUFreq support for Armada 8K 37 /* If the CPUs share the same clock, then they are in the same cluster. */ 77 return -EINVAL; in armada_8k_add_opp() 130 node = of_find_compatible_node(NULL, NULL, "marvell,ap806-cpu-clock"); in armada_8k_cpufreq_init() 133 return -ENODEV; in armada_8k_cpufreq_init() 140 return -ENOMEM; in armada_8k_cpufreq_init() 182 armada_8k_pdev = platform_device_register_simple("cpufreq-dt", -1, in armada_8k_cpufreq_init() 208 { .compatible = "marvell,ap806-cpu-clock" }, 214 MODULE_DESCRIPTION("Armada 8K cpufreq driver");
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/cpufreq/ |
| D | cpufreq-qcom-hw.txt | 1 Qualcomm Technologies, Inc. CPUFREQ Bindings 3 CPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI) 8 - compatible 11 Definition: must be "qcom,cpufreq-hw" or "qcom,cpufreq-epss". 13 - clocks 18 - clock-names 23 - reg 25 Value type: <prop-encoded-array> 28 - reg-names 32 "freq-domain0", "freq-domain1". [all …]
|
| D | cpufreq-mediatek.txt | 1 Binding for MediaTek's CPUFreq driver 5 - clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names. 6 - clock-names: Should contain the following: 7 "cpu" - The multiplexer for clock input of CPU cluster. 8 "intermediate" - A parent of "cpu" clock which is used as "intermediate" clock 11 Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for 13 - operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp.txt 15 - proc-supply: Regulator for Vproc of CPU cluster. 18 - sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver 23 - #cooling-cells: [all …]
|
| /kernel/linux/linux-5.10/Documentation/driver-api/thermal/ |
| D | cpu-cooling-api.rst | 21 1.1 cpufreq registration/unregistration APIs 22 -------------------------------------------- 29 This interface function registers the cpufreq cooling device with the name 30 "thermal-cpufreq-%x". This api can support multiple instances of cpufreq 41 This interface function registers the cpufreq cooling device with 42 the name "thermal-cpufreq-%x" linking it with a device tree node, in 44 instances of cpufreq cooling devices. 47 CPUFreq policy. 54 This interface function unregisters the "thermal-cpufreq-%x" cooling device. 63 supported currently). This power model requires that the operating-points of [all …]
|
| D | cpu-idle-cooling.rst | 1 .. SPDX-License-Identifier: GPL-2.0 8 ---------- 26 budget lower than the requested one and under-utilize the CPU, thus 27 losing performance. In other words, one OPP under-utilizes the CPU 33 ---------- 42 the control precision of cpufreq, however different vendors have a 48 belong to the same cluster, with a duration greater than the cluster 58 --------------- 63 cpufreq. Ideally, if all CPUs belonging to the same cluster, inject 64 their idle cycles synchronously, the cluster can reach its power down [all …]
|
| /kernel/linux/linux-6.6/Documentation/driver-api/thermal/ |
| D | cpu-cooling-api.rst | 21 1.1 cpufreq registration/unregistration APIs 22 -------------------------------------------- 29 This interface function registers the cpufreq cooling device with the name 30 "thermal-cpufreq-%x". This api can support multiple instances of cpufreq 41 This interface function registers the cpufreq cooling device with 42 the name "thermal-cpufreq-%x" linking it with a device tree node, in 44 instances of cpufreq cooling devices. 47 CPUFreq policy. 54 This interface function unregisters the "thermal-cpufreq-%x" cooling device. 63 supported currently). This power model requires that the operating-points of [all …]
|
| D | cpu-idle-cooling.rst | 1 .. SPDX-License-Identifier: GPL-2.0 8 ---------- 26 budget lower than the requested one and under-utilize the CPU, thus 27 losing performance. In other words, one OPP under-utilizes the CPU 33 ---------- 42 the control precision of cpufreq, however different vendors have a 48 belong to the same cluster, with a duration greater than the cluster 58 --------------- 63 cpufreq. Ideally, if all CPUs belonging to the same cluster, inject 64 their idle cycles synchronously, the cluster can reach its power down [all …]
|
| /kernel/linux/linux-6.6/Documentation/admin-guide/pm/ |
| D | intel_uncore_frequency_scaling.rst | 1 .. SPDX-License-Identifier: GPL-2.0 8 :Copyright: |copy| 2022-2023 Intel Corporation 13 ------------ 22 the scaling min/max frequencies via cpufreq sysfs to improve CPU performance. 26 use both cpufreq and the uncore scaling interface to distribute power and 30 --------------- 45 This is a read-only attribute. If users adjust max_freq_khz, 50 This is a read-only attribute. If users adjust min_freq_khz, 63 ----------------------------------------------------------------- 66 of mesh partitions. This partition is called fabric cluster. [all …]
|
| /kernel/linux/linux-6.6/drivers/base/ |
| D | arch_topology.c | 1 // SPDX-License-Identifier: GPL-2.0 12 #include <linux/cpufreq.h> 49 * either cpufreq or counter driven. If the support status changes as in update_scale_freq_invariant() 67 * supported by cpufreq. in topology_set_scale_freq_source() 78 if (!sfd || sfd->source != SCALE_FREQ_SOURCE_ARCH) { in topology_set_scale_freq_source() 101 if (sfd && sfd->source == source) { in topology_clear_scale_freq_source() 111 * use-after-free races. in topology_clear_scale_freq_source() 124 sfd->set_freq_scale(); in topology_scale_freq_tick() 141 * want to update the scale factor with information from CPUFREQ. in topology_set_freq_scale() 164 * topology_update_thermal_pressure() - Update thermal pressure for CPUs [all …]
|
| /kernel/linux/linux-5.10/drivers/base/ |
| D | arch_topology.c | 1 // SPDX-License-Identifier: GPL-2.0 11 #include <linux/cpufreq.h> 47 * want to update the scale factor with information from CPUFREQ. in topology_set_freq_scale() 83 return sysfs_emit(buf, "%lu\n", topology_get_cpu_scale(cpu->dev.id)); in cpu_capacity_show() 118 * Updating the sched_domains can't be done directly from cpufreq callbacks 176 ret = of_property_read_u32(cpu_node, "capacity-dmips-mhz", in topology_parse_cpu_capacity() 194 * For non-clk CPU DVFS mechanism, there's no way to get the in topology_parse_cpu_capacity() 237 cpumask_pr_args(policy->related_cpus), in init_cpu_capacity_callback() 240 cpumask_andnot(cpus_to_visit, cpus_to_visit, policy->related_cpus); in init_cpu_capacity_callback() 242 for_each_cpu(cpu, policy->related_cpus) in init_cpu_capacity_callback() [all …]
|
| /kernel/linux/linux-5.10/kernel/sched/ |
| D | walt.c | 1 // SPDX-License-Identifier: GPL-2.0 19 #include <linux/cpufreq.h> 90 raw_spin_lock(&cpu_rq(cpu)->lock); in acquire_rq_locks_irqsave() 92 raw_spin_lock_nested(&cpu_rq(cpu)->lock, level); in acquire_rq_locks_irqsave() 103 raw_spin_unlock(&cpu_rq(cpu)->lock); in release_rq_locks_irqrestore() 121 /* 1 -> use PELT based load stats, 0 -> use window-based load stats */ 151 * A after-boot constant divisor for cpu_util_freq_walt() to apply the load 174 unsigned int max_capacity = 1024; /* max(rq->capacity) */ 175 unsigned int min_capacity = 1024; /* min(rq->capacity) */ 176 unsigned int max_possible_capacity = 1024; /* max(rq->max_possible_capacity) */ [all …]
|
| /kernel/linux/linux-6.6/kernel/sched/ |
| D | walt.c | 1 // SPDX-License-Identifier: GPL-2.0 19 #include <linux/cpufreq.h> 91 raw_spin_lock(&cpu_rq(cpu)->__lock); in acquire_rq_locks_irqsave() 93 raw_spin_lock_nested(&cpu_rq(cpu)->__lock, level); in acquire_rq_locks_irqsave() 104 raw_spin_unlock(&cpu_rq(cpu)->__lock); in release_rq_locks_irqrestore() 122 /* 1 -> use PELT based load stats, 0 -> use window-based load stats */ 152 * A after-boot constant divisor for cpu_util_freq_walt() to apply the load 175 unsigned int max_capacity = 1024; /* max(rq->capacity) */ 176 unsigned int min_capacity = 1024; /* min(rq->capacity) */ 177 unsigned int max_possible_capacity = 1024; /* max(rq->max_possible_capacity) */ [all …]
|