Hi, Mark Brown <broonie@xxxxxxxxxx> 于2021年6月15日周二 下午9:22写道: > > On Tue, Jun 15, 2021 at 09:03:26PM +0800, Ban Tao wrote: > > Other than a few small things this looks good: > > > +M: Ban Tao <fengzheng923@xxxxxxxxx> > > +L: alsa-devel@xxxxxxxxxxxxxxxx (moderated for non-subscribers) > > +S: Maintained > > +F: Documentation/devicetree/bindings/sound/allwinner,sun50i-h6-dmic.yaml > > +F: sound/soc/sunxi/sun50i-dmic.c > > Not the binding document? > > > @@ -0,0 +1,408 @@ > > +// SPDX-License-Identifier: GPL-2.0-or-later > > +/* > > + * ALSA SoC DMIC Audio Layer > > + * > > + * Copyright 2021 Ban Tao <fengzheng923@xxxxxxxxx> > > + * > > Please make the entire comment a C++ one so things look more > intentional. > For example; // SPDX-License-Identifier: GPL-2.0-or-later /* * This driver supports the DMIC in Allwinner's H6 SoCs. * * Copyright 2021 Ban Tao <fengzheng923@xxxxxxxxx> * */ is this OK? > > +static void sun50i_snd_rxctrl_enable(struct snd_pcm_substream *substream, > > + struct sun50i_dmic_dev *host, bool enable) > > +{ > > + if (enable) { > > > + } else { > > > +static int sun50i_dmic_trigger(struct snd_pcm_substream *substream, int cmd, > > + struct snd_soc_dai *dai) > > +{ > > + int ret = 0; > > + struct sun50i_dmic_dev *host = snd_soc_dai_get_drvdata(dai); > > + > > + if (substream->stream != SNDRV_PCM_STREAM_CAPTURE) > > + return -EINVAL; > > + > > + switch (cmd) { > > + case SNDRV_PCM_TRIGGER_START: > > + case SNDRV_PCM_TRIGGER_RESUME: > > + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: > > + sun50i_snd_rxctrl_enable(substream, host, true); > > + break; > > + > > + case SNDRV_PCM_TRIGGER_STOP: > > + case SNDRV_PCM_TRIGGER_SUSPEND: > > + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: > > + sun50i_snd_rxctrl_enable(substream, host, false); > > + break; > > This is the only caller of _rxctrl_enable() and _rxctrl_enable() shares > no code between the two cases - just inline _rxctrl_enable() here, it's > clearer what's going on. > > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > + base = devm_ioremap_resource(&pdev->dev, res); > > devm_platform_ioremap_resource() But I need to get the register base address of DMIC. E.g res->start. host->dma_params_rx.addr = res->start + SUN50I_DMIC_DATA;