[alsa-devel] [PATCH 0/4] Add fsl_asoc_xlate_tdm_slot_mask()
Xiubo Li (4): ASoC: core: remove the 'of_' prefix of of_xlate_tdm_slot_mask. ASoC: fsl-utils: Add fsl_asoc_xlate_tdm_slot_mask() support. ASoC: fsl-esai: Add .xlate_tdm_slot_mask() support. ASoC: imx-ssi: Add .xlate_tdm_slot_mask() support.
include/sound/soc-dai.h | 2 +- sound/soc/fsl/Kconfig | 2 ++ sound/soc/fsl/fsl_esai.c | 2 ++ sound/soc/fsl/fsl_utils.c | 27 +++++++++++++++++++++++++++ sound/soc/fsl/fsl_utils.h | 4 +++- sound/soc/fsl/imx-ssi.c | 2 ++ sound/soc/soc-core.c | 10 +++++----- 7 files changed, 42 insertions(+), 7 deletions(-)
The 'of_' is not appropriate here for there hasn't any DT parsing.
Signed-off-by: Xiubo Li Li.Xiubo@freescale.com --- include/sound/soc-dai.h | 2 +- sound/soc/soc-core.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 2f66d5e..fad7676 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h @@ -142,7 +142,7 @@ struct snd_soc_dai_ops { * Called by soc_card drivers, normally in their hw_params. */ int (*set_fmt)(struct snd_soc_dai *dai, unsigned int fmt); - int (*of_xlate_tdm_slot_mask)(unsigned int slots, + int (*xlate_tdm_slot_mask)(unsigned int slots, unsigned int *tx_mask, unsigned int *rx_mask); int (*set_tdm_slot)(struct snd_soc_dai *dai, unsigned int tx_mask, unsigned int rx_mask, diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index b322cf2..318fee8 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3625,14 +3625,14 @@ int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) EXPORT_SYMBOL_GPL(snd_soc_dai_set_fmt);
/** - * snd_soc_of_xlate_tdm_slot - generate tx/rx slot mask. + * snd_soc_xlate_tdm_slot - generate tx/rx slot mask. * @slots: Number of slots in use. * @tx_mask: bitmask representing active TX slots. * @rx_mask: bitmask representing active RX slots. * * Generates the TDM tx and rx slot default masks for DAI. */ -static int snd_soc_of_xlate_tdm_slot_mask(unsigned int slots, +static int snd_soc_xlate_tdm_slot_mask(unsigned int slots, unsigned int *tx_mask, unsigned int *rx_mask) { @@ -3662,11 +3662,11 @@ static int snd_soc_of_xlate_tdm_slot_mask(unsigned int slots, int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width) { - if (dai->driver && dai->driver->ops->of_xlate_tdm_slot_mask) - dai->driver->ops->of_xlate_tdm_slot_mask(slots, + if (dai->driver && dai->driver->ops->xlate_tdm_slot_mask) + dai->driver->ops->xlate_tdm_slot_mask(slots, &tx_mask, &rx_mask); else - snd_soc_of_xlate_tdm_slot_mask(slots, &tx_mask, &rx_mask); + snd_soc_xlate_tdm_slot_mask(slots, &tx_mask, &rx_mask);
if (dai->driver && dai->driver->ops->set_tdm_slot) return dai->driver->ops->set_tdm_slot(dai, tx_mask, rx_mask,
This patch add fsl_asoc_xlate_tdm_slot_mask() support for utils. For the some spcified DAI driver, this will be used to generate the TDM slot TX/RX mask. And the TX/RX mask will use a 0 bit for an active slot as default, and the default active bits are at the LSB of the masks.
Signed-off-by: Xiubo Li Li.Xiubo@freescale.com --- sound/soc/fsl/fsl_utils.c | 27 +++++++++++++++++++++++++++ sound/soc/fsl/fsl_utils.h | 4 +++- 2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/sound/soc/fsl/fsl_utils.c b/sound/soc/fsl/fsl_utils.c index b9e42b5..2ac7755 100644 --- a/sound/soc/fsl/fsl_utils.c +++ b/sound/soc/fsl/fsl_utils.c @@ -86,6 +86,33 @@ int fsl_asoc_get_dma_channel(struct device_node *ssi_np, } EXPORT_SYMBOL(fsl_asoc_get_dma_channel);
+/** + * fsl_asoc_xlate_tdm_slot_mask - generate TDM slot TX/RX mask. + * + * @slots: Number of slots in use. + * @tx_mask: bitmask representing active TX slots. + * @rx_mask: bitmask representing active RX slots. + * + * This function used to generate the TDM slot TX/RX mask. And the TX/RX + * mask will use a 0 bit for an active slot as default, and the default + * active bits are at the LSB of the mask value. + */ +int fsl_asoc_xlate_tdm_slot_mask(unsigned int slots, + unsigned int *tx_mask, + unsigned int *rx_mask) +{ + if (!slots) + return -EINVAL; + + if (tx_mask) + *tx_mask = ~((1 << slots) - 1); + if (rx_mask) + *rx_mask = ~((1 << slots) - 1); + + return 0; +} +EXPORT_SYMBOL_GPL(fsl_asoc_xlate_tdm_slot_mask); + MODULE_AUTHOR("Timur Tabi timur@freescale.com"); MODULE_DESCRIPTION("Freescale ASoC utility code"); MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/fsl/fsl_utils.h b/sound/soc/fsl/fsl_utils.h index b295112..df535db 100644 --- a/sound/soc/fsl/fsl_utils.h +++ b/sound/soc/fsl/fsl_utils.h @@ -22,5 +22,7 @@ int fsl_asoc_get_dma_channel(struct device_node *ssi_np, const char *name, struct snd_soc_dai_link *dai, unsigned int *dma_channel_id, unsigned int *dma_id); - +int fsl_asoc_xlate_tdm_slot_mask(unsigned int slots, + unsigned int *tx_mask, + unsigned int *rx_mask); #endif /* _FSL_UTILS_H */
This patch add .xlate_tdm_slot_mask support for ESAI, and this will generate the TDM slot TX and RX masks.
Signed-off-by: Xiubo Li Li.Xiubo@freescale.com --- sound/soc/fsl/Kconfig | 1 + sound/soc/fsl/fsl_esai.c | 2 ++ 2 files changed, 3 insertions(+)
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index 597962e..789bc4d 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig @@ -13,6 +13,7 @@ config SND_SOC_FSL_SPDIF config SND_SOC_FSL_ESAI tristate select REGMAP_MMIO + select SND_SOC_FSL_UTILS
config SND_SOC_FSL_UTILS tristate diff --git a/sound/soc/fsl/fsl_esai.c b/sound/soc/fsl/fsl_esai.c index 0ba3700..c8e5db1 100644 --- a/sound/soc/fsl/fsl_esai.c +++ b/sound/soc/fsl/fsl_esai.c @@ -18,6 +18,7 @@
#include "fsl_esai.h" #include "imx-pcm.h" +#include "fsl_utils.h"
#define FSL_ESAI_RATES SNDRV_PCM_RATE_8000_192000 #define FSL_ESAI_FORMATS (SNDRV_PCM_FMTBIT_S8 | \ @@ -581,6 +582,7 @@ static struct snd_soc_dai_ops fsl_esai_dai_ops = { .hw_params = fsl_esai_hw_params, .set_sysclk = fsl_esai_set_dai_sysclk, .set_fmt = fsl_esai_set_dai_fmt, + .xlate_tdm_slot_mask = fsl_asoc_xlate_tdm_slot_mask, .set_tdm_slot = fsl_esai_set_dai_tdm_slot, };
This patch add .xlate_tdm_slot_mask support for IMX SSI, and this will generate the TDM slot TX and RX masks.
Signed-off-by: Xiubo Li Li.Xiubo@freescale.com --- sound/soc/fsl/Kconfig | 1 + sound/soc/fsl/imx-ssi.c | 2 ++ 2 files changed, 3 insertions(+)
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index 789bc4d..338a916 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig @@ -121,6 +121,7 @@ if SND_IMX_SOC
config SND_SOC_IMX_SSI tristate + select SND_SOC_FSL_UTILS
config SND_SOC_IMX_PCM_FIQ tristate diff --git a/sound/soc/fsl/imx-ssi.c b/sound/soc/fsl/imx-ssi.c index df552fa..ab2fdd7 100644 --- a/sound/soc/fsl/imx-ssi.c +++ b/sound/soc/fsl/imx-ssi.c @@ -50,6 +50,7 @@ #include <linux/platform_data/asoc-imx-ssi.h>
#include "imx-ssi.h" +#include "fsl_utils.h"
#define SSI_SACNT_DEFAULT (SSI_SACNT_AC97EN | SSI_SACNT_FV)
@@ -339,6 +340,7 @@ static const struct snd_soc_dai_ops imx_ssi_pcm_dai_ops = { .set_fmt = imx_ssi_set_dai_fmt, .set_clkdiv = imx_ssi_set_dai_clkdiv, .set_sysclk = imx_ssi_set_dai_sysclk, + .xlate_tdm_slot_mask = fsl_asoc_xlate_tdm_slot_mask, .set_tdm_slot = imx_ssi_set_dai_tdm_slot, .trigger = imx_ssi_trigger, };
On Fri, Mar 21, 2014 at 02:17:11PM +0800, Xiubo Li wrote:
Xiubo Li (4): ASoC: core: remove the 'of_' prefix of of_xlate_tdm_slot_mask. ASoC: fsl-utils: Add fsl_asoc_xlate_tdm_slot_mask() support. ASoC: fsl-esai: Add .xlate_tdm_slot_mask() support. ASoC: imx-ssi: Add .xlate_tdm_slot_mask() support.
This looks OK but I'll wait until after the merge window to apply it since that should happen any day now (due to my scripts that means after the merge window opens).
Subject: Re: [PATCH 0/4] Add fsl_asoc_xlate_tdm_slot_mask()
On Fri, Mar 21, 2014 at 02:17:11PM +0800, Xiubo Li wrote:
Xiubo Li (4): ASoC: core: remove the 'of_' prefix of of_xlate_tdm_slot_mask. ASoC: fsl-utils: Add fsl_asoc_xlate_tdm_slot_mask() support. ASoC: fsl-esai: Add .xlate_tdm_slot_mask() support. ASoC: imx-ssi: Add .xlate_tdm_slot_mask() support.
This looks OK but I'll wait until after the merge window to apply it since that should happen any day now (due to my scripts that means after the merge window opens).
Yes, That's okey. :)
Thanks very much, --
Best Regards, Xiubo
On Fri, Mar 21, 2014 at 02:17:11PM +0800, Xiubo Li wrote:
Xiubo Li (4): ASoC: core: remove the 'of_' prefix of of_xlate_tdm_slot_mask. ASoC: fsl-utils: Add fsl_asoc_xlate_tdm_slot_mask() support. ASoC: fsl-esai: Add .xlate_tdm_slot_mask() support. ASoC: imx-ssi: Add .xlate_tdm_slot_mask() support.
Applied all, thanks.
participants (3)
-
Li.Xiubo@freescale.com
-
Mark Brown
-
Xiubo Li