[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z_O2RhwYp6iy02cM@hovoldconsulting.com>
Date: Mon, 7 Apr 2025 13:25:58 +0200
From: Johan Hovold <johan@...nel.org>
To: srinivas.kandagatla@...aro.org
Cc: broonie@...nel.org, perex@...ex.cz, tiwai@...e.com,
krzysztof.kozlowski@...aro.org, linux-sound@...r.kernel.org,
linux-arm-msm@...r.kernel.org, linux-kernel@...r.kernel.org,
dmitry.baryshkov@...aro.org, johan+linaro@...nel.org,
stable@...r.kernel.org
Subject: Re: [PATCH v5 2/5] ASoC: q6apm: add q6apm_get_hw_pointer helper
Hi Srini,
On Fri, Mar 14, 2025 at 05:47:57PM +0000, Srinivas Kandagatla wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
>
> Implement an helper function in q6apm to be able to read the current
> hardware pointer for both read and write buffers.
>
> This should help q6apm-dai to get the hardware pointer consistently
> without it doing manual calculation, which could go wrong in some race
> conditions.
> +int q6apm_get_hw_pointer(struct q6apm_graph *graph, int dir)
> +{
> + struct audioreach_graph_data *data;
> +
> + if (dir == SNDRV_PCM_STREAM_PLAYBACK)
> + data = &graph->rx_data;
> + else
> + data = &graph->tx_data;
> +
> + return (int)atomic_read(&data->hw_ptr);
> +}
> +EXPORT_SYMBOL_GPL(q6apm_get_hw_pointer);
> @@ -553,6 +567,8 @@ static int graph_callback(struct gpr_resp_pkt *data, void *priv, int op)
> rd_done = data->payload;
> phys = graph->tx_data.buf[hdr->token].phys;
> mutex_unlock(&graph->lock);
> + /* token numbering starts at 0 */
> + atomic_set(&graph->tx_data.hw_ptr, hdr->token + 1);
>
> if (upper_32_bits(phys) == rd_done->buf_addr_msw &&
> lower_32_bits(phys) == rd_done->buf_addr_lsw) {
graph->result.opcode = hdr->opcode;
graph->result.status = rd_done->status;
if (graph->cb)
graph->cb(client_event, hdr->token, data->payload, graph->priv);
} else {
dev_err(dev, "RD BUFF Unexpected addr %08x-%08x\n", rd_done->buf_addr_lsw,
rd_done->buf_addr_msw);
}
I just hit the following error on the T14s with 6.15-rc1 that I've never
seen before and which looks like it could be related to this series:
q6apm-dai 6800000.remoteproc:glink-edge:gpr:service@1:dais: RD BUFF Unexpected addr ffe0d200-00000001
Any ideas about what may be causing this?
Johan
Powered by blists - more mailing lists