ASoC: fsl_acm: add audio clock mux driver
Add audio clock mux (ACM) driver. The Audio Clock Mux (ACM) is a collection of control registers and multiplexers that are used to route the audio source clocks to the audio peripherals. Each audio peripheral has its dedicated audio clock mux and control register. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Signed-off-by: Viorel Suman <viorel.suman@nxp.com> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>pull/10/head
parent
d082b76e48
commit
05e1f694ee
|
@ -0,0 +1,18 @@
|
|||
NXP Audio Clock Mux (ACM)
|
||||
|
||||
The Audio Clock Mux (ACM) is a collection of control registers and multiplexers
|
||||
that are used to route the audio source clocks to the audio peripherals.
|
||||
Each audio peripheral has its dedicated audio clock mux and control register.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : Contains "nxp,imx8qm-acm".
|
||||
- reg : Offset and length of the register set for the device.
|
||||
|
||||
Example:
|
||||
|
||||
acm: acm@59e00000 {
|
||||
compatible = "nxp,imx8qm-acm";
|
||||
reg = <0x0 0x59e00000 0x0 0x1D0000>;
|
||||
status = "okay";
|
||||
};
|
|
@ -24,6 +24,14 @@ config SND_SOC_FSL_SAI
|
|||
This option is only useful for out-of-tree drivers since
|
||||
in-tree drivers select it automatically.
|
||||
|
||||
config SND_SOC_FSL_ACM
|
||||
tristate "Audio Clock Multiplexer (ACM) module support"
|
||||
help
|
||||
Say Y if you want to add Audio Clock Multiplexer (ACM)
|
||||
support for the Freescale CPUs.
|
||||
This option is only useful for out-of-tree drivers since
|
||||
in-tree drivers select it automatically.
|
||||
|
||||
config SND_SOC_FSL_SSI
|
||||
tristate "Synchronous Serial Interface module (SSI) support"
|
||||
select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
|
||||
|
|
|
@ -12,6 +12,7 @@ snd-soc-p1022-rdk-objs := p1022_rdk.o
|
|||
obj-$(CONFIG_SND_SOC_P1022_RDK) += snd-soc-p1022-rdk.o
|
||||
|
||||
# Freescale SSI/DMA/SAI/SPDIF Support
|
||||
snd-soc-fsl-acm-objs := fsl_acm.o
|
||||
snd-soc-fsl-asoc-card-objs := fsl-asoc-card.o
|
||||
snd-soc-fsl-asrc-objs := fsl_asrc.o fsl_asrc_dma.o
|
||||
snd-soc-fsl-sai-objs := fsl_sai.o
|
||||
|
@ -22,6 +23,7 @@ snd-soc-fsl-esai-objs := fsl_esai.o
|
|||
snd-soc-fsl-utils-objs := fsl_utils.o
|
||||
snd-soc-fsl-dma-objs := fsl_dma.o
|
||||
snd-soc-fsl-rpmsg-i2s-objs := fsl_rpmsg_i2s.o
|
||||
obj-$(CONFIG_SND_SOC_FSL_ACM) += snd-soc-fsl-acm.o
|
||||
obj-$(CONFIG_SND_SOC_FSL_ASOC_CARD) += snd-soc-fsl-asoc-card.o
|
||||
snd-soc-fsl-hdmi-objs := fsl_hdmi.o
|
||||
obj-$(CONFIG_SND_SOC_FSL_ASRC) += snd-soc-fsl-asrc.o
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Freescale ALSA SoC Digital Audio Interface (ACM) driver.
|
||||
*
|
||||
* Copyright 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software, you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 2 of the License, or(at your
|
||||
* option) any later version.
|
||||
*
|
||||
*/
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clkdev.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_platform.h>
|
||||
|
||||
static int fsl_acm_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct resource *res;
|
||||
void __iomem *base;
|
||||
|
||||
pr_info("***** imx8qm_acm_init *****\n");
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
base = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id fsl_acm_ids[] = {
|
||||
{ .compatible = "nxp,imx8qm-acm", },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, fsl_acm_ids);
|
||||
|
||||
static struct platform_driver fsl_acm_driver = {
|
||||
.probe = fsl_acm_probe,
|
||||
.driver = {
|
||||
.name = "fsl-acm",
|
||||
.of_match_table = fsl_acm_ids,
|
||||
},
|
||||
};
|
||||
module_platform_driver(fsl_acm_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Freescale Soc ACM Interface");
|
||||
MODULE_ALIAS("platform:fsl-acm");
|
||||
MODULE_LICENSE("GPL");
|
Loading…
Reference in New Issue