Loading Documentation/devicetree/bindings/sound/imx-audio-spdif.txt 0 → 100644 +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; }; sound/soc/fsl/Kconfig +10 −0 Original line number Diff line number Diff line Loading @@ -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 Loading sound/soc/fsl/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 sound/soc/fsl/fsl_spdif.c +3 −14 Original line number Diff line number Diff line Loading @@ -555,7 +555,6 @@ struct snd_soc_dai_ops fsl_spdif_dai_ops = { /* * ============================================ * FSL SPDIF IEC958 controller(mixer) functions * * Channel status get/put control Loading @@ -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, Loading Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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; } Loading @@ -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; } Loading sound/soc/fsl/fsl_ssi.c +0 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
Documentation/devicetree/bindings/sound/imx-audio-spdif.txt 0 → 100644 +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; };
sound/soc/fsl/Kconfig +10 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
sound/soc/fsl/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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
sound/soc/fsl/fsl_spdif.c +3 −14 Original line number Diff line number Diff line Loading @@ -555,7 +555,6 @@ struct snd_soc_dai_ops fsl_spdif_dai_ops = { /* * ============================================ * FSL SPDIF IEC958 controller(mixer) functions * * Channel status get/put control Loading @@ -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, Loading Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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; } Loading @@ -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; } Loading
sound/soc/fsl/fsl_ssi.c +0 −1 Original line number Diff line number Diff line Loading @@ -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