From: Banajit Goswami <bgoswami@codeaurora.org> To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>, andy.gross@linaro.org, broonie@kernel.org, linux-arm-msm@vger.kernel.org, alsa-devel@alsa-project.org, robh+dt@kernel.org Cc: gregkh@linuxfoundation.org, david.brown@linaro.org, mark.rutland@arm.com, lgirdwood@gmail.com, plai@codeaurora.org, tiwai@suse.com, perex@perex.cz, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rohkumar@qti.qualcomm.com, spatakok@qti.qualcomm.com Subject: Re: [PATCH v7 23/24] ASoC: qcom: apq8096: Add db820c machine driver Date: Wed, 9 May 2018 02:15:18 -0700 [thread overview] Message-ID: <c52fc35d-95a6-6675-6c6e-32a0d5f486d4@codeaurora.org> (raw) In-Reply-To: <20180501120820.11016-24-srinivas.kandagatla@linaro.org> On 5/1/2018 5:08 AM, Srinivas Kandagatla wrote: > This patch adds support to DB820c machine driver. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > --- > sound/soc/qcom/Kconfig | 9 ++ > sound/soc/qcom/Makefile | 2 + > sound/soc/qcom/apq8096.c | 238 +++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 249 insertions(+) > create mode 100644 sound/soc/qcom/apq8096.c <snip> > + > +static int apq8096_sbc_parse_of(struct snd_soc_card *card) > +{ > + struct device_node *np, *codec, *platform, *cpu, *node; > + struct device *dev = card->dev; > + struct snd_soc_dai_link *link; > + int ret, num_links; > + > + ret = snd_soc_of_parse_card_name(card, "qcom,model"); > + if (ret) { > + dev_err(dev, "Error parsing card name: %d\n", ret); > + return ret; > + } > + > + node = dev->of_node; > + > + /* DAPM routes */ > + if (of_property_read_bool(node, "qcom,audio-routing")) { > + ret = snd_soc_of_parse_audio_routing(card, > + "qcom,audio-routing"); > + if (ret) > + return ret; > + } > + > + /* Populate links */ > + num_links = of_get_child_count(node); > + > + /* Allocate the DAI link array */ > + card->dai_link = kcalloc(num_links, sizeof(*link), GFP_KERNEL); > + if (!card->dai_link) > + return -ENOMEM; > + > + card->num_links = num_links; > + link = card->dai_link; > + > + for_each_child_of_node(node, np) { > + cpu = of_get_child_by_name(np, "cpu"); > + platform = of_get_child_by_name(np, "platform"); > + codec = of_get_child_by_name(np, "codec"); > + > + if (!cpu) { > + dev_err(dev, "Can't find cpu DT node\n"); clean up missing to kfree(card->dai_link)? > + return -EINVAL; > + } > + > + link->cpu_of_node = of_parse_phandle(cpu, "sound-dai", 0); > + if (!link->cpu_of_node) { > + dev_err(card->dev, "error getting cpu phandle\n"); ditto > + return -EINVAL; > + } > + > + ret = snd_soc_of_get_dai_name(cpu, &link->cpu_dai_name); > + if (ret) { > + dev_err(card->dev, "error getting cpu dai name\n"); ditto > + return ret; > + } > + > + if (codec && platform) { > + link->platform_of_node = of_parse_phandle(platform, > + "sound-dai", > + 0); > + if (!link->platform_of_node) { > + dev_err(card->dev, "platform dai not found\n"); ditto > + return -EINVAL; > + } > + > + ret = snd_soc_of_get_dai_link_codecs(dev, codec, link); > + if (ret < 0) { > + dev_err(card->dev, "codec dai not found\n"); ditto > + return ret; > + } > + link->no_pcm = 1; > + link->ignore_suspend = 1; ignore_suspend will also need to be set for FE DAIs? > + link->ignore_pmdown_time = 1; > + link->be_hw_params_fixup = apq8096_be_hw_params_fixup; > + } else { > + link->platform_of_node = link->cpu_of_node; > + link->codec_dai_name = "snd-soc-dummy-dai"; > + link->codec_name = "snd-soc-dummy"; > + link->dynamic = 1; > + } > + > + ret = of_property_read_string(np, "link-name", &link->name); > + if (ret) { > + dev_err(card->dev, "error getting codec dai_link name\n"); clean up > + return ret; > + } > + > + link->dpcm_playback = 1; > + link->dpcm_capture = 1; > + link->stream_name = link->name; > + link++; > + } > + > + return ret; > +} > + > +static int apq8096_bind(struct device *dev) > +{ > + struct snd_soc_card *card; > + int ret; > + > + card = kzalloc(sizeof(*card), GFP_KERNEL); > + if (!card) > + return -ENOMEM; > + > + component_bind_all(dev, card); > + card->dev = dev; > + ret = apq8096_sbc_parse_of(card); > + if (ret) { > + dev_err(dev, "Error parsing OF data\n"); > + component_unbind_all(dev, card); > + return ret; > + } > + > + return snd_soc_register_card(card); > +} > + > +static void apq8096_unbind(struct device *dev) > +{ > + struct snd_soc_card *card = dev_get_drvdata(dev); > + > + component_unbind_all(dev, card); > + snd_soc_unregister_card(card); Should sound card not be unregistered first, before calling component_unbind_all()? -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: bgoswami@codeaurora.org (Banajit Goswami) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v7 23/24] ASoC: qcom: apq8096: Add db820c machine driver Date: Wed, 9 May 2018 02:15:18 -0700 [thread overview] Message-ID: <c52fc35d-95a6-6675-6c6e-32a0d5f486d4@codeaurora.org> (raw) In-Reply-To: <20180501120820.11016-24-srinivas.kandagatla@linaro.org> On 5/1/2018 5:08 AM, Srinivas Kandagatla wrote: > This patch adds support to DB820c machine driver. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > --- > sound/soc/qcom/Kconfig | 9 ++ > sound/soc/qcom/Makefile | 2 + > sound/soc/qcom/apq8096.c | 238 +++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 249 insertions(+) > create mode 100644 sound/soc/qcom/apq8096.c <snip> > + > +static int apq8096_sbc_parse_of(struct snd_soc_card *card) > +{ > + struct device_node *np, *codec, *platform, *cpu, *node; > + struct device *dev = card->dev; > + struct snd_soc_dai_link *link; > + int ret, num_links; > + > + ret = snd_soc_of_parse_card_name(card, "qcom,model"); > + if (ret) { > + dev_err(dev, "Error parsing card name: %d\n", ret); > + return ret; > + } > + > + node = dev->of_node; > + > + /* DAPM routes */ > + if (of_property_read_bool(node, "qcom,audio-routing")) { > + ret = snd_soc_of_parse_audio_routing(card, > + "qcom,audio-routing"); > + if (ret) > + return ret; > + } > + > + /* Populate links */ > + num_links = of_get_child_count(node); > + > + /* Allocate the DAI link array */ > + card->dai_link = kcalloc(num_links, sizeof(*link), GFP_KERNEL); > + if (!card->dai_link) > + return -ENOMEM; > + > + card->num_links = num_links; > + link = card->dai_link; > + > + for_each_child_of_node(node, np) { > + cpu = of_get_child_by_name(np, "cpu"); > + platform = of_get_child_by_name(np, "platform"); > + codec = of_get_child_by_name(np, "codec"); > + > + if (!cpu) { > + dev_err(dev, "Can't find cpu DT node\n"); clean up missing to kfree(card->dai_link)? > + return -EINVAL; > + } > + > + link->cpu_of_node = of_parse_phandle(cpu, "sound-dai", 0); > + if (!link->cpu_of_node) { > + dev_err(card->dev, "error getting cpu phandle\n"); ditto > + return -EINVAL; > + } > + > + ret = snd_soc_of_get_dai_name(cpu, &link->cpu_dai_name); > + if (ret) { > + dev_err(card->dev, "error getting cpu dai name\n"); ditto > + return ret; > + } > + > + if (codec && platform) { > + link->platform_of_node = of_parse_phandle(platform, > + "sound-dai", > + 0); > + if (!link->platform_of_node) { > + dev_err(card->dev, "platform dai not found\n"); ditto > + return -EINVAL; > + } > + > + ret = snd_soc_of_get_dai_link_codecs(dev, codec, link); > + if (ret < 0) { > + dev_err(card->dev, "codec dai not found\n"); ditto > + return ret; > + } > + link->no_pcm = 1; > + link->ignore_suspend = 1; ignore_suspend will also need to be set for FE DAIs? > + link->ignore_pmdown_time = 1; > + link->be_hw_params_fixup = apq8096_be_hw_params_fixup; > + } else { > + link->platform_of_node = link->cpu_of_node; > + link->codec_dai_name = "snd-soc-dummy-dai"; > + link->codec_name = "snd-soc-dummy"; > + link->dynamic = 1; > + } > + > + ret = of_property_read_string(np, "link-name", &link->name); > + if (ret) { > + dev_err(card->dev, "error getting codec dai_link name\n"); clean up > + return ret; > + } > + > + link->dpcm_playback = 1; > + link->dpcm_capture = 1; > + link->stream_name = link->name; > + link++; > + } > + > + return ret; > +} > + > +static int apq8096_bind(struct device *dev) > +{ > + struct snd_soc_card *card; > + int ret; > + > + card = kzalloc(sizeof(*card), GFP_KERNEL); > + if (!card) > + return -ENOMEM; > + > + component_bind_all(dev, card); > + card->dev = dev; > + ret = apq8096_sbc_parse_of(card); > + if (ret) { > + dev_err(dev, "Error parsing OF data\n"); > + component_unbind_all(dev, card); > + return ret; > + } > + > + return snd_soc_register_card(card); > +} > + > +static void apq8096_unbind(struct device *dev) > +{ > + struct snd_soc_card *card = dev_get_drvdata(dev); > + > + component_unbind_all(dev, card); > + snd_soc_unregister_card(card); Should sound card not be unregistered first, before calling component_unbind_all()? -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2018-05-09 9:15 UTC|newest] Thread overview: 154+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-01 12:07 [PATCH v7 00/24] ASoC: qcom: Add support to QDSP based Audio Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-01 12:07 ` [PATCH v7 01/24] soc: qcom dt-bindings: Add APR bus bindings Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-03 23:30 ` [alsa-devel] " Banajit Goswami 2018-05-03 23:30 ` Banajit Goswami 2018-05-04 17:33 ` Bjorn Andersson 2018-05-04 17:33 ` Bjorn Andersson 2018-05-04 17:33 ` Bjorn Andersson 2018-05-01 12:07 ` [PATCH v7 02/24] soc: qcom: Add APR bus driver Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-04 17:45 ` Bjorn Andersson 2018-05-04 17:45 ` Bjorn Andersson 2018-05-04 17:45 ` Bjorn Andersson 2018-05-11 3:18 ` Applied "soc: qcom: Add APR bus driver" to the asoc tree Mark Brown 2018-05-11 3:18 ` Mark Brown 2018-05-11 3:18 ` Mark Brown 2018-05-01 12:07 ` [PATCH v7 03/24] ASoC: qdsp6: dt-bindings: Add q6core dt bindings Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-01 12:07 ` Srinivas Kandagatla 2018-05-03 23:45 ` Banajit Goswami 2018-05-03 23:45 ` Banajit Goswami 2018-05-03 23:45 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 04/24] ASoC: qdsp6: dt-bindings: Add q6afe " Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:37 ` Rob Herring 2018-05-01 12:37 ` Rob Herring 2018-05-01 12:37 ` Rob Herring 2018-05-03 23:50 ` Banajit Goswami 2018-05-03 23:50 ` Banajit Goswami 2018-05-03 23:50 ` Banajit Goswami 2018-05-11 3:17 ` Applied "ASoC: qdsp6: dt-bindings: Add q6afe dt bindings" to the asoc tree Mark Brown 2018-05-11 3:17 ` Mark Brown 2018-05-11 3:17 ` Mark Brown 2018-05-01 12:08 ` [PATCH v7 05/24] ASoC: qdsp6: dt-bindings: Add q6adm dt bindings Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-03 23:53 ` Banajit Goswami 2018-05-03 23:53 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 06/24] ASoC: qdsp6: dt-bindings: Add q6asm " Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-03 23:56 ` Banajit Goswami 2018-05-03 23:56 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 07/24] ASoC: qdsp6: q6common: Add qdsp6 helper functions Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-04 1:35 ` Banajit Goswami 2018-05-04 1:35 ` Banajit Goswami 2018-05-04 1:35 ` Banajit Goswami 2018-05-11 3:15 ` Applied "ASoC: qdsp6: q6common: Add qdsp6 helper functions" to the asoc tree Mark Brown 2018-05-11 3:15 ` Mark Brown 2018-05-11 3:15 ` Mark Brown 2018-05-01 12:08 ` [PATCH v7 08/24] ASoC: qdsp6: q6core: Add q6core driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-04 19:04 ` Banajit Goswami 2018-05-04 19:04 ` Banajit Goswami 2018-05-09 6:06 ` Srinivas Kandagatla 2018-05-09 6:06 ` Srinivas Kandagatla 2018-05-09 6:06 ` Srinivas Kandagatla 2018-05-01 12:08 ` [PATCH v7 09/24] ASoC: qdsp6: q6afe: Add q6afe driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 2:40 ` Banajit Goswami 2018-05-09 2:40 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 10/24] ASoC: qdsp6: qdafe: Add SLIMBus port Support Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 2:55 ` Banajit Goswami 2018-05-09 2:55 ` Banajit Goswami 2018-05-09 2:55 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 11/24] ASoC: qdsp6: q6afe: Add support to MI2S ports Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 3:21 ` Banajit Goswami 2018-05-09 3:21 ` Banajit Goswami 2018-05-09 3:21 ` Banajit Goswami 2018-05-09 6:05 ` Srinivas Kandagatla 2018-05-09 6:05 ` Srinivas Kandagatla 2018-05-09 6:05 ` Srinivas Kandagatla 2018-05-01 12:08 ` [PATCH v7 12/24] ASoC: qdsp6: q6afe: Add support to MI2S sysclks Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 4:29 ` Banajit Goswami 2018-05-09 4:29 ` Banajit Goswami 2018-05-09 4:29 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 13/24] ASoC: qdsp6: q6adm: Add q6adm driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 7:55 ` Banajit Goswami 2018-05-09 7:55 ` Banajit Goswami 2018-05-09 8:08 ` Srinivas Kandagatla 2018-05-09 8:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` [PATCH v7 14/24] ASoC: qdsp6: q6asm: Add q6asm driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 8:10 ` Banajit Goswami 2018-05-09 8:10 ` Banajit Goswami 2018-05-09 8:15 ` Srinivas Kandagatla 2018-05-09 8:15 ` Srinivas Kandagatla 2018-05-01 12:08 ` [PATCH v7 15/24] ASoC: qdsp6: q6asm: Add support to memory map and unmap Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 8:23 ` Banajit Goswami 2018-05-09 8:23 ` Banajit Goswami 2018-05-09 8:23 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 16/24] ASoC: qdsp6: q6asm: Add support to audio stream apis Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-04 7:11 ` [alsa-devel] " Rohit Kumar 2018-05-04 7:11 ` Rohit Kumar 2018-05-04 8:24 ` Srinivas Kandagatla 2018-05-04 8:24 ` Srinivas Kandagatla 2018-05-09 10:16 ` Banajit Goswami 2018-05-09 10:16 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 17/24] ASoC: qdsp6: q6routing: Add q6routing driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 8:56 ` Banajit Goswami 2018-05-09 8:56 ` Banajit Goswami 2018-05-09 8:56 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 18/24] ASoC: qdsp6: q6routing: Add support to all SLIMBus Mixers Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 8:39 ` Banajit Goswami 2018-05-09 8:39 ` Banajit Goswami 2018-05-09 8:39 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 19/24] ASoC: qdsp6: q6routing: Add support to MI2S Mixers Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 8:34 ` Banajit Goswami 2018-05-09 8:34 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 20/24] ASoC: qdsp6: q6afe: Add q6afe dai driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 9:42 ` Banajit Goswami 2018-05-09 9:42 ` Banajit Goswami 2018-05-09 9:43 ` Srinivas Kandagatla 2018-05-09 9:43 ` Srinivas Kandagatla 2018-05-01 12:08 ` [PATCH v7 21/24] ASoC: qdsp6: q6asm: Add q6asm " Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 9:57 ` Banajit Goswami 2018-05-09 9:57 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 22/24] ASoC: qdsp6: dt-bindings: Add apq8096 machine bindings Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 9:01 ` Banajit Goswami 2018-05-09 9:01 ` Banajit Goswami 2018-05-01 12:08 ` [PATCH v7 23/24] ASoC: qcom: apq8096: Add db820c machine driver Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 9:15 ` Banajit Goswami [this message] 2018-05-09 9:15 ` Banajit Goswami 2018-05-09 10:03 ` Srinivas Kandagatla 2018-05-09 10:03 ` Srinivas Kandagatla 2018-05-01 12:08 ` [PATCH v7 24/24] MAINTAINERS: Add myself as co-maintainer of qcom audio Srinivas Kandagatla 2018-05-01 12:08 ` Srinivas Kandagatla 2018-05-09 9:16 ` Banajit Goswami 2018-05-09 9:16 ` Banajit Goswami
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=c52fc35d-95a6-6675-6c6e-32a0d5f486d4@codeaurora.org \ --to=bgoswami@codeaurora.org \ --cc=alsa-devel@alsa-project.org \ --cc=andy.gross@linaro.org \ --cc=broonie@kernel.org \ --cc=david.brown@linaro.org \ --cc=devicetree@vger.kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=lgirdwood@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=perex@perex.cz \ --cc=plai@codeaurora.org \ --cc=robh+dt@kernel.org \ --cc=rohkumar@qti.qualcomm.com \ --cc=spatakok@qti.qualcomm.com \ --cc=srinivas.kandagatla@linaro.org \ --cc=tiwai@suse.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.