hc
2024-09-20 a36159eec6ca17402b0e146b86efaf76568dc353
kernel/drivers/clk/imx/clk-composite-8m.c
....@@ -97,7 +97,7 @@
9797 int prediv_value;
9898 int div_value;
9999 int ret;
100
- u32 val;
100
+ u32 orig, val;
101101
102102 ret = imx8m_clk_composite_compute_dividers(rate, parent_rate,
103103 &prediv_value, &div_value);
....@@ -106,13 +106,15 @@
106106
107107 spin_lock_irqsave(divider->lock, flags);
108108
109
- val = readl(divider->reg);
110
- val &= ~((clk_div_mask(divider->width) << divider->shift) |
111
- (clk_div_mask(PCG_DIV_WIDTH) << PCG_DIV_SHIFT));
109
+ orig = readl(divider->reg);
110
+ val = orig & ~((clk_div_mask(divider->width) << divider->shift) |
111
+ (clk_div_mask(PCG_DIV_WIDTH) << PCG_DIV_SHIFT));
112112
113113 val |= (u32)(prediv_value - 1) << divider->shift;
114114 val |= (u32)(div_value - 1) << PCG_DIV_SHIFT;
115
- writel(val, divider->reg);
115
+
116
+ if (val != orig)
117
+ writel(val, divider->reg);
116118
117119 spin_unlock_irqrestore(divider->lock, flags);
118120