Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f97b69a authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/topic/fsl' into tmp

parents 812e6bbf 2f82cdba
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
Freescale i.MX audio complex with S/PDIF transceiver

Required properties:

  - compatible : "fsl,imx-audio-spdif"

  - model : The user-visible name of this sound complex

  - spdif-controller : The phandle of the i.MX S/PDIF controller


Optional properties:

  - spdif-out : This is a boolean property. If present, the transmitting
    function of S/PDIF will be enabled, indicating there's a physical
    S/PDIF out connector/jack on the board or it's connecting to some
    other IP block, such as an HDMI encoder/display-controller.

  - spdif-in : This is a boolean property. If present, the receiving
    function of S/PDIF will be enabled, indicating there's a physical
    S/PDIF in connector/jack on the board.

* Note: At least one of these two properties should be set in the DT binding.


Example:

sound-spdif {
	compatible = "fsl,imx-audio-spdif";
	model = "imx-spdif";
	spdif-controller = <&spdif>;
	spdif-out;
	spdif-in;
};
+10 −0
Original line number Diff line number Diff line
@@ -193,6 +193,16 @@ config SND_SOC_IMX_SGTL5000
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  a sgtl5000 codec.

config SND_SOC_IMX_SPDIF
	tristate "SoC Audio support for i.MX boards with S/PDIF"
	select SND_SOC_IMX_PCM_DMA
	select SND_SOC_FSL_SPDIF
	select SND_SOC_SPDIF
	help
	  SoC Audio support for i.MX boards with S/PDIF
	  Say Y if you want to add support for SoC audio on an i.MX board with
	  a S/DPDIF.

config SND_SOC_IMX_MC13783
	tristate "SoC Audio support for I.MX boards with mc13783"
	depends on MFD_MC13783 && ARM
+2 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ snd-soc-mx27vis-aic32x4-objs := mx27vis-aic32x4.o
snd-soc-wm1133-ev1-objs := wm1133-ev1.o
snd-soc-imx-sgtl5000-objs := imx-sgtl5000.o
snd-soc-imx-wm8962-objs := imx-wm8962.o
snd-soc-imx-spdif-objs :=imx-spdif.o
snd-soc-imx-mc13783-objs := imx-mc13783.o

obj-$(CONFIG_SND_SOC_EUKREA_TLV320) += snd-soc-eukrea-tlv320.o
@@ -53,4 +54,5 @@ obj-$(CONFIG_SND_SOC_MX27VIS_AIC32X4) += snd-soc-mx27vis-aic32x4.o
obj-$(CONFIG_SND_MXC_SOC_WM1133_EV1) += snd-soc-wm1133-ev1.o
obj-$(CONFIG_SND_SOC_IMX_SGTL5000) += snd-soc-imx-sgtl5000.o
obj-$(CONFIG_SND_SOC_IMX_WM8962) += snd-soc-imx-wm8962.o
obj-$(CONFIG_SND_SOC_IMX_SPDIF) += snd-soc-imx-spdif.o
obj-$(CONFIG_SND_SOC_IMX_MC13783) += snd-soc-imx-mc13783.o
+3 −14
Original line number Diff line number Diff line
@@ -555,7 +555,6 @@ struct snd_soc_dai_ops fsl_spdif_dai_ops = {


/*
 * ============================================
 * FSL SPDIF IEC958 controller(mixer) functions
 *
 *	Channel status get/put control
@@ -563,7 +562,6 @@ struct snd_soc_dai_ops fsl_spdif_dai_ops = {
 *	Valid bit value get control
 *	DPLL lock status get control
 *	User bit sync mode selection control
 * ============================================
 */

static int fsl_spdif_info(struct snd_kcontrol *kcontrol,
@@ -942,11 +940,7 @@ static const struct snd_soc_component_driver fsl_spdif_component = {
	.name		= "fsl-spdif",
};

/*
 * ================
 * FSL SPDIF REGMAP
 * ================
 */
/* FSL SPDIF REGMAP */

static bool fsl_spdif_readable_reg(struct device *dev, unsigned int reg)
{
@@ -1119,10 +1113,8 @@ static int fsl_spdif_probe(struct platform_device *pdev)
	}

	regs = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(regs)) {
		dev_err(&pdev->dev, "could not map device resources\n");
	if (IS_ERR(regs))
		return PTR_ERR(regs);
	}

	spdif_priv->regmap = devm_regmap_init_mmio_clk(&pdev->dev,
			"core", regs, &fsl_spdif_regmap_config);
@@ -1184,7 +1176,7 @@ static int fsl_spdif_probe(struct platform_device *pdev)
					 &spdif_priv->cpu_dai_drv, 1);
	if (ret) {
		dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
		goto error_dev;
		return ret;
	}

	ret = imx_pcm_dma_init(pdev);
@@ -1197,8 +1189,6 @@ static int fsl_spdif_probe(struct platform_device *pdev)

error_component:
	snd_soc_unregister_component(&pdev->dev);
error_dev:
	dev_set_drvdata(&pdev->dev, NULL);

	return ret;
}
@@ -1207,7 +1197,6 @@ static int fsl_spdif_remove(struct platform_device *pdev)
{
	imx_pcm_dma_exit(pdev);
	snd_soc_unregister_component(&pdev->dev);
	dev_set_drvdata(&pdev->dev, NULL);

	return 0;
}
+0 −1
Original line number Diff line number Diff line
@@ -1114,7 +1114,6 @@ error_dai:
	snd_soc_unregister_component(&pdev->dev);

error_dev:
	dev_set_drvdata(&pdev->dev, NULL);
	device_remove_file(&pdev->dev, dev_attr);

error_clk:
Loading