hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/remoteproc/mtk_scp_ipi.c
....@@ -164,13 +164,13 @@
164164 WARN_ON(len > sizeof(send_obj->share_buf)) || WARN_ON(!buf))
165165 return -EINVAL;
166166
167
- mutex_lock(&scp->send_lock);
168
-
169167 ret = clk_prepare_enable(scp->clk);
170168 if (ret) {
171169 dev_err(scp->dev, "failed to enable clock\n");
172
- goto unlock_mutex;
170
+ return ret;
173171 }
172
+
173
+ mutex_lock(&scp->send_lock);
174174
175175 /* Wait until SCP receives the last command */
176176 timeout = jiffies + msecs_to_jiffies(2000);
....@@ -178,7 +178,7 @@
178178 if (time_after(jiffies, timeout)) {
179179 dev_err(scp->dev, "%s: IPI timeout!\n", __func__);
180180 ret = -ETIMEDOUT;
181
- goto clock_disable;
181
+ goto unlock_mutex;
182182 }
183183 } while (readl(scp->reg_base + scp->data->host_to_scp_reg));
184184
....@@ -205,10 +205,9 @@
205205 ret = 0;
206206 }
207207
208
-clock_disable:
209
- clk_disable_unprepare(scp->clk);
210208 unlock_mutex:
211209 mutex_unlock(&scp->send_lock);
210
+ clk_disable_unprepare(scp->clk);
212211
213212 return ret;
214213 }