All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ASoC: davinci-mcasp: Add clocking option
@ 2016-07-26 12:05 Stefan Müller-Klieser
  2016-07-28 11:48 ` Peter Ujfalusi
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Müller-Klieser @ 2016-07-26 12:05 UTC (permalink / raw)
  To: alsa-devel

The AHCLKX clock output of the McASP can be used as audio MCLK, even
if the McASP runs in slave mode. Add a DT binding to make this option
available in a simple-card setup.

Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
---
 Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt | 4 ++++
 include/linux/platform_data/davinci_asp.h                       | 5 +++++
 sound/soc/davinci/davinci-mcasp.c                               | 8 ++++++++
 3 files changed, 17 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
index 46bc982..96d6244 100644
--- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
+++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
@@ -39,6 +39,10 @@ Optional properties:
   		 please refer to pinctrl-bindings.txt
 - fck_parent : Should contain a valid clock name which will be used as parent
 	       for the McASP fck
+- ahclkx-en: In case the MCASP runs in slave mode, e.g. i2s SCK and WS slave,
+             we can still provide the MCLK to a codec PLL using the AHCLKX
+             transmit clock output. This setup can be activated by using this
+             property. Clock master mode remains unaffected.
 
 Example:
 
diff --git a/include/linux/platform_data/davinci_asp.h b/include/linux/platform_data/davinci_asp.h
index 85ad68f..c878836 100644
--- a/include/linux/platform_data/davinci_asp.h
+++ b/include/linux/platform_data/davinci_asp.h
@@ -44,6 +44,11 @@ struct davinci_mcasp_pdata {
 	int clk_input_pin;
 
 	/*
+	 * Activate AHCLKX clock output in slave mode.
+	 */
+	bool ahclkx_en;
+
+	/*
 	 * This flag works when both clock and FS are outputs for the cpu
 	 * and makes clock more accurate (FS is not symmetrical and the
 	 * clock is very fast.
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index 237dc67..aba888e 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -94,6 +94,7 @@ struct davinci_mcasp {
 
 	int	sysclk_freq;
 	bool	bclk_master;
+	bool    ahclkx_en;
 
 	/* McASP FIFO related */
 	u8	txnumevt;
@@ -605,6 +606,10 @@ static int davinci_mcasp_set_sysclk(struct snd_soc_dai *dai, int clk_id,
 		mcasp_set_bits(mcasp, DAVINCI_MCASP_AHCLKXCTL_REG, AHCLKXE);
 		mcasp_set_bits(mcasp, DAVINCI_MCASP_AHCLKRCTL_REG, AHCLKRE);
 		mcasp_set_bits(mcasp, DAVINCI_MCASP_PDIR_REG, AHCLKX);
+	} else if (mcasp->ahclkx_en) {
+		mcasp_clr_bits(mcasp, DAVINCI_MCASP_AHCLKRCTL_REG, AHCLKRE);
+		mcasp_set_bits(mcasp, DAVINCI_MCASP_AHCLKXCTL_REG, AHCLKXE);
+		mcasp_set_bits(mcasp, DAVINCI_MCASP_PDIR_REG, AHCLKX);
 	} else {
 		mcasp_clr_bits(mcasp, DAVINCI_MCASP_AHCLKXCTL_REG, AHCLKXE);
 		mcasp_clr_bits(mcasp, DAVINCI_MCASP_AHCLKRCTL_REG, AHCLKRE);
@@ -1610,6 +1615,8 @@ static struct davinci_mcasp_pdata *davinci_mcasp_set_pdata_from_of(
 	if (ret >= 0)
 		pdata->op_mode = val;
 
+	pdata->ahclkx_en = of_property_read_bool(np, "ahclkx-en");
+
 	ret = of_property_read_u32(np, "tdm-slots", &val);
 	if (ret >= 0) {
 		if (val < 2 || val > 32) {
@@ -1851,6 +1858,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
 	mcasp->version = pdata->version;
 	mcasp->txnumevt = pdata->txnumevt;
 	mcasp->rxnumevt = pdata->rxnumevt;
+	mcasp->ahclkx_en = pdata->ahclkx_en;
 
 	mcasp->dev = &pdev->dev;
 
-- 
1.9.1

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-08-01  9:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-26 12:05 [PATCH] ASoC: davinci-mcasp: Add clocking option Stefan Müller-Klieser
2016-07-28 11:48 ` Peter Ujfalusi
2016-07-29 11:08   ` Peter Ujfalusi
2016-07-29 13:58   ` Stefan Müller-Klieser
2016-08-01  9:59     ` Peter Ujfalusi

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.