Received: by 2002:ab2:4a89:0:b0:1f4:a8b6:6e69 with SMTP id w9csp271416lqj; Wed, 10 Apr 2024 09:55:30 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXYM1KqvTXiclD4wnCuuIAbWO4j0JyetaoOlB0fknCYnST7PFOoIDjk7SFAVm4K+xxxoklt8LetaNHrPQ/2BSTT5YkPukGXMHhj9eplUA== X-Google-Smtp-Source: AGHT+IF1UMwk0CDYPYgTpIr0SUNLyanAjlj1bs6bIMl6oGNfbxciOsf/euJ9uy5oiwqwWP6cFJoF X-Received: by 2002:a17:903:230d:b0:1e0:c0dd:c5eb with SMTP id d13-20020a170903230d00b001e0c0ddc5ebmr4131270plh.9.1712768130059; Wed, 10 Apr 2024 09:55:30 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712768130; cv=pass; d=google.com; s=arc-20160816; b=uBFXo6cHTxzaMWIP82A5dphCo+tjtUc6/QoAs3zq3R9qHqloNCgVEx6KQRBhvJhHbb QtzfYoScHmLUJL/zS0/AC7fC/9AnVYlrCdRM/CEFy3bsgvyBjC5bXy3jGldY2J7YrDo/ 6GxIlAcHbtdev29448T8cggVhWq6vdQDZoIVIgMP7lLpAgbj9vj3RybAi1eHO4vcOCZI DHa/U8Jif7JboRQFzdFDtFg1WI48vqM2/PreEzx3G+o1zQv4p8tudJYRjcyz+u30jbBP tBFYZGyixWG3f35mVsd3zt5aTjUc5RGW7ssxzYNjijXSH1IOm5vfEw42rRNr3Q3tHIh0 tuFw== 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=+a2FoUZmGA01koA+Fyfm9xFEaGblhf5J3yYutqh+gkU=; b=v87Pltb49c0MLT6/PEkJuMSxQ7TsR0PIH1bWh9j/qRXCOq4N7gpo/AqAoZZkzvaxF6 bTT9pG4CIvSJ4FC6KtZJ3UrdQrg2aa0fmtZPlgSTDYwzAAYGkJKuAKjORcMN/SEpYcDk qxmxYdQnU2fsJxVT46pWVfF6Ka9a3dUgF2ExX7jRjy9uVpOhMBrIWTLqAQUotRu0cMbY DvQcX68A4vxPlc+lv2g1T/1Fam7UmL7vki43FA9ePxha5ls7M1KuDjwqAJrPdZ5yL/NF m+WgRLAR6hyWMcc1I9feTULFt0nLnY164/GdGga4MomOXWBxPQeA6KiokAY70AEEHcK8 0IdA==; 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=yJ+2cRDh; arc=pass (i=1 dkim=pass dkdomain=bgdev-pl.20230601.gappssmtp.com); spf=pass (google.com: domain of linux-wireless+bounces-6100-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-wireless+bounces-6100-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id lk14-20020a17090308ce00b001e47d98b4e1si4964869plb.591.2024.04.10.09.55.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Apr 2024 09:55:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless+bounces-6100-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@bgdev-pl.20230601.gappssmtp.com header.s=20230601 header.b=yJ+2cRDh; arc=pass (i=1 dkim=pass dkdomain=bgdev-pl.20230601.gappssmtp.com); spf=pass (google.com: domain of linux-wireless+bounces-6100-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-wireless+bounces-6100-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 28CDE288BDB for ; Wed, 10 Apr 2024 12:51:33 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4D84916F0DA; Wed, 10 Apr 2024 12:47:10 +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="yJ+2cRDh" X-Original-To: linux-wireless@vger.kernel.org Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 3E1E816DEA6 for ; Wed, 10 Apr 2024 12:47:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712753230; cv=none; b=LPhvE63HrcW2YBF3gpR7RBNF03X30MGzhTAx2bpOC04z+gP2K64JV2/RBkrH8xM/nLmWChrHavGSVgbHXCqfJ8cjrF5XBvT3CYkoOrleRGzNBYeF7hZjZnGPvsJbembsn0y3a2FQT1SDfsPfooFEoce4NTrD2D3HhUbD+KSMg8g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712753230; c=relaxed/simple; bh=iWQpZyVUYNR0FgdTLJWWfXolJLly1aZ0q2sdWcfiADU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TyfctuRs9XatAzzG9i7Rpt3pOoMN2uOFE5FZ0ofwcJUF3PoEmGhyIzOqlRDyvIFw/djrl8EL4QqdlB9r9h7Z33WzaqWHSL/L/fCywTMPzU7oK5cJsrtNkWF70yHKs3csY4cscz1smONwjEuft7FyOyEBsECfw0LvDFB9t427A0M= 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=yJ+2cRDh; arc=none smtp.client-ip=209.85.128.48 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-wm1-f48.google.com with SMTP id 5b1f17b1804b1-416b7f372b3so9111645e9.3 for ; Wed, 10 Apr 2024 05:47:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1712753225; x=1713358025; 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=yJ+2cRDhM8SYEcwNo18IZzI5FMBWN0Weuq80hH7gC1b60LUQaNNZ+6AFxfoJS7jHvu VY+bykXPg5BtG28sxBziM7ByiC3t/sMhEpnGGpnM68UCK4oC5e6ccFX8VJ73qRXAPBaU TqCho7cZhmkrf+bXoj0fI74CrQa7vD3SdlWXSeGcQ8JtaHdLLqchriVXpfSs/NML/6L5 jr87pX+RfQWXxwPH04uizRAn5tbI3DaoJcaTnqQD3awCS7wuRH73oIdJs0rHs3gQIgOP 7mtmODY9Jtyoxtv4+PGTlh96Kj11Y0sZM5z18Wmsh8yaVvcys/6rjdZP5qXlAe7yJyFb oIGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712753225; x=1713358025; 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=grzOVnOfWX+d4AeceL2hH3HLUnf7jsYg3wRqIEivkkjFpbNP4v4OxMB6zesR99SiRb lHzL3vJ3TCXNiJCXQAZzeD30Gqtfwpj/7G6mNztEmlGdkupKPO5nJpIu3Ns62R6yf6Z+ 5nBy7cIi5EAJGoV3MRneKd42M9YEmlq1m3CItmjsoU1GjnyX+aKBecBDBLR8ykGDRzdS sHTe2C1tSQNTQOY9fys2ExNERJx/vCkoZ3Fpz0vFLwgk4Jbh/blng3QVh9hqEa6SlmBO QQQC/PQwwDtr/X+7wEtWB6c+ZAx2DsyrzGziTvTtPRwUFm26PxSE29FQJjTzJOouprrA i8iQ== X-Forwarded-Encrypted: i=1; AJvYcCWG4H7S8D60UjraUveynITGY/kcGrpMMhByGGH9MqTuGhX9oLcsyZe47iZOvzfCpiMpysNJR56c3NBp9LpXNqcewMA9v6bRXD9LzHqmszw= X-Gm-Message-State: AOJu0YwyDgbn62yvYXmkgObLp6ZE3uBv/QxbZhzVJ260UcCGASe+JqYu Rb4Da1oimldUDrwIpjRGHdwjgYPlgZTiTRcThjEx65MfxFc6ZZqeaPqvktZxGCg= X-Received: by 2002:a05:600c:1913:b0:416:9c95:b712 with SMTP id j19-20020a05600c191300b004169c95b712mr1689271wmq.20.1712753225367; Wed, 10 Apr 2024 05:47:05 -0700 (PDT) Received: from brgl-uxlite.home ([2a01:cb1d:75a:e000:6908:7e99:35c9:d585]) by smtp.gmail.com with ESMTPSA id v13-20020a05600c444d00b0041663450a4asm2150929wmn.45.2024.04.10.05.47.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Apr 2024 05:47:05 -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 , Amit Pundir , Xilin Wu 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 v7 10/16] PCI/pwrctl: reuse the OF node for power controlled devices Date: Wed, 10 Apr 2024 14:46:22 +0200 Message-Id: <20240410124628.171783-11-brgl@bgdev.pl> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240410124628.171783-1-brgl@bgdev.pl> References: <20240410124628.171783-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