From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754221AbbGAJpa (ORCPT ); Wed, 1 Jul 2015 05:45:30 -0400 Received: from mail-wi0-f181.google.com ([209.85.212.181]:35918 "EHLO mail-wi0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753733AbbGAJnG (ORCPT ); Wed, 1 Jul 2015 05:43:06 -0400 From: Tomeu Vizoso To: linux-kernel@vger.kernel.org Cc: Mark Brown , linux-acpi@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-pwm@vger.kernel.org, "Rafael J. Wysocki" , alsa-devel@alsa-project.org, Tomeu Vizoso , Jaroslav Kysela , Thierry Reding , Takashi Iwai , Stephen Warren , Liam Girdwood , linux-tegra@vger.kernel.org, Alexandre Courbot Subject: [PATCH v2 11/12] ASoC: tegra: register dependency parser for firmware nodes Date: Wed, 1 Jul 2015 11:41:06 +0200 Message-Id: <1435743667-11987-12-git-send-email-tomeu.vizoso@collabora.com> X-Mailer: git-send-email 2.4.1 In-Reply-To: <1435743667-11987-1-git-send-email-tomeu.vizoso@collabora.com> References: <1435743667-11987-1-git-send-email-tomeu.vizoso@collabora.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org So others can find out what dependencies a nvidia,tegra-audio-max98090 device has, as specified in bindings/sound/nvidia,tegra-audio-max98090.txt. Signed-off-by: Tomeu Vizoso --- Changes in v2: None sound/soc/tegra/tegra_max98090.c | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/sound/soc/tegra/tegra_max98090.c b/sound/soc/tegra/tegra_max98090.c index 902da36..0f7cbf3 100644 --- a/sound/soc/tegra/tegra_max98090.c +++ b/sound/soc/tegra/tegra_max98090.c @@ -316,7 +316,47 @@ static struct platform_driver tegra_max98090_driver = { .probe = tegra_max98090_probe, .remove = tegra_max98090_remove, }; -module_platform_driver(tegra_max98090_driver); + +static void add_dependency(struct fwnode_handle *fwnode, + const char *property, + struct list_head *deps) +{ + struct device_node *np; + + np = of_parse_phandle(to_of_node(fwnode), property, 0); + if (!np) + return; + + fwnode_add_dependency(&np->fwnode, deps); +} + +static void tegra_max98090_get_dependencies(struct fwnode_handle *fwnode, + struct list_head *deps) +{ + add_dependency(fwnode, "nvidia,i2s-controller", deps); + add_dependency(fwnode, "nvidia,audio-codec", deps); +} + +static int __init tegra_max98090_init(void) +{ + int err; + + err = platform_driver_register(&tegra_max98090_driver); + if (err < 0) + return err; + + fwnode_add_dependency_parser(tegra_max98090_get_dependencies); + + return 0; +} +module_init(tegra_max98090_init); + +static void __exit tegra_max98090_exit(void) +{ + fwnode_remove_dependency_parser(tegra_max98090_get_dependencies); + platform_driver_unregister(&tegra_max98090_driver); +} +module_exit(tegra_max98090_exit); MODULE_AUTHOR("Stephen Warren "); MODULE_DESCRIPTION("Tegra max98090 machine ASoC driver"); -- 2.4.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomeu Vizoso Subject: [PATCH v2 11/12] ASoC: tegra: register dependency parser for firmware nodes Date: Wed, 1 Jul 2015 11:41:06 +0200 Message-ID: <1435743667-11987-12-git-send-email-tomeu.vizoso@collabora.com> References: <1435743667-11987-1-git-send-email-tomeu.vizoso@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1435743667-11987-1-git-send-email-tomeu.vizoso@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org Cc: devicetree@vger.kernel.org, linux-fbdev@vger.kernel.org, Tomeu Vizoso , linux-gpio@vger.kernel.org, Liam Girdwood , Stephen Warren , "Rafael J. Wysocki" , alsa-devel@alsa-project.org, dri-devel@lists.freedesktop.org, Jaroslav Kysela , linux-acpi@vger.kernel.org, Mark Brown , linux-pwm@vger.kernel.org, linux-tegra@vger.kernel.org, Alexandre Courbot List-Id: linux-acpi@vger.kernel.org U28gb3RoZXJzIGNhbiBmaW5kIG91dCB3aGF0IGRlcGVuZGVuY2llcyBhIG52aWRpYSx0ZWdyYS1h dWRpby1tYXg5ODA5MApkZXZpY2UgaGFzLCBhcyBzcGVjaWZpZWQgaW4KYmluZGluZ3Mvc291bmQv bnZpZGlhLHRlZ3JhLWF1ZGlvLW1heDk4MDkwLnR4dC4KClNpZ25lZC1vZmYtYnk6IFRvbWV1IFZp em9zbyA8dG9tZXUudml6b3NvQGNvbGxhYm9yYS5jb20+Ci0tLQoKQ2hhbmdlcyBpbiB2MjogTm9u ZQoKIHNvdW5kL3NvYy90ZWdyYS90ZWdyYV9tYXg5ODA5MC5jIHwgNDIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvdGVncmEvdGVncmFfbWF4 OTgwOTAuYyBiL3NvdW5kL3NvYy90ZWdyYS90ZWdyYV9tYXg5ODA5MC5jCmluZGV4IDkwMmRhMzYu LjBmN2NiZjMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy90ZWdyYS90ZWdyYV9tYXg5ODA5MC5jCisr KyBiL3NvdW5kL3NvYy90ZWdyYS90ZWdyYV9tYXg5ODA5MC5jCkBAIC0zMTYsNyArMzE2LDQ3IEBA IHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRlZ3JhX21heDk4MDkwX2RyaXZlciA9IHsK IAkucHJvYmUgPSB0ZWdyYV9tYXg5ODA5MF9wcm9iZSwKIAkucmVtb3ZlID0gdGVncmFfbWF4OTgw OTBfcmVtb3ZlLAogfTsKLW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGVncmFfbWF4OTgwOTBfZHJp dmVyKTsKKworc3RhdGljIHZvaWQgYWRkX2RlcGVuZGVuY3koc3RydWN0IGZ3bm9kZV9oYW5kbGUg KmZ3bm9kZSwKKwkJCSAgIGNvbnN0IGNoYXIgKnByb3BlcnR5LAorCQkJICAgc3RydWN0IGxpc3Rf aGVhZCAqZGVwcykKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOworCisJbnAgPSBvZl9wYXJz ZV9waGFuZGxlKHRvX29mX25vZGUoZndub2RlKSwgcHJvcGVydHksIDApOworCWlmICghbnApCisJ CXJldHVybjsKKworCWZ3bm9kZV9hZGRfZGVwZW5kZW5jeSgmbnAtPmZ3bm9kZSwgZGVwcyk7Cit9 CisKK3N0YXRpYyB2b2lkIHRlZ3JhX21heDk4MDkwX2dldF9kZXBlbmRlbmNpZXMoc3RydWN0IGZ3 bm9kZV9oYW5kbGUgKmZ3bm9kZSwKKwkJCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmRlcHMpCit7 CisJYWRkX2RlcGVuZGVuY3koZndub2RlLCAibnZpZGlhLGkycy1jb250cm9sbGVyIiwgZGVwcyk7 CisJYWRkX2RlcGVuZGVuY3koZndub2RlLCAibnZpZGlhLGF1ZGlvLWNvZGVjIiwgZGVwcyk7Cit9 CisKK3N0YXRpYyBpbnQgX19pbml0IHRlZ3JhX21heDk4MDkwX2luaXQodm9pZCkKK3sKKwlpbnQg ZXJyOworCisJZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZ0ZWdyYV9tYXg5ODA5MF9k cml2ZXIpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJZndub2RlX2FkZF9kZXBl bmRlbmN5X3BhcnNlcih0ZWdyYV9tYXg5ODA5MF9nZXRfZGVwZW5kZW5jaWVzKTsKKworCXJldHVy biAwOworfQorbW9kdWxlX2luaXQodGVncmFfbWF4OTgwOTBfaW5pdCk7CisKK3N0YXRpYyB2b2lk IF9fZXhpdCB0ZWdyYV9tYXg5ODA5MF9leGl0KHZvaWQpCit7CisJZndub2RlX3JlbW92ZV9kZXBl bmRlbmN5X3BhcnNlcih0ZWdyYV9tYXg5ODA5MF9nZXRfZGVwZW5kZW5jaWVzKTsKKwlwbGF0Zm9y bV9kcml2ZXJfdW5yZWdpc3RlcigmdGVncmFfbWF4OTgwOTBfZHJpdmVyKTsKK30KK21vZHVsZV9l eGl0KHRlZ3JhX21heDk4MDkwX2V4aXQpOwogCiBNT0RVTEVfQVVUSE9SKCJTdGVwaGVuIFdhcnJl biA8c3dhcnJlbkBudmlkaWEuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJUZWdyYSBtYXg5 ODA5MCBtYWNoaW5lIEFTb0MgZHJpdmVyIik7Ci0tIAoyLjQuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomeu Vizoso Date: Wed, 01 Jul 2015 09:41:06 +0000 Subject: [PATCH v2 11/12] ASoC: tegra: register dependency parser for firmware nodes Message-Id: <1435743667-11987-12-git-send-email-tomeu.vizoso@collabora.com> List-Id: References: <1435743667-11987-1-git-send-email-tomeu.vizoso@collabora.com> In-Reply-To: <1435743667-11987-1-git-send-email-tomeu.vizoso@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-kernel@vger.kernel.org Cc: devicetree@vger.kernel.org, linux-fbdev@vger.kernel.org, Tomeu Vizoso , linux-gpio@vger.kernel.org, Liam Girdwood , Stephen Warren , "Rafael J. Wysocki" , alsa-devel@alsa-project.org, dri-devel@lists.freedesktop.org, Jaroslav Kysela , linux-acpi@vger.kernel.org, Mark Brown , linux-pwm@vger.kernel.org, linux-tegra@vger.kernel.org, Alexandre Courbot So others can find out what dependencies a nvidia,tegra-audio-max98090 device has, as specified in bindings/sound/nvidia,tegra-audio-max98090.txt. Signed-off-by: Tomeu Vizoso --- Changes in v2: None sound/soc/tegra/tegra_max98090.c | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/sound/soc/tegra/tegra_max98090.c b/sound/soc/tegra/tegra_max98090.c index 902da36..0f7cbf3 100644 --- a/sound/soc/tegra/tegra_max98090.c +++ b/sound/soc/tegra/tegra_max98090.c @@ -316,7 +316,47 @@ static struct platform_driver tegra_max98090_driver = { .probe = tegra_max98090_probe, .remove = tegra_max98090_remove, }; -module_platform_driver(tegra_max98090_driver); + +static void add_dependency(struct fwnode_handle *fwnode, + const char *property, + struct list_head *deps) +{ + struct device_node *np; + + np = of_parse_phandle(to_of_node(fwnode), property, 0); + if (!np) + return; + + fwnode_add_dependency(&np->fwnode, deps); +} + +static void tegra_max98090_get_dependencies(struct fwnode_handle *fwnode, + struct list_head *deps) +{ + add_dependency(fwnode, "nvidia,i2s-controller", deps); + add_dependency(fwnode, "nvidia,audio-codec", deps); +} + +static int __init tegra_max98090_init(void) +{ + int err; + + err = platform_driver_register(&tegra_max98090_driver); + if (err < 0) + return err; + + fwnode_add_dependency_parser(tegra_max98090_get_dependencies); + + return 0; +} +module_init(tegra_max98090_init); + +static void __exit tegra_max98090_exit(void) +{ + fwnode_remove_dependency_parser(tegra_max98090_get_dependencies); + platform_driver_unregister(&tegra_max98090_driver); +} +module_exit(tegra_max98090_exit); MODULE_AUTHOR("Stephen Warren "); MODULE_DESCRIPTION("Tegra max98090 machine ASoC driver"); -- 2.4.1