All of lore.kernel.org
 help / color / mirror / Atom feed
From: phucduc.bui@gmail.com
To: Andrew Jackson <Andrew.Jackson@arm.com>,
	Mark Brown <broonie@kernel.org>,
	Xingyu Wu <xingyu.wu@starfivetech.com>
Cc: Tim Bird <tim.bird@sony.com>,
	Yuri Zaporozhets <yuriz@vodafonemail.de>,
	Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
	Maxim Kochetkov <fido_max@inbox.ru>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
	bui duc phuc <phucduc.bui@gmail.com>
Subject: [PATCH 3/5] ASoC: dwc: Fix channels_max derived from COMP_PARAM_1
Date: Fri,  6 Nov 2026 18:29:38 +0700	[thread overview]
Message-ID: <20261106112940.53550-4-phucduc.bui@gmail.com> (raw)
In-Reply-To: <20261106112940.53550-1-phucduc.bui@gmail.com>

From: bui duc phuc <phucduc.bui@gmail.com>

The I2S_TX_CHANNELS (bits 10:9) and I2S_RX_CHANNELS (bits 8:7) fields
of I2S_COMP_PARAM_1 encode the number of hardware channels minus one,
i.e. values 0..3 mean 1..4 channels. In I2S mode each hardware channel
is one serial data line carrying a left/right pair, so the maximum
number of audio channels is 2 * (N + 1).

The current code uses 1 << (N + 1), which only produces the correct
result for N < 2. For N >= 2, it overestimates the maximum number of
audio channels.

Use 2 * (N + 1) for both playback and capture.

Fixes: b226efe5818b ("ASoC: dwc: Read I2S block configuration from registers")
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
 sound/soc/dwc/dwc-i2s.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/dwc/dwc-i2s.c b/sound/soc/dwc/dwc-i2s.c
index 6dc84c55db0f..0de7bcb2d0c5 100644
--- a/sound/soc/dwc/dwc-i2s.c
+++ b/sound/soc/dwc/dwc-i2s.c
@@ -605,7 +605,7 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
 			idx = 1;
 		dw_i2s_dai->playback.channels_min = MIN_CHANNEL_NUM;
 		dw_i2s_dai->playback.channels_max =
-				1 << (COMP1_TX_CHANNELS(comp1) + 1);
+				2 * (COMP1_TX_CHANNELS(comp1) + 1);
 		dw_i2s_dai->playback.formats = formats[idx];
 		dw_i2s_dai->playback.rates = rates;
 	}
@@ -619,7 +619,7 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
 			idx = 1;
 		dw_i2s_dai->capture.channels_min = MIN_CHANNEL_NUM;
 		dw_i2s_dai->capture.channels_max =
-				1 << (COMP1_RX_CHANNELS(comp1) + 1);
+				2 * (COMP1_RX_CHANNELS(comp1) + 1);
 		dw_i2s_dai->capture.formats = formats[idx];
 		dw_i2s_dai->capture.rates = rates;
 	}
-- 
2.43.0


  parent reply	other threads:[~2026-11-06 11:30 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-06 11:29 [PATCH 0/5] Fix several issues in the DesignWare I2S driver phucduc.bui
2026-11-06 11:29 ` [PATCH 1/5] ASoC: dwc: Fix bit clock rate in TDM mode phucduc.bui
2026-11-09  7:10   ` Maxim Kochetkov
2026-11-10  6:53     ` Bui Duc Phuc
2026-11-06 11:29 ` [PATCH 2/5] ASoC: dwc: Fix error handling in dw_i2s_set_fmt() phucduc.bui
2026-11-09  7:19   ` Maxim Kochetkov
2026-11-10  6:55     ` Bui Duc Phuc
2026-11-06 11:29 ` phucduc.bui [this message]
2026-11-09  7:23   ` [PATCH 3/5] ASoC: dwc: Fix channels_max derived from COMP_PARAM_1 Maxim Kochetkov
2026-11-06 11:29 ` [PATCH 4/5] ASoC: dwc: Fix DMA fifo_size calculation phucduc.bui
2026-11-06 11:39   ` sashiko-bot
2026-11-06 11:29 ` [PATCH 5/5] ASoC: dwc: Remove redundant error messages phucduc.bui
2026-11-06 11:43   ` sashiko-bot
2026-11-09  5:01     ` Bui Duc Phuc
2026-11-08 14:05   ` Mark Brown
2026-11-09  2:59     ` Bui Duc Phuc

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261106112940.53550-4-phucduc.bui@gmail.com \
    --to=phucduc.bui@gmail.com \
    --cc=Andrew.Jackson@arm.com \
    --cc=broonie@kernel.org \
    --cc=fido_max@inbox.ru \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tim.bird@sony.com \
    --cc=tiwai@suse.com \
    --cc=xingyu.wu@starfivetech.com \
    --cc=yuriz@vodafonemail.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.