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

Commit 4964814d authored by Taniya Das's avatar Taniya Das Committed by Gerrit - the friendly Code Review server
Browse files

cpufreq: qcom: Fix multiple request of IRQs



The cpufreq init would be invoked every cpu online and thus resulting
into multiple IRQ requests, so fix the same.

Change-Id: I271cd7f82e2ddde7466fa0949b8627c8d7573c47
Signed-off-by: default avatarTaniya Das <tdas@codeaurora.org>
parent 5dad3de6
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -66,6 +66,7 @@ struct cpufreq_qcom {
	int dcvsh_irq;
	int dcvsh_irq;
	char dcvsh_irq_name[MAX_FN_SIZE];
	char dcvsh_irq_name[MAX_FN_SIZE];
	bool is_irq_enabled;
	bool is_irq_enabled;
	bool is_irq_requested;
};
};


struct cpufreq_counter {
struct cpufreq_counter {
@@ -295,7 +296,7 @@ static int qcom_cpufreq_hw_cpu_init(struct cpufreq_policy *policy)


	dev_pm_opp_of_register_em(policy->cpus);
	dev_pm_opp_of_register_em(policy->cpus);


	if (c->dcvsh_irq > 0) {
	if (c->dcvsh_irq > 0 && !c->is_irq_requested) {
		snprintf(c->dcvsh_irq_name, sizeof(c->dcvsh_irq_name),
		snprintf(c->dcvsh_irq_name, sizeof(c->dcvsh_irq_name),
					"dcvsh-irq-%d", policy->cpu);
					"dcvsh-irq-%d", policy->cpu);
		ret = devm_request_threaded_irq(cpu_dev, c->dcvsh_irq, NULL,
		ret = devm_request_threaded_irq(cpu_dev, c->dcvsh_irq, NULL,
@@ -306,6 +307,7 @@ static int qcom_cpufreq_hw_cpu_init(struct cpufreq_policy *policy)
			return ret;
			return ret;
		}
		}


		c->is_irq_requested = true;
		c->is_irq_enabled = true;
		c->is_irq_enabled = true;
		writel_relaxed(LT_IRQ_STATUS, c->base + offsets[REG_INTR_EN]);
		writel_relaxed(LT_IRQ_STATUS, c->base + offsets[REG_INTR_EN]);
		c->freq_limit_attr.attr.name = "dcvsh_freq_limit";
		c->freq_limit_attr.attr.name = "dcvsh_freq_limit";