Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1629764pxb; Thu, 4 Mar 2021 16:56:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJxbca/1hrl1/2EtkEZYUieiwXMf4N24PgEhgRFDlFRFz9emKwmyqMJiOeb3tU31VLCnxutX X-Received: by 2002:a92:d981:: with SMTP id r1mr6146325iln.98.1614905818468; Thu, 04 Mar 2021 16:56:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614905818; cv=none; d=google.com; s=arc-20160816; b=qj68kwvU7tPZJi5J2QlNUD5lGoZT5xJSgG7tXmVblicQikSc/7GKEzmeYnw/h7JUbG pMHXPuj2XViNPa7kgpi0TgB8NFI7QhDikH6hgkfsJFtEkIchYh6H1lGyw6qLr0JsdAoZ uhyFqS2uZhpfMw7vEGTNIu9qitrvsbjbt4IEq5MQVPAVIktoKTeJP5RkbYenYysslicQ hOm696PXO/vh5p/6+mANIZ9fhgJl7kD0xk/SwXc2EgZfqHOiFcXCY7knttls0HjVznI3 8ZAmEg+ME/J4FhZcaxJE0hQrUxTdmL8JUh3W6MzMZAtIB5iRpqzzftyBVlwyFvEfryA6 ocYQ== 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=RPdj1WFSZvBcLVhxMJpVV8+6Duzm/9cr8cywjxUT70I=; b=tw9MoiklC0/aVD2EzkaXl/eXiTiz9Tz9plCMitweg5pjWazNeho1EuTWiTmOXHDafE nKISYx0nVptBwCyR6dVd9snk7BPknuIQxYkHRM0O/JXLyBXL5xq7wGoFznTfWFWI0FvX KNpVwS7CN909Y/1Fcy8jmmCLOsgqHFUcO0BMr1flFnaFGKXtV6H3TT56qRUdQqJi8iCe JblpZAEV8gISrSGvcM8GNDIF0NbEacrX/T3TVUqjxDyqJj0Pfgz6VSjcbJB6ohBWrJ5w TrrNPOCxEqEqMB2Wl6PYbYzLIf/egnYrmd74Gu88Gt9IG8UuoOTIBjxAq1tnzs1hwM5L Rokg== 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 y5si908228iof.34.2021.03.04.16.56.44; Thu, 04 Mar 2021 16:56:58 -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 S238337AbhCDUQV (ORCPT + 99 others); Thu, 4 Mar 2021 15:16:21 -0500 Received: from mga07.intel.com ([134.134.136.100]:17133 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237483AbhCDUQK (ORCPT ); Thu, 4 Mar 2021 15:16:10 -0500 IronPort-SDR: FJ/WzgRQoDv+2VzFgA/E46hdQvXw3ZEDiTyOMkfKUrz6wZ7hkZ/VSdOnuQQO17gZ0WH2BBmg6h AgaAyTtj2BJg== X-IronPort-AV: E=McAfee;i="6000,8403,9913"; a="251537524" X-IronPort-AV: E=Sophos;i="5.81,223,1610438400"; d="scan'208";a="251537524" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Mar 2021 12:13:03 -0800 IronPort-SDR: jDvoZbqh1YyXX2x7kCfpMk0WbIt+wBeQ6z8VNiOjeUQAf47LnitebRNrPQqO08piskAjNBZe16 dYtnP1XBW/YA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,223,1610438400"; d="scan'208";a="518783505" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga004.jf.intel.com with ESMTP; 04 Mar 2021 12:13:00 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 9009F29E; Thu, 4 Mar 2021 22:13:00 +0200 (EET) From: Andy Shevchenko To: Andy Shevchenko , Mika Westerberg , 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 v3 3/5] gpiolib: Move of_node operations to gpiolib-of and correct fwnode use Date: Thu, 4 Mar 2021 22:12:51 +0200 Message-Id: <20210304201253.14652-4-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210304201253.14652-1-andriy.shevchenko@linux.intel.com> References: <20210304201253.14652-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 083d7e1c7cde..2a3d562eb8c1 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); @@ -4212,11 +4209,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