mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 14:32:23 +00:00
remoteproc: qcom: q6v5-mss: Use regmap_read_poll_timeout
Replace the loop for HALT_ACK detection with regmap_read_poll_timeout. Reviewed-by: Evan Green <evgreen@chromium.org> Signed-off-by: Sibi Sankar <sibis@codeaurora.org> Link: https://lore.kernel.org/r/20200123131236.1078-2-sibis@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
parent
0c2caf75aa
commit
01bf3fec38
@ -72,7 +72,8 @@
|
||||
#define NAV_AXI_HALTACK_BIT BIT(1)
|
||||
#define NAV_AXI_IDLE_BIT BIT(2)
|
||||
|
||||
#define HALT_ACK_TIMEOUT_MS 100
|
||||
#define HALT_ACK_TIMEOUT_US 100000
|
||||
#define NAV_HALT_ACK_TIMEOUT_US 200
|
||||
|
||||
/* QDSP6SS_RESET */
|
||||
#define Q6SS_STOP_CORE BIT(0)
|
||||
@ -716,7 +717,6 @@ static void q6v5proc_halt_axi_port(struct q6v5 *qproc,
|
||||
struct regmap *halt_map,
|
||||
u32 offset)
|
||||
{
|
||||
unsigned long timeout;
|
||||
unsigned int val;
|
||||
int ret;
|
||||
|
||||
@ -729,14 +729,8 @@ static void q6v5proc_halt_axi_port(struct q6v5 *qproc,
|
||||
regmap_write(halt_map, offset + AXI_HALTREQ_REG, 1);
|
||||
|
||||
/* Wait for halt */
|
||||
timeout = jiffies + msecs_to_jiffies(HALT_ACK_TIMEOUT_MS);
|
||||
for (;;) {
|
||||
ret = regmap_read(halt_map, offset + AXI_HALTACK_REG, &val);
|
||||
if (ret || val || time_after(jiffies, timeout))
|
||||
break;
|
||||
|
||||
msleep(1);
|
||||
}
|
||||
regmap_read_poll_timeout(halt_map, offset + AXI_HALTACK_REG, val,
|
||||
val, 1000, HALT_ACK_TIMEOUT_US);
|
||||
|
||||
ret = regmap_read(halt_map, offset + AXI_IDLE_REG, &val);
|
||||
if (ret || !val)
|
||||
@ -750,7 +744,6 @@ static void q6v5proc_halt_nav_axi_port(struct q6v5 *qproc,
|
||||
struct regmap *halt_map,
|
||||
u32 offset)
|
||||
{
|
||||
unsigned long timeout;
|
||||
unsigned int val;
|
||||
int ret;
|
||||
|
||||
@ -764,15 +757,9 @@ static void q6v5proc_halt_nav_axi_port(struct q6v5 *qproc,
|
||||
NAV_AXI_HALTREQ_BIT);
|
||||
|
||||
/* Wait for halt ack*/
|
||||
timeout = jiffies + msecs_to_jiffies(HALT_ACK_TIMEOUT_MS);
|
||||
for (;;) {
|
||||
ret = regmap_read(halt_map, offset, &val);
|
||||
if (ret || (val & NAV_AXI_HALTACK_BIT) ||
|
||||
time_after(jiffies, timeout))
|
||||
break;
|
||||
|
||||
udelay(5);
|
||||
}
|
||||
regmap_read_poll_timeout(halt_map, offset, val,
|
||||
(val & NAV_AXI_HALTACK_BIT),
|
||||
5, NAV_HALT_ACK_TIMEOUT_US);
|
||||
|
||||
ret = regmap_read(halt_map, offset, &val);
|
||||
if (ret || !(val & NAV_AXI_IDLE_BIT))
|
||||
|
Loading…
Reference in New Issue
Block a user