From 0851405bbd5e9a0ea90f664699aab2857216ef97 Mon Sep 17 00:00:00 2001 From: Jian Hu Date: Fri, 29 Jun 2018 16:58:23 +0800 Subject: [PATCH] clk: txlx: add lock protection on meson_clk_measure() PD#168934: clk: txlx: add lock protection on meson_clk_measure() Fix encl_clk_msr equal zero when switch to hdmirx Change-Id: I95bf5c3e4c0b45b2884a87a4112893b64766cda3 Signed-off-by: Jian Hu --- drivers/amlogic/clk/clk_measure.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/amlogic/clk/clk_measure.c b/drivers/amlogic/clk/clk_measure.c index 02178a5d590b..807942cd232d 100644 --- a/drivers/amlogic/clk/clk_measure.c +++ b/drivers/amlogic/clk/clk_measure.c @@ -35,6 +35,7 @@ #include #include #include +#include #undef pr_fmt #define pr_fmt(fmt) "clkmsr: " fmt @@ -44,6 +45,7 @@ void __iomem *msr_clk_reg2; void __iomem *msr_clk_reg3; void __iomem *msr_ring_reg0; +static DEFINE_SPINLOCK(clk_measure_lock); #define CLKMSR_DEVICE_NAME "clkmsr" unsigned int clk_msr_index = 0xff; @@ -1078,7 +1080,9 @@ int g12b_clk_measure(struct seq_file *s, void *what, unsigned int index) int meson_clk_measure(unsigned int clk_mux) { int clk_val; + unsigned long flags; + spin_lock_irqsave(&clk_measure_lock, flags); switch (get_cpu_type()) { case MESON_CPU_MAJOR_ID_M8B: clk_val = m8b_clk_util_clk_msr(clk_mux); @@ -1098,6 +1102,8 @@ int meson_clk_measure(unsigned int clk_mux) clk_val = 0; break; } + spin_unlock_irqrestore(&clk_measure_lock, flags); + return clk_val; }