summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2024-01-22 15:39:46 +0100
committerLean Sheng Tan <sheng.tan@9elements.com>2024-01-24 08:46:19 +0000
commitf95dbcee713d3a8a081644ee345ce0f6fedf39ac (patch)
tree246036838430e0f3724b18cd482cface0c6c853c
parentd8796e50f322ea81fb61ebfce60f3f4d82d0bf2c (diff)
device: Add inline method to identify PATH_ROOT
Add and use inline method to identify the root device. Change-Id: I394c8668245bcfea6414b8ca5f14ef8135897e59 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/80169 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
-rw-r--r--src/acpi/device.c9
-rw-r--r--src/drivers/usb/pci_xhci/pci_xhci.c2
-rw-r--r--src/include/device/device.h9
3 files changed, 14 insertions, 6 deletions
diff --git a/src/acpi/device.c b/src/acpi/device.c
index 92000a3d8b..823cdbeb5a 100644
--- a/src/acpi/device.c
+++ b/src/acpi/device.c
@@ -87,7 +87,7 @@ const char *acpi_device_name(const struct device *dev)
pdev = pdev->bus->dev;
if (!pdev)
break;
- if (pdev->path.type == DEVICE_PATH_ROOT)
+ if (is_root_device(pdev))
break;
if (pdev->ops && pdev->ops->acpi_name)
name = pdev->ops->acpi_name(dev);
@@ -147,16 +147,15 @@ static ssize_t acpi_device_path_fill(const struct device *dev, char *buf,
return cur;
/* Walk up the tree to the root device */
- if (dev->path.type != DEVICE_PATH_ROOT && dev->bus && dev->bus->dev)
+ if (!is_root_device(dev) && dev->bus && dev->bus->dev)
next = acpi_device_path_fill(dev->bus->dev, buf, buf_len, cur);
if (next < 0)
return next;
/* Fill in the path from the root device */
next += snprintf(buf + next, buf_len - next, "%s%s",
- (dev->path.type == DEVICE_PATH_ROOT
- || (strlen(name) == 0)) ?
- "" : ".", name);
+ (is_root_device(dev) || (strlen(name) == 0)) ?
+ "" : ".", name);
return next;
}
diff --git a/src/drivers/usb/pci_xhci/pci_xhci.c b/src/drivers/usb/pci_xhci/pci_xhci.c
index 6d022d1455..398595d114 100644
--- a/src/drivers/usb/pci_xhci/pci_xhci.c
+++ b/src/drivers/usb/pci_xhci/pci_xhci.c
@@ -73,7 +73,7 @@ static bool xhci_port_exists(const struct device *dev, const struct usb_path *pa
static const struct device *get_xhci_dev(const struct device *dev)
{
while (dev && dev->ops != &xhci_pci_ops) {
- if (dev->path.type == DEVICE_PATH_ROOT)
+ if (is_root_device(dev))
return NULL;
dev = dev->bus->dev;
diff --git a/src/include/device/device.h b/src/include/device/device.h
index cd0999ac94..863299c01d 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -458,6 +458,15 @@ static inline DEVTREE_CONST void *config_of(const struct device *dev)
*/
#define config_of_soc() __pci_0_00_0_config
+static inline bool is_root_device(const struct device *dev)
+{
+ if (!dev || !dev->bus)
+ return false;
+
+ return (dev->path.type == DEVICE_PATH_ROOT) ||
+ (dev->bus->dev == dev);
+}
+
void enable_static_device(struct device *dev);
void enable_static_devices(struct device *bus);
void scan_smbus(struct device *bus);