From patchwork Thu Feb 8 13:01:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kever Yang X-Patchwork-Id: 870871 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Gbm0Ddd4"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zcddJ4bFvz9s8J for ; Fri, 9 Feb 2018 00:02:10 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 180FCC21E90; Thu, 8 Feb 2018 13:02:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C3660C21DA3; Thu, 8 Feb 2018 13:02:01 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A20F1C21D74; Thu, 8 Feb 2018 13:02:00 +0000 (UTC) Received: from mail-pf0-f193.google.com (mail-pf0-f193.google.com [209.85.192.193]) by lists.denx.de (Postfix) with ESMTPS id 00631C21C93 for ; Thu, 8 Feb 2018 13:02:00 +0000 (UTC) Received: by mail-pf0-f193.google.com with SMTP id p1so1707023pfh.4 for ; Thu, 08 Feb 2018 05:01:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id; bh=eBi/x46sYDHB2T1JVC5umK6d/PWQujj1bQN13gEpVgQ=; b=Gbm0Ddd4Pqy6o22kyA6DoN1EylXiksQPj2Pt8TbUfGeRQZdYgt88C7JszHK6JGSJCW FZn77CqFqb40ZPEkYFc+XVIWMqkrNHsA+K9NCNIU2mgLgIp3isrxxgHq6KwAIs+a/t+6 GMnDET/Vtp5DguRHtUIDpyziwnIsf8hjMwie+gHGcRU7C6bvLgu31usMHd+c1bs0rQDq eHaIoIBxFdJ3HdUJzZz7OB7aq80d/GiFEjq6Zpe//MfQFHCGvn2eRU16q/LjHMWQ275d Z4F+G9skJ5Yse0dV8V4hrsYUr+4kcbf7NSs07jfkHC7xRTUZVC/Fj743INcaHRdCI+R1 V3nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=eBi/x46sYDHB2T1JVC5umK6d/PWQujj1bQN13gEpVgQ=; b=h6JofHyfryBjJkhlmjrmH/ROeeS6mxmGuMT6W0xVQueDY1vLwR8cs479SND9hexude iqvVN07ZDtrwHTxoB2pJlJtZ+BdE1PruNpy2BTgKuBrm+ey50USI4YVuJDxTSGjH+Em5 vRtZE02aqiZVfbvdu99QIL0qs48TmFBLSTuhr+9/TpTSoGWiTxs/OCl8DGRpEBbfJ/5P vf8a6TDbzxXjemH2aOsfzpd9itcjXYuMBqmgkMoUpOD1uqYTOk3Trllf2H33AcNi8JQy 5MABZu6ht1MEgYGW19d86NJ6r7pI3c9M/juo3+dnEqe35D+RbE7pijVAydwwXIB2AejU tXVQ== X-Gm-Message-State: APf1xPDKPawGjfTnjRHeUZ+CRnJ0Ev2EjokyVcARAluxmIma4cVeXu2k riajSxNMRWw37X4wH9kUATRB/g== X-Google-Smtp-Source: AH8x227QPMjVRF84NhUNkis0cnkiY2bSd9QlFhIIM9P9U7FfBdlUlMidD7QLg3FbxWXkrgvBbdUi9w== X-Received: by 10.98.80.20 with SMTP id e20mr647208pfb.148.1518094917173; Thu, 08 Feb 2018 05:01:57 -0800 (PST) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id y9sm5855721pfl.9.2018.02.08.05.01.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 08 Feb 2018 05:01:56 -0800 (PST) From: Kever Yang To: u-boot@lists.denx.de Date: Thu, 8 Feb 2018 21:01:48 +0800 Message-Id: <1518094909-15995-1-git-send-email-kever.yang@rock-chips.com> X-Mailer: git-send-email 1.9.1 Subject: [U-Boot] [PATCH 1/2] core: add uclass_get_device_by_phandle_id() api X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add api for who can not get phandle from a device property. Signed-off-by: Kever Yang --- drivers/core/uclass.c | 28 ++++++++++++++++++++++++++++ include/dm/uclass.h | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c index f5e4067..dd7a89c 100644 --- a/drivers/core/uclass.c +++ b/drivers/core/uclass.c @@ -443,6 +443,34 @@ int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, } #if CONFIG_IS_ENABLED(OF_CONTROL) +int uclass_get_device_by_phandle_id(enum uclass_id id, int phandle_id, + struct udevice **devp) +{ + struct udevice *dev; + struct uclass *uc; + int ret; + + *devp = NULL; + ret = uclass_get(id, &uc); + if (ret) + return ret; + + ret = -ENODEV; + list_for_each_entry(dev, &uc->dev_head, uclass_node) { + uint phandle; + + phandle = dev_read_phandle(dev); + + if (phandle == phandle_id) { + *devp = dev; + ret = 0; + break; + } + } + + return uclass_get_device_tail(dev, ret, devp); +} + int uclass_get_device_by_phandle(enum uclass_id id, struct udevice *parent, const char *name, struct udevice **devp) { diff --git a/include/dm/uclass.h b/include/dm/uclass.h index 1818849..f3befe4 100644 --- a/include/dm/uclass.h +++ b/include/dm/uclass.h @@ -203,6 +203,22 @@ int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, struct udevice **devp); /** + * uclass_get_device_by_phandle_id() - Get a uclass device by phandle id + * + * This searches the devices in the uclass for one with the given phandle id. + * + * The device is probed to activate it ready for use. + * + * @id: uclass ID to look up + * @phandle_id: the phandle id to look up + * @devp: Returns pointer to device (there is only one for each node) + * @return 0 if OK, -ENODEV if there is no device match the phandle, other + * -ve on error + */ +int uclass_get_device_by_phandle_id(enum uclass_id id, int phandle_id, + struct udevice **devp) + +/** * uclass_get_device_by_phandle() - Get a uclass device by phandle * * This searches the devices in the uclass for one with the given phandle. From patchwork Thu Feb 8 13:01:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kever Yang X-Patchwork-Id: 870872 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hfcZTww6"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zcdfC6F30z9s82 for ; Fri, 9 Feb 2018 00:02:59 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 49F4AC21ECA; Thu, 8 Feb 2018 13:02:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9DB02C21E65; Thu, 8 Feb 2018 13:02:04 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id CFFCFC21E2C; Thu, 8 Feb 2018 13:02:02 +0000 (UTC) Received: from mail-pl0-f68.google.com (mail-pl0-f68.google.com [209.85.160.68]) by lists.denx.de (Postfix) with ESMTPS id 71E62C21C93 for ; Thu, 8 Feb 2018 13:02:01 +0000 (UTC) Received: by mail-pl0-f68.google.com with SMTP id 11-v6so2031412plc.9 for ; Thu, 08 Feb 2018 05:02:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=UFzG/ogN10fYXPzbG/kDbASy+2zL3AOyopgPXvQrZrI=; b=hfcZTww6pDOKOS4m7/q7pLzBaNBsMFIZZafnFST8UnYd937lYXk2jHejGerfZDt1L5 XVFXKp01zvTCz6AEjO/xblHJBiJATv8KADuGOjIWCo1c49dYQ7KtRpN78i/euPaEX/I5 5gfYkflfayxsjEzOkVOxw1XjmRsYJ9aZYZTor2gYFkx0efHHpYcNh+7WIBYVggfhREMg dxJunVaJZrnNKwJH6C9vhAiPXBDZoN4CRl8XRWq6gCD69A2wnix1JbRw5anAuj750Ccj +2LpvE1N/EPAQfmjL1SxntJtV4ZtWk3jTrfWnrWQM7tyzAtykL08Ru8szqeYdUb3Mt6p pvuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=UFzG/ogN10fYXPzbG/kDbASy+2zL3AOyopgPXvQrZrI=; b=lt5tHKn9uVkdpC0N7oh0YTwmPMEQSGqtVcVrHmTyzqKFRkMp0ohOCtCvh0xqsoXW3D Vdlto9kA+3X6R6ChD0Gc/ycjUYfxAuh77flP9bVCOhC45XnPM/qgvxTT7DfePK4t3HOM P0h2mVo+k35zgX5Vibz42qk/wiFCpvwTYOOU5daLZvu5L9Ilr7s6FLZzgx8+op7BAlm2 H1TR4AbFAjStngn4dPRDSGF9Cg1/GoygHGibFTRa4ANnJekYzhgC6Pic7BChHLJS8zlo nelnW/xaTuTg6vGWDnxf4xfP5IUH72obJ+xjlCyayl61a985r+D60BL7TEPMOZn5UjNt F7/A== X-Gm-Message-State: APf1xPAx5zYHf5WiSSu+akYL63Oi/gLV+6/7TrBZ9rEYDSu7c3IzfKZw hMNf9+NSepDSXuZ7agjISXTV2g== X-Google-Smtp-Source: AH8x226nugaZ8ipfPeWsUbxcw9eU99V7Q1cZzSKSz2q0XlA8LZHndA36/iq6mKjuCGA3bBykdPKDRA== X-Received: by 2002:a17:902:5186:: with SMTP id y6-v6mr582769plh.188.1518094919754; Thu, 08 Feb 2018 05:01:59 -0800 (PST) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id y9sm5855721pfl.9.2018.02.08.05.01.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 08 Feb 2018 05:01:58 -0800 (PST) From: Kever Yang To: u-boot@lists.denx.de Date: Thu, 8 Feb 2018 21:01:49 +0800 Message-Id: <1518094909-15995-2-git-send-email-kever.yang@rock-chips.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1518094909-15995-1-git-send-email-kever.yang@rock-chips.com> References: <1518094909-15995-1-git-send-email-kever.yang@rock-chips.com> Subject: [U-Boot] [PATCH 2/2] pinctrl-uclass: convert to use live dt X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Use live dt interface for pinctrl_select_state_full() Signed-off-by: Kever Yang --- drivers/pinctrl/pinctrl-uclass.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index 114952a..5498ae0 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -5,13 +5,13 @@ */ #include -#include #include #include #include #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -63,16 +63,14 @@ static int pinctrl_config_one(struct udevice *config) */ static int pinctrl_select_state_full(struct udevice *dev, const char *statename) { - const void *fdt = gd->fdt_blob; - int node = dev_of_offset(dev); char propname[32]; /* long enough */ const fdt32_t *list; uint32_t phandle; - int config_node; + struct device_node *config_node; struct udevice *config; int state, size, i, ret; - state = fdt_stringlist_search(fdt, node, "pinctrl-names", statename); + state = dev_read_stringlist_search(dev, "pinctrl-names", statename); if (state < 0) { char *end; /* @@ -85,22 +83,15 @@ static int pinctrl_select_state_full(struct udevice *dev, const char *statename) } snprintf(propname, sizeof(propname), "pinctrl-%d", state); - list = fdt_getprop(fdt, node, propname, &size); + list = dev_read_prop(dev, propname, &size); if (!list) return -EINVAL; size /= sizeof(*list); for (i = 0; i < size; i++) { phandle = fdt32_to_cpu(*list++); - - config_node = fdt_node_offset_by_phandle(fdt, phandle); - if (config_node < 0) { - dev_err(dev, "prop %s index %d invalid phandle\n", - propname, i); - return -EINVAL; - } - ret = uclass_get_device_by_of_offset(UCLASS_PINCONFIG, - config_node, &config); + ret = uclass_get_device_by_phandle_id(UCLASS_PINCONFIG, phandle, + &config); if (ret) return ret;