From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
Amit Pundir <amit.pundir@linaro.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Caleb Connolly <caleb.connolly@linaro.org>
Subject: [PATCH v9 3/5] PCI/pwrctl: Create platform devices for child OF nodes of the port node
Date: Wed, 12 Jun 2024 10:20:16 +0200 [thread overview]
Message-ID: <20240612082019.19161-4-brgl@bgdev.pl> (raw)
In-Reply-To: <20240612082019.19161-1-brgl@bgdev.pl>
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
In preparation for introducing PCI device power control - a set of
library functions that will allow powering-up of PCI devices before
they're detected on the PCI bus - we need to populate the devices
defined on the device-tree.
We are reusing the platform bus as it provides us with all the
infrastructure we need to match the pwrctl drivers against the
compatibles from OF nodes.
These platform devices will be probed by the driver core and bound to
the PCI pwrctl drivers we'll introduce later.
Tested-by: Amit Pundir <amit.pundir@linaro.org>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD, SM8650-QRD & SM8650-HDK
Tested-by: Caleb Connolly <caleb.connolly@linaro.org> # OnePlus 8T
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pci/bus.c | 9 +++++++++
drivers/pci/remove.c | 3 ++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index dfc99b3cb958..e4735428814d 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -12,6 +12,7 @@
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/of.h>
+#include <linux/of_platform.h>
#include <linux/proc_fs.h>
#include <linux/slab.h>
@@ -348,6 +349,14 @@ void pci_bus_add_device(struct pci_dev *dev)
pci_warn(dev, "device attach failed (%d)\n", retval);
pci_dev_assign_added(dev, true);
+
+ if (pci_is_bridge(dev)) {
+ retval = of_platform_populate(dev->dev.of_node, NULL, NULL,
+ &dev->dev);
+ if (retval)
+ pci_err(dev, "failed to populate child OF nodes (%d)\n",
+ retval);
+ }
}
EXPORT_SYMBOL_GPL(pci_bus_add_device);
diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
index d749ea8250d6..910387e5bdbf 100644
--- a/drivers/pci/remove.c
+++ b/drivers/pci/remove.c
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
#include <linux/pci.h>
#include <linux/module.h>
+#include <linux/of_platform.h>
#include "pci.h"
static void pci_free_resources(struct pci_dev *dev)
@@ -18,7 +19,7 @@ static void pci_stop_dev(struct pci_dev *dev)
pci_pme_active(dev, false);
if (pci_dev_is_added(dev)) {
-
+ of_platform_depopulate(&dev->dev);
device_release_driver(&dev->dev);
pci_proc_detach_device(dev);
pci_remove_sysfs_dev_files(dev);
--
2.40.1
next prev parent reply other threads:[~2024-06-12 8:20 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-12 8:20 [PATCH v9 0/5] PCI/pwrctl: initial implementation and first user Bartosz Golaszewski
2024-06-12 8:20 ` [PATCH v9 1/5] PCI: Hold the rescan mutex when scanning for the first time Bartosz Golaszewski
2024-06-12 8:20 ` [PATCH v9 2/5] PCI/pwrctl: Reuse the OF node for power controlled devices Bartosz Golaszewski
2024-06-12 8:20 ` Bartosz Golaszewski [this message]
2024-06-12 8:20 ` [PATCH v9 4/5] PCI/pwrctl: Add PCI power control core code Bartosz Golaszewski
2025-06-17 23:35 ` Bjorn Helgaas
2025-06-18 7:56 ` Bartosz Golaszewski
2024-06-12 8:20 ` [PATCH v9 5/5] PCI/pwrctl: Add a PCI power control driver for power sequenced devices Bartosz Golaszewski
2024-06-12 11:21 ` [PATCH v9 0/5] PCI/pwrctl: initial implementation and first user Bartosz Golaszewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240612082019.19161-4-brgl@bgdev.pl \
--to=brgl@bgdev.pl \
--cc=amit.pundir@linaro.org \
--cc=bartosz.golaszewski@linaro.org \
--cc=bhelgaas@google.com \
--cc=caleb.connolly@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=neil.armstrong@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox