devicetree: Add accessors for chip_info
Apply uniform style of error messages for missing device nodes and chip_info. Change-Id: I70def4599509b8193e44ea3f02c4906f865b4469 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34298 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
73d560a71a
commit
4323d26247
|
@ -240,12 +240,22 @@ DEVTREE_CONST struct device *pcidev_path_on_root_debug(pci_devfn_t devfn, const
|
|||
if (dev)
|
||||
return dev;
|
||||
|
||||
printk(BIOS_ERR, "BUG: %s requests hidden 00:%02x.%u\n", func, devfn >> 3, devfn & 7);
|
||||
devtree_bug(func, devfn);
|
||||
|
||||
/* FIXME: This can return wrong device. */
|
||||
return dev_find_slot(0, devfn);
|
||||
}
|
||||
|
||||
void devtree_bug(const char *func, pci_devfn_t devfn)
|
||||
{
|
||||
printk(BIOS_ERR, "BUG: %s requests hidden 00:%02x.%u\n", func, devfn >> 3, devfn & 7);
|
||||
}
|
||||
|
||||
void __noreturn devtree_die(void)
|
||||
{
|
||||
die("DEVTREE: dev or chip_info is NULL\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Given an SMBus bus and a device number, find the device structure.
|
||||
*
|
||||
|
|
|
@ -294,6 +294,30 @@ DEVTREE_CONST struct bus *pci_root_bus(void);
|
|||
DEVTREE_CONST struct device *dev_find_slot(unsigned int bus, unsigned int devfn);
|
||||
DEVTREE_CONST struct device *pcidev_path_on_root_debug(pci_devfn_t devfn, const char *func);
|
||||
|
||||
/* Robust discovery of chip_info. */
|
||||
void devtree_bug(const char *func, pci_devfn_t devfn);
|
||||
void __noreturn devtree_die(void);
|
||||
|
||||
static inline DEVTREE_CONST void *config_of(const struct device *dev)
|
||||
{
|
||||
if (dev && dev->chip_info)
|
||||
return dev->chip_info;
|
||||
|
||||
devtree_die();
|
||||
}
|
||||
|
||||
static inline DEVTREE_CONST void *config_of_path(pci_devfn_t devfn)
|
||||
{
|
||||
const struct device *dev = pcidev_path_on_root(devfn);
|
||||
if (dev)
|
||||
return config_of(dev);
|
||||
|
||||
devtree_bug(__func__, devfn);
|
||||
|
||||
dev = dev_find_slot(0, devfn);
|
||||
return config_of(dev);
|
||||
}
|
||||
|
||||
void scan_smbus(struct device *bus);
|
||||
void scan_generic_bus(struct device *bus);
|
||||
void scan_static_bus(struct device *bus);
|
||||
|
|
Loading…
Reference in New Issue