Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2769787lqp; Mon, 25 Mar 2024 08:45:10 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVaSAJuvmHSxksRhav39bcC1zWpsrby7bAWHiZ57n/xCgQRd4D5XSbPkseqxO00rLZZN7dSh5wXj5x1lUZc/Y6qh5dnV1z9DO9vbuPoYw== X-Google-Smtp-Source: AGHT+IFqmFHP8gxWez+z+0Bpb6TQueg3hSLBflPVUT0BXGup9vNIJoMYg3J8rUAQmmzP9W4pBozu X-Received: by 2002:ad4:5ec9:0:b0:696:450f:1d5f with SMTP id jm9-20020ad45ec9000000b00696450f1d5fmr7335662qvb.27.1711381509801; Mon, 25 Mar 2024 08:45:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711381509; cv=pass; d=google.com; s=arc-20160816; b=itRocvi9cXiQwdqvP9WvtrCuzvkAVugT4uH7L+0Iq/JNdzM3pB89idrhm6ILu4AmhY VFi8cJR4EeBGAeVDKhNMNnHzl6DZK/w36FxTD1kH26LSOvkqrPGquvam9rgcQS2Unuhw zifROMD5mYckY50FCcAQ/XEK0QZ1MH85CSaqUNwheZ9s8FWgwyRffNocH1E3vYIyd4qg A0R8KBDWUNFm7G8tUv0WG7gZKl88ozpotFAh47UK7bHT5I0Y/MRn8eYe0qtR2lK22fef gvdKVnaWS2v0dDJsM686VkpP/IdrgY7z8cdK3xdMBJBze5nzZv9gZdcvaTPKY/WmnVe/ ZxoQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=VPKtETY44L+sLLhmL3uaX4nFnllKG+8eyvkbzTNtgX4=; fh=e5B70kCl9LLkWBvxilR5aFvQrtTSO3EF+xOlx8Xh6A0=; b=L1pEi1gEJaR8E5U31CkZrXuvfrGKjpXBnSU6P6NoXoKntzMQNCehnLLHggaLOlvhMt ybNwQqUSSqKyONPDPdq710KyPl7hJ8xJyQ1xxyL6Gv1nto6mLWyD9Myw3yOdxofSSzGd jR7g7t3dEZekv82XqTDlv31IHV96stfqCSSS3uwtHBb7McyELxFjPMjbA2ltAZmAr0ZB +WgLNCPA81QcHp2ArLGnx6Ao+YrkpYxzuvtBXeyj57Yl5y2+7BDwjEMCV5Cz6jRRKDK2 x1B0ImSrNQjkUd7kP2VNBAo1YOR01XRpPBV+eMCzYaXZZZaMXvtPiDGwMCSFZpTG8TKi J6dA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@bgdev-pl.20230601.gappssmtp.com header.s=20230601 header.b=cUbS4nGT; arc=pass (i=1 dkim=pass dkdomain=bgdev-pl.20230601.gappssmtp.com); spf=pass (google.com: domain of linux-wireless+bounces-5187-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-wireless+bounces-5187-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id fv5-20020a056214240500b006967e60198fsi4744539qvb.109.2024.03.25.08.45.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 08:45:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless+bounces-5187-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@bgdev-pl.20230601.gappssmtp.com header.s=20230601 header.b=cUbS4nGT; arc=pass (i=1 dkim=pass dkdomain=bgdev-pl.20230601.gappssmtp.com); spf=pass (google.com: domain of linux-wireless+bounces-5187-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-wireless+bounces-5187-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id D36CF1C3DAFE for ; Mon, 25 Mar 2024 15:44:35 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EB279152E16; Mon, 25 Mar 2024 13:17:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="cUbS4nGT" X-Original-To: linux-wireless@vger.kernel.org Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B4A914D44F for ; Mon, 25 Mar 2024 13:17:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711372638; cv=none; b=SEKyV5WE73r6ifSy3uL9Nwys+wBsChuNdlO5DKlu+2KG7Cl+V8uSMArwwYjiQcNiv/Ep4zjVQP2OIs97u1hjnLtjK/Cv8F32ieN8MmaxYAfsORe2pF944iny3pmZWOD5TE4B8fYeAy5ATYZyLrCVUtTN7hF/h323iTafEMdwPNk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711372638; c=relaxed/simple; bh=iWQpZyVUYNR0FgdTLJWWfXolJLly1aZ0q2sdWcfiADU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dPa7B9qyVQtUEWQec703Sh0nxXoh1xuaS3F7xITG/5y5Ks5oka3jGArhqj8PWXC5nH+Zx6exSZP49IxKabB+D5YKiHv9TWJxnP0lssi2faJf94rTghPLdK+zICGcV+3Oszvg7eBNoHvtEIYRrOLrcifkY2z124/mrz2IWdQZdow= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=cUbS4nGT; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-34175878e3cso3089629f8f.0 for ; Mon, 25 Mar 2024 06:17:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1711372632; x=1711977432; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VPKtETY44L+sLLhmL3uaX4nFnllKG+8eyvkbzTNtgX4=; b=cUbS4nGT0+lfRnrunIb/YNFs5x5KjLBB5tZj58rqQZ7yj/oqsNqHDCkLnoS6eAcE3p gsyW+n+o3iwItVVdhcFdeenW8F1X5Zt3O/JWzE37VCVkAFHXC8C8FnbosWgnOOP9C+01 mhG2DfaImEHlzrhbgbnliOF2Xe6PQzer30VhTpSvo9gydkqSBz3w+wqTbWeyNBwgkeqb VaocQURcHNwf9IiMy9cyCF2mMu3uwlcIcd9bFMW6hIMA32tf9SVptNUb0H6rESyOwQHK OXHdbOdnZFO0PnOCjWAH0Z2FaSVX1LU9+/EefNDKZsGMxv6Kqlm9cqyHLPM6gPRaOHty Mzhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711372632; x=1711977432; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VPKtETY44L+sLLhmL3uaX4nFnllKG+8eyvkbzTNtgX4=; b=hwpPGwUz9wP3wVjZQoegM7pmT3JEXzfOQ8SBFc1DRbe2UlQoZOupimPll4+Gpfdyke VSiOAuFx758h1va7KmAqr7xAqPQLOKkonRuPhRCVJ7VYsydloT6Y3rxcaRsVd3hsqQd3 86vRYv40F6W9vmaQTUaKI9JX3Jd4nrS0MaoUdGulFYsi9huDe5Jh1TLb9QR7nwakp0xx mFWI59HjYAVYog2frJQ54DDymnfQnfW6OAdgD1tHb1OTqzpQzbGGFAU8GW/DtAHQPQr0 HpaQbqA+rjtigLZtUMfGV4iGesQJ6+EIV8Ca06w2DZZwvDUSPBX0H61YQoPtY8VhuiPk Aadg== X-Forwarded-Encrypted: i=1; AJvYcCVxQdDPSznjwcrCRSO9zqH2xfBxEE3I9U6Y7yQSQNkqMl4yHNemwxOBn7eEB/FTQ5TE3qeiivVRS3wd1xWZ498u90IKNNPFoUgPomJK0Hs= X-Gm-Message-State: AOJu0YysoONoeJJZJW80VVMcOH/DsuXHW/3neL5TWz1rsJf5Bl9VF5xO uMmeFDX5Vodzn1Na5BUSov/2hFf/TV8P88vx/YRz3mTM2NOyCVlJrXYxd8j7nQc= X-Received: by 2002:a5d:4bd1:0:b0:33d:b2d7:6264 with SMTP id l17-20020a5d4bd1000000b0033db2d76264mr4900718wrt.51.1711372632066; Mon, 25 Mar 2024 06:17:12 -0700 (PDT) Received: from brgl-uxlite.home ([2a01:cb1d:75a:e000:861d:8b72:a859:4ce9]) by smtp.gmail.com with ESMTPSA id p11-20020a056000018b00b0033e75e5f280sm9485245wrx.113.2024.03.25.06.17.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 06:17:11 -0700 (PDT) From: Bartosz Golaszewski To: Marcel Holtmann , Luiz Augusto von Dentz , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Kalle Valo , Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown , Catalin Marinas , Will Deacon , Bjorn Helgaas , Bartosz Golaszewski , Saravana Kannan , Geert Uytterhoeven , Arnd Bergmann , Neil Armstrong , Marek Szyprowski , Alex Elder , Srini Kandagatla , Greg Kroah-Hartman , Abel Vesa , Manivannan Sadhasivam , Lukas Wunner , Dmitry Baryshkov Cc: linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v6 10/16] PCI/pwrctl: reuse the OF node for power controlled devices Date: Mon, 25 Mar 2024 14:16:18 +0100 Message-Id: <20240325131624.26023-11-brgl@bgdev.pl> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240325131624.26023-1-brgl@bgdev.pl> References: <20240325131624.26023-1-brgl@bgdev.pl> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Bartosz Golaszewski With PCI power control we deal with two struct device objects bound to two different drivers but consuming the same OF node. We must not bind the pinctrl twice. To that end: before setting the OF node of the newly instantiated PCI device, check if a platform device consuming the same OF node doesn't already exist on the platform bus and - if so - mark the PCI device as reusing the OF node. Signed-off-by: Bartosz Golaszewski --- drivers/pci/of.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/pci/of.c b/drivers/pci/of.c index 51e3dd0ea5ab..b908fe1ae951 100644 --- a/drivers/pci/of.c +++ b/drivers/pci/of.c @@ -6,6 +6,7 @@ */ #define pr_fmt(fmt) "PCI: OF: " fmt +#include #include #include #include @@ -13,6 +14,7 @@ #include #include #include +#include #include "pci.h" #ifdef CONFIG_PCI @@ -25,16 +27,20 @@ */ int pci_set_of_node(struct pci_dev *dev) { - struct device_node *node; - if (!dev->bus->dev.of_node) return 0; - node = of_pci_find_child_device(dev->bus->dev.of_node, dev->devfn); + struct device_node *node __free(device_node) = + of_pci_find_child_device(dev->bus->dev.of_node, dev->devfn); if (!node) return 0; - device_set_node(&dev->dev, of_fwnode_handle(node)); + struct device *pdev __free(put_device) = + bus_find_device_by_of_node(&platform_bus_type, node); + if (pdev) + dev->bus->dev.of_node_reused = true; + + device_set_node(&dev->dev, of_fwnode_handle(no_free_ptr(node))); return 0; } -- 2.40.1