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

Commit 780aaeff authored by Alexander Shiyan's avatar Alexander Shiyan Committed by Mark Brown
Browse files

ASoC: mc13783: Add devicetree support



This patch adds devicetree support for mc13783-codec.

Signed-off-by: default avatarAlexander Shiyan <shc_work@mail.ru>
Acked-by: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent c9eaa447
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,9 @@ Optional properties:
- fsl,mc13xxx-uses-touch : Indicate the touchscreen controller is being used
- fsl,mc13xxx-uses-touch : Indicate the touchscreen controller is being used


Sub-nodes:
Sub-nodes:
- codec: Contain the Audio Codec node.
  - adc-port: Contain PMIC SSI port number used for ADC.
  - dac-port: Contain PMIC SSI port number used for DAC.
- leds : Contain the led nodes and initial register values in property
- leds : Contain the led nodes and initial register values in property
  "led-control". Number of register depends of used IC, for MC13783 is 6,
  "led-control". Number of register depends of used IC, for MC13783 is 6,
  for MC13892 is 4, for MC34708 is 1. See datasheet for bits definitions of
  for MC13892 is 4, for MC34708 is 1. See datasheet for bits definitions of
+7 −3
Original line number Original line Diff line number Diff line
@@ -673,9 +673,13 @@ int mc13xxx_common_init(struct device *dev)
	if (mc13xxx->flags & MC13XXX_USE_ADC)
	if (mc13xxx->flags & MC13XXX_USE_ADC)
		mc13xxx_add_subdevice(mc13xxx, "%s-adc");
		mc13xxx_add_subdevice(mc13xxx, "%s-adc");


	if (mc13xxx->flags & MC13XXX_USE_CODEC)
	if (mc13xxx->flags & MC13XXX_USE_CODEC) {
		if (pdata)
			mc13xxx_add_subdevice_pdata(mc13xxx, "%s-codec",
			mc13xxx_add_subdevice_pdata(mc13xxx, "%s-codec",
				pdata->codec, sizeof(*pdata->codec));
				pdata->codec, sizeof(*pdata->codec));
		else
			mc13xxx_add_subdevice(mc13xxx, "%s-codec");
	}


	if (mc13xxx->flags & MC13XXX_USE_RTC)
	if (mc13xxx->flags & MC13XXX_USE_RTC)
		mc13xxx_add_subdevice(mc13xxx, "%s-rtc");
		mc13xxx_add_subdevice(mc13xxx, "%s-rtc");
+13 −1
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@
 */
 */
#include <linux/module.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/device.h>
#include <linux/of.h>
#include <linux/mfd/mc13xxx.h>
#include <linux/mfd/mc13xxx.h>
#include <linux/slab.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/core.h>
@@ -750,6 +751,7 @@ static int __init mc13783_codec_probe(struct platform_device *pdev)
{
{
	struct mc13783_priv *priv;
	struct mc13783_priv *priv;
	struct mc13xxx_codec_platform_data *pdata = pdev->dev.platform_data;
	struct mc13xxx_codec_platform_data *pdata = pdev->dev.platform_data;
	struct device_node *np;
	int ret;
	int ret;


	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
@@ -760,7 +762,17 @@ static int __init mc13783_codec_probe(struct platform_device *pdev)
		priv->adc_ssi_port = pdata->adc_ssi_port;
		priv->adc_ssi_port = pdata->adc_ssi_port;
		priv->dac_ssi_port = pdata->dac_ssi_port;
		priv->dac_ssi_port = pdata->dac_ssi_port;
	} else {
	} else {
		np = of_get_child_by_name(pdev->dev.parent->of_node, "codec");
		if (!np)
			return -ENOSYS;
			return -ENOSYS;

		ret = of_property_read_u32(np, "adc-port", &priv->adc_ssi_port);
		if (ret)
			return ret;

		ret = of_property_read_u32(np, "dac-port", &priv->dac_ssi_port);
		if (ret)
			return ret;
	}
	}


	dev_set_drvdata(&pdev->dev, priv);
	dev_set_drvdata(&pdev->dev, priv);