[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240315112745.63230-11-bastien.curutchet@bootlin.com>
Date: Fri, 15 Mar 2024 12:27:42 +0100
From: Bastien Curutchet <bastien.curutchet@...tlin.com>
To: Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>,
Peter Ujfalusi <peter.ujfalusi@...il.com>,
Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>,
Bastien Curutchet <bastien.curutchet@...tlin.com>
Cc: linux-sound@...r.kernel.org,
devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org,
alsa-devel@...a-project.org,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
herve.codina@...tlin.com,
christophercordahi@...ometrics.ca
Subject: [PATCH 10/13] ASoC: ti: davinci-i2s: Make free-running mode optional
McBSP has free-running mode where serial clocks continue to run during
emulation halts. This mode is always enabled by the driver.
Disable this free-running mode according to the 'ti,disable-free-run'
device-tree property.
Signed-off-by: Bastien Curutchet <bastien.curutchet@...tlin.com>
---
sound/soc/ti/davinci-i2s.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/sound/soc/ti/davinci-i2s.c b/sound/soc/ti/davinci-i2s.c
index 2c19e45b6b54..67307e75f2a8 100644
--- a/sound/soc/ti/davinci-i2s.c
+++ b/sound/soc/ti/davinci-i2s.c
@@ -165,6 +165,7 @@ struct davinci_mcbsp_dev {
int slot_width;
bool sync_err;
+ bool free_run;
};
static inline void davinci_mcbsp_write_reg(struct davinci_mcbsp_dev *dev,
@@ -444,11 +445,13 @@ static int davinci_i2s_hw_params(struct snd_pcm_substream *substream,
/* general line settings */
spcr = davinci_mcbsp_read_reg(dev, DAVINCI_MCBSP_SPCR_REG);
+ if (dev->free_run)
+ spcr |= DAVINCI_MCBSP_SPCR_FREE;
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
- spcr |= DAVINCI_MCBSP_SPCR_RINTM(3) | DAVINCI_MCBSP_SPCR_FREE;
+ spcr |= DAVINCI_MCBSP_SPCR_RINTM(3);
davinci_mcbsp_write_reg(dev, DAVINCI_MCBSP_SPCR_REG, spcr);
} else {
- spcr |= DAVINCI_MCBSP_SPCR_XINTM(3) | DAVINCI_MCBSP_SPCR_FREE;
+ spcr |= DAVINCI_MCBSP_SPCR_XINTM(3);
davinci_mcbsp_write_reg(dev, DAVINCI_MCBSP_SPCR_REG, spcr);
}
@@ -766,6 +769,7 @@ static int davinci_i2s_probe(struct platform_device *pdev)
dev->base = io_base;
+ dev->free_run = !of_property_read_bool(pdev->dev.of_node, "ti,disable-free-run");
dev->sync_err = of_property_read_bool(pdev->dev.of_node, "ti,enable-sync-err");
/* setup DMA, first TX, then RX */
--
2.43.2
Powered by blists - more mailing lists