From patchwork Thu Dec 7 10:27:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10098335 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 10E89602BF for ; Thu, 7 Dec 2017 10:32:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 02CCA2A29A for ; Thu, 7 Dec 2017 10:32:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EB6122A29C; Thu, 7 Dec 2017 10:32:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_NONE,T_DKIM_INVALID autolearn=no version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1C0B22A29A for ; Thu, 7 Dec 2017 10:32:44 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 907D1267ABC; Thu, 7 Dec 2017 11:30:49 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 1EC19267AA3; Thu, 7 Dec 2017 11:30:44 +0100 (CET) Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by alsa0.perex.cz (Postfix) with ESMTP id 3E3EB267A8E for ; Thu, 7 Dec 2017 11:30:40 +0100 (CET) Received: by mail-wm0-f65.google.com with SMTP id t8so12130620wmc.3 for ; Thu, 07 Dec 2017 02:30:40 -0800 (PST) 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=baXZINT5NXXZVjgVmEu9nTnl6BEclj/wZveGtDlEkKg=; b=WYmfFbMdBtm/tPeKwiqb9G1RL6ghkkNqFpzNwaK2wk7XhsV3No3A3wcApwK+lAtRI2 gn1wkMH8FR9zrnD7c2QeoXTetCGUt7QgURjuk07ybS/pvK/20EaEb1gNoQl6iRwL7AF1 zIPWcSemb5HNMsysM8B3OFwMJU+maGCu/o+C0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=baXZINT5NXXZVjgVmEu9nTnl6BEclj/wZveGtDlEkKg=; b=RM0BcgNu1LoorSXm69lMN/O+expuaoswOEiVkIjxS6qN5GbkPZvlAfitcQelXVIOMf aLUG8lSxl6soTmudrjKtpUzfd4Ort5bHWPTxUy40YlwqfLTomFgcBlNdgfOs8S4yrLds 8RWKnxMVhE1hlGxjHRVO3INVbAslB3MMzkPKFKjP8BwdsgXDIMsGz4DKp2es9PE1zqLb B8XtfHPGWUAag13mlXJGKp6LsGr/rNCd68JZjrN8ZE+F6a034hBsUlCxIBPoa02JoXLR EP+lZHFH8GCvEOuRF0FwFL3fq8I6Bb3RyfC6tR7sAL3Vv7EXKcj3JpUgsYwFyDWC+nag /G6g== X-Gm-Message-State: AKGB3mIhAph7nPT06gR/Oiz8IeGow3zgrebiCfzQtt5kxYGPCB9DSsAH KCnfihS7w9uQjeHhvUt9W6lKTg== X-Google-Smtp-Source: AGs4zMbRzbEmF0rkWtMAggQPfW176uCoMqj+BMwaPJzaIS109NFLx0xZ0BA85arqj6TmfYl5vPwDaA== X-Received: by 10.28.158.206 with SMTP id h197mr671578wme.23.1512642640661; Thu, 07 Dec 2017 02:30:40 -0800 (PST) Received: from localhost.localdomain (cpc90716-aztw32-2-0-cust92.18-1.cable.virginm.net. [86.26.100.93]) by smtp.gmail.com with ESMTPSA id k2sm4837734wrg.4.2017.12.07.02.30.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Dec 2017 02:30:40 -0800 (PST) From: srinivas.kandagatla@linaro.org To: Mark Brown , Greg Kroah-Hartman , alsa-devel@alsa-project.org Date: Thu, 7 Dec 2017 10:27:12 +0000 Message-Id: <20171207102720.21071-6-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171207102720.21071-1-srinivas.kandagatla@linaro.org> References: <20171207102720.21071-1-srinivas.kandagatla@linaro.org> Cc: Mark Rutland , devicetree@vger.kernel.org, Jonathan Corbet , linux-arm-msm@vger.kernel.org, linux-doc@vger.kernel.org, j.neuschaefer@gmx.net, linux-kernel@vger.kernel.org, Rob Herring , Srinivas Kandagatla , pombredanne@nexb.com, sdharia@codeaurora.org Subject: [alsa-devel] [PATCH v9 05/13] slimbus: core: add support to device tree helper X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP From: Srinivas Kandagatla This patch adds support to parse slim devices from device tree. Signed-off-by: Srinivas Kandagatla --- drivers/slimbus/core.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c index a59a88a7a52d..cd2a47dec635 100644 --- a/drivers/slimbus/core.c +++ b/drivers/slimbus/core.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include "slimbus.h" @@ -111,6 +112,9 @@ static int slim_add_device(struct slim_controller *ctrl, sbdev->dev.driver = NULL; sbdev->ctrl = ctrl; + if (node) + sbdev->dev.of_node = of_node_get(node); + dev_set_name(&sbdev->dev, "%x:%x:%x:%x", sbdev->e_addr.manf_id, sbdev->e_addr.prod_code, @@ -141,6 +145,50 @@ static struct slim_device *slim_alloc_device(struct slim_controller *ctrl, return sbdev; } +static void of_register_slim_devices(struct slim_controller *ctrl) +{ + struct device *dev = ctrl->dev; + struct device_node *node; + + if (!ctrl->dev->of_node) + return; + + for_each_child_of_node(ctrl->dev->of_node, node) { + struct slim_device *sbdev; + struct slim_eaddr e_addr; + const char *compat = NULL; + int reg[2], ret; + int manf_id, prod_code; + + compat = of_get_property(node, "compatible", NULL); + if (!compat) + continue; + + ret = sscanf(compat, "slim%x,%x", &manf_id, &prod_code); + if (ret != 2) { + dev_err(dev, "Manf ID & Product code not found %s\n", + compat); + continue; + } + + ret = of_property_read_u32_array(node, "reg", reg, 2); + if (ret) { + dev_err(dev, "Device and Instance id not found:%d\n", + ret); + continue; + } + + e_addr.dev_index = reg[0]; + e_addr.instance = reg[1]; + e_addr.manf_id = manf_id; + e_addr.prod_code = prod_code; + + sbdev = slim_alloc_device(ctrl, &e_addr, node); + if (!sbdev) + continue; + } +} + /* * slim_register_controller() - Controller bring-up and registration. * @@ -172,6 +220,8 @@ int slim_register_controller(struct slim_controller *ctrl) dev_dbg(ctrl->dev, "Bus [%s] registered:dev:%p\n", ctrl->name, ctrl->dev); + of_register_slim_devices(ctrl); + return 0; } EXPORT_SYMBOL_GPL(slim_register_controller);