From patchwork Tue Jul 19 23:22:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 72382 Delivered-To: patches@linaro.org Received: by 10.140.29.52 with SMTP id a49csp332078qga; Tue, 19 Jul 2016 16:23:08 -0700 (PDT) X-Received: by 10.66.219.68 with SMTP id pm4mr9159120pac.19.1468970577574; Tue, 19 Jul 2016 16:22:57 -0700 (PDT) Return-Path: Received: from mail-pa0-x229.google.com (mail-pa0-x229.google.com. [2607:f8b0:400e:c03::229]) by mx.google.com with ESMTPS id pp7si35069742pac.15.2016.07.19.16.22.57 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Jul 2016 16:22:57 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 2607:f8b0:400e:c03::229 as permitted sender) client-ip=2607:f8b0:400e:c03::229; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: domain of john.stultz@linaro.org designates 2607:f8b0:400e:c03::229 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: by mail-pa0-x229.google.com with SMTP id fi15so11506537pac.1 for ; Tue, 19 Jul 2016 16:22:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Dbx5h5KxxuaTyFYuRWjuWJdj5Be82L4qNKkbL8A+6dc=; b=WkXC+l7wWcJe7hjfPLqFO+q7AOi/RU8LlJL9cISACbzB00YUY22XmTsIWNV72+6ZQy 3jhOJbs8QA37+94juC9pRHN0BSjUkUj0bsKvZrG6jYXYJR18hzqQ9mcVagYdQexa3sY0 JF/bLDSKufl3g2Ku3pOq6wcQPTPYqhn1VACVQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Dbx5h5KxxuaTyFYuRWjuWJdj5Be82L4qNKkbL8A+6dc=; b=ELdpMp4W78E34urwyX9P7qSWjSofDtLXSAmnVZ80F5Im0b4sAE7VDOoTt/VuyHWvA5 3NlxJYfpsL+fS1NvS8t0nfIrB6lOXDbWJt6q7QraQi7KF0OhnUI/NDXXDEtz2O5X5ptf Bz57yXolBWbJwVvNfPtQKxeGGA0Dep9RQ+ZxDFG8TdSeWvqPNeCRBE50K8C9XApibE0d Zg+6vuYHuFTys5C+EO2lEXvozDkNwZ8WhUMk6RPFIlKQ0k6eKqcrG9JKYTxLQILi0Guh aQItwVz+LTirLRNiB4otLNQce2oBa3IVnrxTd0AXwgtXcULd9tRnCqeCHeBXwrcGVGnq ActQ== X-Gm-Message-State: ALyK8tJ45C0kIaFaOQXeNxB6YO17dlXSl+fUTR1WBlP4CV2IF9U1s5cYowEJFjWpMb7iG2k8tKs= X-Received: by 10.66.242.166 with SMTP id wr6mr69733672pac.147.1468970577240; Tue, 19 Jul 2016 16:22:57 -0700 (PDT) Return-Path: Received: from localhost.localdomain (c-73-67-244-238.hsd1.or.comcast.net. [73.67.244.238]) by smtp.gmail.com with ESMTPSA id 81sm7303604pfm.90.2016.07.19.16.22.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 19 Jul 2016 16:22:56 -0700 (PDT) From: John Stultz To: lkml Cc: Zhangfei Gao , Jingoo Han , Krzysztof Kozlowski , Maxime Ripard , Vinod Koul , Dan Williams , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Wei Xu , Rob Herring , Andy Green , Andy Green Subject: [RFC][PATCH 09/10 v2] ASoC: hisilicon: Add hi6210 hdmi codec driver Date: Tue, 19 Jul 2016 16:22:45 -0700 Message-Id: <1468970566-24498-10-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1468970566-24498-1-git-send-email-john.stultz@linaro.org> References: <1468970566-24498-1-git-send-email-john.stultz@linaro.org> Add codec driver for hi6210 hdmi audio output on hi6220 boards. This seems like a lot of code just to fill and register a snd_soc_dai_driver to 2 channel, 16bits, 48k. I suspect there's a better way. Cc: Zhangfei Gao Cc: Jingoo Han Cc: Krzysztof Kozlowski Cc: Maxime Ripard Cc: Vinod Koul Cc: Dan Williams Cc: Liam Girdwood Cc: Mark Brown Cc: Jaroslav Kysela Cc: Takashi Iwai Cc: Wei Xu Cc: Rob Herring Cc: Andy Green Signed-off-by: Andy Green [jstultz: Forward ported to mainline, split out and reworked] Signed-off-by: John Stultz --- v2: * Folded in fixes from kbuildbot * Split i2s and hdmi-card drivers up * Refactored and cut down to just be a codec driver sound/soc/hisilicon/Makefile | 3 +- sound/soc/hisilicon/hi6210-hdmi-codec.c | 68 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 sound/soc/hisilicon/hi6210-hdmi-codec.c -- 1.9.1 diff --git a/sound/soc/hisilicon/Makefile b/sound/soc/hisilicon/Makefile index e8095e2..c253775 100644 --- a/sound/soc/hisilicon/Makefile +++ b/sound/soc/hisilicon/Makefile @@ -1 +1,2 @@ -obj-$(CONFIG_SND_I2S_HI6210_I2S) += hi6210-i2s.o +obj-$(CONFIG_SND_I2S_HI6210_I2S) += hi6210-i2s.o \ + hi6210-hdmi-codec.o diff --git a/sound/soc/hisilicon/hi6210-hdmi-codec.c b/sound/soc/hisilicon/hi6210-hdmi-codec.c new file mode 100644 index 0000000..5dd54e1 --- /dev/null +++ b/sound/soc/hisilicon/hi6210-hdmi-codec.c @@ -0,0 +1,68 @@ +/* + * linux/sound/soc/hisilicon/hi6210-hdmi-codec.c + * + * Copyright (C) 2015 Linaro, Ltd + * + * 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, version 2 of the License. + */ + +#include +#include +#include + +static struct snd_soc_dai_driver hi6210_hdmi_dai = { + .name = "hi6210_hdmi_dai", + .playback = { + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_48000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + }, +}; + +static struct snd_soc_codec_driver hi6210_hdmi_codec; + +static int hi6210_hdmi_probe(struct platform_device *pdev) +{ + int ret; + + ret = snd_soc_register_codec(&pdev->dev, &hi6210_hdmi_codec, + &hi6210_hdmi_dai, 1); + if (ret) { + dev_err(&pdev->dev, "snd_soc_register_codec failed (%d)\n", + ret); + return ret; + } + return 0; +} + +static int hi6210_hdmi_remove(struct platform_device *pdev) +{ + snd_soc_unregister_codec(&pdev->dev); + return 0; +} + +static const struct of_device_id hi6210_hdmi_dt_ids[] = { + { .compatible = "hisilicon,hi6210-hdmi-audio-codec" }, + { /* sentinel */ } +}; + +MODULE_DEVICE_TABLE(of, hi6210_hdmi_dt_ids); + +static struct platform_driver hi6210_hdmi_driver = { + .driver = { + .name = "hi6210-hdmi-audio", + .of_match_table = hi6210_hdmi_dt_ids, + }, + .probe = hi6210_hdmi_probe, + .remove = hi6210_hdmi_remove, +}; + +module_platform_driver(hi6210_hdmi_driver); + +MODULE_AUTHOR("andy.green@linaro.org"); +MODULE_DESCRIPTION("Hisilicon HDMI codec driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:hi6210-hdmi-audio");