Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11b274f3 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cpufreq: qcom-hw: Add ready callback to register CPU cooling device"

parents 0352566f 1c69cb11
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include "kona-sde-display.dtsi"
#include "kona-camera-sensor-cdp.dtsi"
#include "kona-audio-overlay.dtsi"
#include "kona-thermal-overlay.dtsi"

&qupv3_se12_2uart {
	status = "ok";
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include "kona-sde-display.dtsi"
#include "kona-camera-sensor-mtp.dtsi"
#include "kona-audio-overlay.dtsi"
#include "kona-thermal-overlay.dtsi"

&qupv3_se12_2uart {
	status = "ok";
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include "kona-sde-display.dtsi"
#include "kona-camera-sensor-qrd.dtsi"
#include "kona-audio-overlay.dtsi"
#include "kona-thermal-overlay.dtsi"

&vendor {
	kona_qrd_batterydata: qcom,battery-data {
+10 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2019, The Linux Foundation. All rights reserved.
 */

#include <dt-bindings/thermal/thermal.h>

&mdss_mdp {
	#cooling-cells = <2>;
};
+31 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include <linux/pm_opp.h>
#include <linux/energy_model.h>
#include <linux/sched.h>
#include <linux/cpu_cooling.h>

#define LUT_MAX_ENTRIES			40U
#define CORE_COUNT_VAL(val)		(((val) & (GENMASK(18, 16))) >> 16)
@@ -178,6 +179,35 @@ static struct freq_attr *qcom_cpufreq_hw_attr[] = {
	NULL
};

static void qcom_cpufreq_ready(struct cpufreq_policy *policy)
{
	static struct thermal_cooling_device *cdev[NR_CPUS];
	struct device_node *np;
	unsigned int cpu = policy->cpu;

	if (cdev[cpu])
		return;

	np = of_cpu_device_node_get(cpu);
	if (WARN_ON(!np))
		return;

	/*
	 * For now, just loading the cooling device;
	 * thermal DT code takes care of matching them.
	 */
	if (of_find_property(np, "#cooling-cells", NULL)) {
		cdev[cpu] = of_cpufreq_cooling_register(policy);
		if (IS_ERR(cdev[cpu])) {
			pr_err("running cpufreq for CPU%d without cooling dev: %ld\n",
			       cpu, PTR_ERR(cdev[cpu]));
			cdev[cpu] = NULL;
		}
	}

	of_node_put(np);
}

static struct cpufreq_driver cpufreq_qcom_hw_driver = {
	.flags		= CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK |
			  CPUFREQ_HAVE_GOVERNOR_PER_POLICY,
@@ -189,6 +219,7 @@ static struct cpufreq_driver cpufreq_qcom_hw_driver = {
	.name		= "qcom-cpufreq-hw",
	.attr		= qcom_cpufreq_hw_attr,
	.boost_enabled	= true,
	.ready		= qcom_cpufreq_ready,
};

static int qcom_cpufreq_hw_read_lut(struct platform_device *pdev,