Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2411249pxb; Tue, 9 Mar 2021 01:39:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJyabyxzENbjJBTMZknVJ7GNB9FXz378k3vNxbkEP5zPDK6kQtUFNRJWfFOf/3sGew2nbT8B X-Received: by 2002:a17:906:4c85:: with SMTP id q5mr19193633eju.375.1615282761649; Tue, 09 Mar 2021 01:39:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615282761; cv=none; d=google.com; s=arc-20160816; b=HHww5kkolZJ7X0vjiljceYYeKvbUD+y96FZ6xnjrwOLCcolHKBZIG+kPq67W97XTQg AtME/1mHDsELOs/+AOx4CjrBez8uYETGwVDbxBT31+j/QCV/neyZgjPj10i5dnXLGSNL oEJQtP4if+TTpp7M4h0ZIHvsC/A75SjFXi03XkFyVSPErOA9FqhRfPdozmu3SM4jkn77 zqcEmq6Pe5CpQe4N0QGIhKjM9dGY+CflxYa2Og7DqZQeOo/M2L6HVvWfL+y4n3rOHo3D 2xLuAewyLIYY+1UhWbz1WlFBN5P7zaPgeHYNYaLd2IPafOM295dR7Cqe7tkjpnrLpxuq V3Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=BdnYQweb30c9Rcveioj3fVTUR7KS1z1mOeApNMQvWOE=; b=D/80ZWl0JUjU3XPcgKRXzDJxXqsHRMZfIZ82oqJRfj0YTBDdKdt2Ilj/ybbDwcv8+g 2e5F3M9NccS9E1Iq9ftc4pYfyuYwFQ0QA63wcZ5MCAOpQh8fmUHw4kVBXQruQbor1Xcp 2/7lyEM1de/D4x8g18VvBqyuv95C9kI14XIifCQ0+IfYrab9g08vO8B6DKSnteWZE0NZ 0EQd+LVETDBY4gTBAW1bFB0Zquxa1dhcE/1W5oicIB3Mdl0W7nC1s1LHq7OLK2Bs3xIU VHgTU3Q8j1AGh90/xHkPjb0mbTjqWkPOnkBH3ntGoPKGU+6CYmInET7yR8t6TWoodw7p 0fNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y16si8979118edi.542.2021.03.09.01.38.59; Tue, 09 Mar 2021 01:39:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230122AbhCIJiB (ORCPT + 99 others); Tue, 9 Mar 2021 04:38:01 -0500 Received: from mga03.intel.com ([134.134.136.65]:43063 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229520AbhCIJhl (ORCPT ); Tue, 9 Mar 2021 04:37:41 -0500 IronPort-SDR: 4dL23v/IlRUAf3xEVLvPoT/osvKjmk+iwjGaii0Dchl7Hnr2NMFAVizMYf+u50cFQz1e8hfIT+ repo4Y+WHYSg== X-IronPort-AV: E=McAfee;i="6000,8403,9917"; a="188240932" X-IronPort-AV: E=Sophos;i="5.81,234,1610438400"; d="scan'208";a="188240932" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Mar 2021 01:37:40 -0800 IronPort-SDR: AsQIPU4TC2OuyWCsyb9c8cLsOLouq8TWQLbfbiLcqfTXPxgXcv84PEf+GBPMr90NhW5dUpkho1 Pp95egjUl3lw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,234,1610438400"; d="scan'208";a="408581526" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga007.jf.intel.com with ESMTP; 09 Mar 2021 01:37:37 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 7099F565; Tue, 9 Mar 2021 11:37:38 +0200 (EET) From: Andy Shevchenko To: Mika Westerberg , Andy Shevchenko , Linus Walleij , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org Cc: Marc Zyngier , Jonathan Corbet , Bartosz Golaszewski , Thomas Gleixner , "Rafael J. Wysocki" Subject: [PATCH v6 3/6] gpiolib: Move of_node operations to gpiolib-of and correct fwnode use Date: Tue, 9 Mar 2021 11:37:33 +0200 Message-Id: <20210309093736.67925-4-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210309093736.67925-1-andriy.shevchenko@linux.intel.com> References: <20210309093736.67925-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The initial value of the OF node based on presence of parent, but at the same time this operation somehow appeared separately from others that handle the OF case. On the other hand there is no need to assign dev->fwnode in the OF case if code properly retrieves fwnode, i.e. via dev_fwnode() helper. Amend gpiolib.c and gpiolib-of.c code in order to group OF operations. Signed-off-by: Andy Shevchenko Reviewed-by: Linus Walleij --- drivers/gpio/gpiolib-of.c | 6 ++++-- drivers/gpio/gpiolib.c | 9 ++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c index baf0153b7bca..bbcc7c073f63 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -1042,11 +1042,13 @@ void of_gpiochip_remove(struct gpio_chip *chip) void of_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev) { + /* Set default OF node to parent's one if present */ + if (gc->parent) + gdev->dev.of_node = gc->parent->of_node; + /* If the gpiochip has an assigned OF node this takes precedence */ if (gc->of_node) gdev->dev.of_node = gc->of_node; else gc->of_node = gdev->dev.of_node; - if (gdev->dev.of_node) - gdev->dev.fwnode = of_fwnode_handle(gdev->dev.of_node); } diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 1b3b0acdb803..41a57f042843 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -585,12 +585,9 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data, if (!gdev) return -ENOMEM; gdev->dev.bus = &gpio_bus_type; + gdev->dev.parent = gc->parent; gdev->chip = gc; gc->gpiodev = gdev; - if (gc->parent) { - gdev->dev.parent = gc->parent; - gdev->dev.of_node = gc->parent->of_node; - } of_gpio_dev_init(gc, gdev); @@ -4211,11 +4208,13 @@ EXPORT_SYMBOL_GPL(gpiod_put_array); static int gpio_bus_match(struct device *dev, struct device_driver *drv) { + struct fwnode_handle *fwnode = dev_fwnode(dev); + /* * Only match if the fwnode doesn't already have a proper struct device * created for it. */ - if (dev->fwnode && dev->fwnode->dev != dev) + if (fwnode && fwnode->dev != dev) return 0; return 1; } -- 2.30.1