Thread (14 messages) 14 messages, 4 authors, 2021-09-20

Re: [PATCH v4 1/4] ASoC: rockchip: add support for i2s-tdm controller

flat view

From: Mark Brown <broonie@kernel.org>
Date: 2021-09-15 14:05:46
Also in: alsa-devel, linux-rockchip, lkml

On Sat, Sep 04, 2021 at 01:15:33AM +0200, Nicolas Frattaroli wrote:

A few fairly small issues here, nothing too major:
quoted hunk ↗ jump to hunk
@@ -0,0 +1,1832 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * ALSA SoC Audio Layer - Rockchip I2S/TDM Controller driver
Please write the entire comment as a C++ one so it looks more
itentional.  
quoted hunk ↗ jump to hunk
+	xfer_mask = (tx ? I2S_XFER_TXS_START : 0) |
+		    (rx ? I2S_XFER_RXS_START : 0);
+	xfer_val = (tx ? I2S_XFER_TXS_STOP : 0) |
+		   (rx ? I2S_XFER_RXS_STOP : 0);
Please write normal conditional statements to improve legibility.
quoted hunk ↗ jump to hunk
+	spin_lock_irqsave(&i2s_tdm->lock, flags);
+	if (on) {
+		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+			rockchip_enable_tde(i2s_tdm->regmap);
+		else
+			rockchip_enable_rde(i2s_tdm->regmap);
+
+		if (atomic_inc_return(&i2s_tdm->refcount) == 1) {
Why do we need to use atomics here given that we're inside a spinlock?
Surely the spinlock is already providing adequate concurrency
protection.  I can't see any other points where we don't have the
spinlock already, and I'd be worried if we did.  This looks like it
could just be regular variables.
+	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+	case SND_SOC_DAIFMT_CBS_CFS:
Please use the modern SOF_DAI_FMT_CBC_CFC defines.
+	delta = (ppm < 0) ? -1 : 1;
Again, please write normal condiditional statements for legibility.
quoted hunk ↗ jump to hunk
+static int rockchip_i2s_tdm_clk_compensation_put(struct snd_kcontrol *kcontrol,
+						 struct snd_ctl_elem_value *ucontrol)
+{
+	return ret;
+}
This should return 1 if the value changed.
quoted hunk ↗ jump to hunk
+static int __maybe_unused rockchip_i2s_tdm_resume(struct device *dev)
+{
+	struct rk_i2s_tdm_dev *i2s_tdm = dev_get_drvdata(dev);
+	int ret;
+
+	ret = pm_runtime_get_sync(dev);
+	if (ret < 0)
+		return ret;
+	ret = regcache_sync(i2s_tdm->regmap);
+	pm_runtime_put(dev);
Runtime resume also does a regcache sync so why are we doing another one
here?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help