From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752959AbcGSXXh (ORCPT ); Tue, 19 Jul 2016 19:23:37 -0400 Received: from mail-pa0-f49.google.com ([209.85.220.49]:35015 "EHLO mail-pa0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752671AbcGSXW6 (ORCPT ); Tue, 19 Jul 2016 19:22:58 -0400 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> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.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 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"); -- 1.9.1