[PATCH v3 2/3] sound: soc: sh: Add RZ/G2L SSIF-2 driver

Biju Das biju.das.jz at bp.renesas.com
Thu Aug 5 21:11:26 CEST 2021


Hi Mark,

Thanks for the feedback.

> Subject: Re: [PATCH v3 2/3] sound: soc: sh: Add RZ/G2L SSIF-2 driver
> 
> On Thu, Jul 29, 2021 at 06:23:10PM +0100, Biju Das wrote:
> 
> > +config SND_SOC_RZ
> > +	tristate "RZ/G2L series SSIF-2 support"
> > +	depends on ARCH_R9A07G044 || COMPILE_TEST
> > +	select SND_SIMPLE_CARD
> > +	help
> 
> Why is the DAI selecting a specific sound card, and if it must then why
> would it use simple-card and not the more modern audio-graph-card?  The
> select should almost certainly just be removed entirely, this is not
> something DAI drivers do - cards use DAIs, not the other way around.

OK, will remove the select.

> 
> > +++ b/sound/soc/sh/rz-ssi.c
> > @@ -0,0 +1,871 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Renesas RZ/G2L ASoC Serial Sound Interface (SSIF-2) Driver
> > + *
> > + * Copyright (C) 2021 Renesas Electronics Corp.
> 
> Please make the entire comment a C++ one so things look more intentional.
OK.

> 
> > +static int rz_ssi_stream_init(struct rz_ssi_priv *ssi,
> > +			      struct rz_ssi_stream *strm,
> > +			      struct snd_pcm_substream *substream) {
> > +	struct snd_pcm_runtime *runtime = substream->runtime;
> > +
> > +	strm->substream = substream;
> 
> > +	if (runtime->sample_bits != 16) {
> > +		dev_err(ssi->dev, "Unsupported sample width: %d\n",
> > +			runtime->sample_bits);
> > +		strm->substream = NULL;
> > +		return -EINVAL;
> > +	}
> > +
> > +	if (runtime->frame_bits != 32) {
> > +		dev_err(ssi->dev, "Unsupported frame width: %d\n",
> > +			runtime->sample_bits);
> > +		strm->substream = NULL;
> > +		return -EINVAL;
> > +	}
> > +
> > +	if (runtime->channels != 2) {
> > +		dev_err(ssi->dev, "Number of channels not matched\n");
> > +		strm->substream = NULL;
> > +		return -EINVAL;
> > +	}
> 
> Why are we only validating these here which is called from...

OK, will move this part to hw_params and validate there using 
params_channel.

> 
> > +	switch (cmd) {
> > +	case SNDRV_PCM_TRIGGER_START:
> > +		/* Soft Reset */
> > +		rz_ssi_reg_mask_setl(ssi, SSIFCR, 0, SSIFCR_SSIRST);
> > +		rz_ssi_reg_mask_setl(ssi, SSIFCR, SSIFCR_SSIRST, 0);
> > +		udelay(5);
> > +
> > +		ret = rz_ssi_stream_init(ssi, strm, substream);
> > +		if (ret)
> > +			goto done;
> 
> ...trigger.  This stuff should be being validated when we set parameters
> in hw_params() and can usefully report the error.
> 
> > +static int rz_ssi_dai_set_fmt(struct snd_soc_dai *dai, unsigned int
> > +fmt) {
> > +	struct rz_ssi_priv *ssi = snd_soc_dai_get_drvdata(dai);
> > +
> > +	/* set master/slave audio interface */
> > +	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
> > +	case SND_SOC_DAIFMT_CBS_CFS:
> > +		asm("nop"); /* codec is slave */
> > +		break;
> 
> That asm("nop") looks interesting...  I can't think why that'd be needed?
It is not required. Will remove it.

> Please also use the modern versions of these defines, consumer and
> provider rather than slave and master.

OK, will use consumer and provider for the above macros.

Cheers,
Biju




More information about the Alsa-devel mailing list