mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
ASoC: fsl: fsl_qmc_audio: Drop struct qmc_dai_chan
prtd_tx and prtd_rx members are not used anymore and only qmc_chan member remains so struct qmc_dai_chan has become pointless. Use qmc_chan directly and drop struct qmc_dai_chan. Acked-by: Herve Codina <herve.codina@bootlin.com> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Link: https://patch.msgid.link/9c729bbd9f1b61120a09a87fb76176ef344c5153.1758209158.git.christophe.leroy@csgroup.eu Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
4c5f8c2556
commit
2c618f361a
|
|
@ -17,12 +17,6 @@
|
|||
#include <sound/pcm_params.h>
|
||||
#include <sound/soc.h>
|
||||
|
||||
struct qmc_dai_chan {
|
||||
struct qmc_dai_prtd *prtd_tx;
|
||||
struct qmc_dai_prtd *prtd_rx;
|
||||
struct qmc_chan *qmc_chan;
|
||||
};
|
||||
|
||||
struct qmc_dai {
|
||||
char *name;
|
||||
int id;
|
||||
|
|
@ -33,7 +27,7 @@ struct qmc_dai {
|
|||
unsigned int nb_chans_avail;
|
||||
unsigned int nb_chans_used_tx;
|
||||
unsigned int nb_chans_used_rx;
|
||||
struct qmc_dai_chan *chans;
|
||||
struct qmc_chan **qmc_chans;
|
||||
};
|
||||
|
||||
struct qmc_audio {
|
||||
|
|
@ -125,7 +119,7 @@ static int qmc_audio_pcm_write_submit(struct qmc_dai_prtd *prtd)
|
|||
int ret;
|
||||
|
||||
for (i = 0; i < prtd->channels; i++) {
|
||||
ret = qmc_chan_write_submit(prtd->qmc_dai->chans[i].qmc_chan,
|
||||
ret = qmc_chan_write_submit(prtd->qmc_dai->qmc_chans[i],
|
||||
prtd->ch_dma_addr_current + i * prtd->ch_dma_offset,
|
||||
prtd->ch_dma_size,
|
||||
i == prtd->channels - 1 ? qmc_audio_pcm_write_complete :
|
||||
|
|
@ -165,7 +159,7 @@ static int qmc_audio_pcm_read_submit(struct qmc_dai_prtd *prtd)
|
|||
int ret;
|
||||
|
||||
for (i = 0; i < prtd->channels; i++) {
|
||||
ret = qmc_chan_read_submit(prtd->qmc_dai->chans[i].qmc_chan,
|
||||
ret = qmc_chan_read_submit(prtd->qmc_dai->qmc_chans[i],
|
||||
prtd->ch_dma_addr_current + i * prtd->ch_dma_offset,
|
||||
prtd->ch_dma_size,
|
||||
i == prtd->channels - 1 ? qmc_audio_pcm_read_complete :
|
||||
|
|
@ -206,7 +200,6 @@ static int qmc_audio_pcm_trigger(struct snd_soc_component *component,
|
|||
struct snd_pcm_substream *substream, int cmd)
|
||||
{
|
||||
struct qmc_dai_prtd *prtd = substream->runtime->private_data;
|
||||
unsigned int i;
|
||||
int ret;
|
||||
|
||||
if (!prtd->qmc_dai) {
|
||||
|
|
@ -220,9 +213,6 @@ static int qmc_audio_pcm_trigger(struct snd_soc_component *component,
|
|||
prtd->ch_dma_addr_current = prtd->ch_dma_addr_start;
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
for (i = 0; i < prtd->channels; i++)
|
||||
prtd->qmc_dai->chans[i].prtd_tx = prtd;
|
||||
|
||||
/* Submit first chunk ... */
|
||||
ret = qmc_audio_pcm_write_submit(prtd);
|
||||
if (ret)
|
||||
|
|
@ -238,9 +228,6 @@ static int qmc_audio_pcm_trigger(struct snd_soc_component *component,
|
|||
if (ret)
|
||||
return ret;
|
||||
} else {
|
||||
for (i = 0; i < prtd->channels; i++)
|
||||
prtd->qmc_dai->chans[i].prtd_rx = prtd;
|
||||
|
||||
/* Submit first chunk ... */
|
||||
ret = qmc_audio_pcm_read_submit(prtd);
|
||||
if (ret)
|
||||
|
|
@ -610,9 +597,9 @@ static int qmc_dai_hw_params(struct snd_pcm_substream *substream,
|
|||
chan_param.mode = QMC_TRANSPARENT;
|
||||
chan_param.transp.max_rx_buf_size = params_period_bytes(params) / nb_chans_used;
|
||||
for (i = 0; i < nb_chans_used; i++) {
|
||||
ret = qmc_chan_set_param(qmc_dai->chans[i].qmc_chan, &chan_param);
|
||||
ret = qmc_chan_set_param(qmc_dai->qmc_chans[i], &chan_param);
|
||||
if (ret) {
|
||||
dev_err(dai->dev, "chans[%u], set param failed %d\n",
|
||||
dev_err(dai->dev, "qmc_chans[%u], set param failed %d\n",
|
||||
i, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -654,7 +641,7 @@ static int qmc_dai_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
for (i = 0; i < nb_chans_used; i++) {
|
||||
ret = qmc_chan_start(qmc_dai->chans[i].qmc_chan, direction);
|
||||
ret = qmc_chan_start(qmc_dai->qmc_chans[i], direction);
|
||||
if (ret)
|
||||
goto err_stop;
|
||||
}
|
||||
|
|
@ -663,13 +650,13 @@ static int qmc_dai_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
/* Stop and reset all QMC channels and return the first error encountered */
|
||||
for (i = 0; i < nb_chans_used; i++) {
|
||||
ret_tmp = qmc_chan_stop(qmc_dai->chans[i].qmc_chan, direction);
|
||||
ret_tmp = qmc_chan_stop(qmc_dai->qmc_chans[i], direction);
|
||||
if (!ret)
|
||||
ret = ret_tmp;
|
||||
if (ret_tmp)
|
||||
continue;
|
||||
|
||||
ret_tmp = qmc_chan_reset(qmc_dai->chans[i].qmc_chan, direction);
|
||||
ret_tmp = qmc_chan_reset(qmc_dai->qmc_chans[i], direction);
|
||||
if (!ret)
|
||||
ret = ret_tmp;
|
||||
}
|
||||
|
|
@ -681,7 +668,7 @@ static int qmc_dai_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
/* Stop all QMC channels and return the first error encountered */
|
||||
for (i = 0; i < nb_chans_used; i++) {
|
||||
ret_tmp = qmc_chan_stop(qmc_dai->chans[i].qmc_chan, direction);
|
||||
ret_tmp = qmc_chan_stop(qmc_dai->qmc_chans[i], direction);
|
||||
if (!ret)
|
||||
ret = ret_tmp;
|
||||
}
|
||||
|
|
@ -697,8 +684,8 @@ static int qmc_dai_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
|
||||
err_stop:
|
||||
while (i--) {
|
||||
qmc_chan_stop(qmc_dai->chans[i].qmc_chan, direction);
|
||||
qmc_chan_reset(qmc_dai->chans[i].qmc_chan, direction);
|
||||
qmc_chan_stop(qmc_dai->qmc_chans[i], direction);
|
||||
qmc_chan_reset(qmc_dai->qmc_chans[i], direction);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -794,19 +781,20 @@ static int qmc_audio_dai_parse(struct qmc_audio *qmc_audio, struct device_node *
|
|||
return dev_err_probe(qmc_audio->dev, -EINVAL,
|
||||
"dai %d no QMC channel defined\n", qmc_dai->id);
|
||||
|
||||
qmc_dai->chans = devm_kcalloc(qmc_audio->dev, count, sizeof(*qmc_dai->chans), GFP_KERNEL);
|
||||
if (!qmc_dai->chans)
|
||||
qmc_dai->qmc_chans = devm_kcalloc(qmc_audio->dev, count, sizeof(*qmc_dai->qmc_chans),
|
||||
GFP_KERNEL);
|
||||
if (!qmc_dai->qmc_chans)
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
qmc_dai->chans[i].qmc_chan = devm_qmc_chan_get_byphandles_index(qmc_audio->dev, np,
|
||||
"fsl,qmc-chan", i);
|
||||
if (IS_ERR(qmc_dai->chans[i].qmc_chan)) {
|
||||
return dev_err_probe(qmc_audio->dev, PTR_ERR(qmc_dai->chans[i].qmc_chan),
|
||||
qmc_dai->qmc_chans[i] = devm_qmc_chan_get_byphandles_index(qmc_audio->dev, np,
|
||||
"fsl,qmc-chan", i);
|
||||
if (IS_ERR(qmc_dai->qmc_chans[i])) {
|
||||
return dev_err_probe(qmc_audio->dev, PTR_ERR(qmc_dai->qmc_chans[i]),
|
||||
"dai %d get QMC channel %d failed\n", qmc_dai->id, i);
|
||||
}
|
||||
|
||||
ret = qmc_chan_get_info(qmc_dai->chans[i].qmc_chan, &info);
|
||||
ret = qmc_chan_get_info(qmc_dai->qmc_chans[i], &info);
|
||||
if (ret) {
|
||||
dev_err(qmc_audio->dev, "dai %d get QMC %d channel info failed %d\n",
|
||||
qmc_dai->id, i, ret);
|
||||
|
|
@ -851,7 +839,7 @@ static int qmc_audio_dai_parse(struct qmc_audio *qmc_audio, struct device_node *
|
|||
}
|
||||
}
|
||||
|
||||
ret = qmc_chan_get_ts_info(qmc_dai->chans[i].qmc_chan, &ts_info);
|
||||
ret = qmc_chan_get_ts_info(qmc_dai->qmc_chans[i], &ts_info);
|
||||
if (ret) {
|
||||
dev_err(qmc_audio->dev, "dai %d get QMC %d channel TS info failed %d\n",
|
||||
qmc_dai->id, i, ret);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user