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