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>
This commit is contained in:
Patrick Rudolph 2024-01-22 15:39:46 +01:00 committed by Lean Sheng Tan
parent d8796e50f3
commit f95dbcee71
3 changed files with 14 additions and 6 deletions

View file

@ -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;
}

View file

@ -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;

View file

@ -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);