mirror of
https://xff.cz/git/u-boot/
synced 2025-09-22 11:02:07 +02:00
dm: core: Drop fdtdec_get_pci_addr()
This function ise effectively replaced by ofnode_read_pci_addr() which works with flat tree. Delete it to avoid code duplication. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
@@ -202,16 +202,13 @@ fdt_addr_t devfdt_get_addr_pci(struct udevice *dev)
|
|||||||
u32 bar;
|
u32 bar;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = fdtdec_get_pci_addr(gd->fdt_blob,
|
ret = ofnode_read_pci_addr(dev_ofnode(dev), FDT_PCI_SPACE_MEM32,
|
||||||
dev_of_offset(dev),
|
"reg", &pci_addr);
|
||||||
FDT_PCI_SPACE_MEM32, "reg",
|
|
||||||
&pci_addr);
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* try if there is any i/o-mapped register */
|
/* try if there is any i/o-mapped register */
|
||||||
ret = fdtdec_get_pci_addr(gd->fdt_blob,
|
ret = ofnode_read_pci_addr(dev_ofnode(dev),
|
||||||
dev_of_offset(dev),
|
FDT_PCI_SPACE_IO, "reg",
|
||||||
FDT_PCI_SPACE_IO, "reg",
|
&pci_addr);
|
||||||
&pci_addr);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return FDT_ADDR_T_NONE;
|
return FDT_ADDR_T_NONE;
|
||||||
}
|
}
|
||||||
|
@@ -416,23 +416,6 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
|
|||||||
fdt_addr_t fdtdec_get_addr_size(const void *blob, int node,
|
fdt_addr_t fdtdec_get_addr_size(const void *blob, int node,
|
||||||
const char *prop_name, fdt_size_t *sizep);
|
const char *prop_name, fdt_size_t *sizep);
|
||||||
|
|
||||||
/**
|
|
||||||
* Look at an address property in a node and return the pci address which
|
|
||||||
* corresponds to the given type in the form of fdt_pci_addr.
|
|
||||||
* The property must hold one fdt_pci_addr with a lengh.
|
|
||||||
*
|
|
||||||
* @param blob FDT blob
|
|
||||||
* @param node node to examine
|
|
||||||
* @param type pci address type (FDT_PCI_SPACE_xxx)
|
|
||||||
* @param prop_name name of property to find
|
|
||||||
* @param addr returns pci address in the form of fdt_pci_addr
|
|
||||||
* @return 0 if ok, -ENOENT if the property did not exist, -EINVAL if the
|
|
||||||
* format of the property was invalid, -ENXIO if the requested
|
|
||||||
* address type was not found
|
|
||||||
*/
|
|
||||||
int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type,
|
|
||||||
const char *prop_name, struct fdt_pci_addr *addr);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look at the compatible property of a device node that represents a PCI
|
* Look at the compatible property of a device node that represents a PCI
|
||||||
* device and extract pci vendor id and device id from it.
|
* device and extract pci vendor id and device id from it.
|
||||||
|
54
lib/fdtdec.c
54
lib/fdtdec.c
@@ -186,60 +186,6 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node, const char *prop_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(PCI) && defined(CONFIG_DM_PCI)
|
#if CONFIG_IS_ENABLED(PCI) && defined(CONFIG_DM_PCI)
|
||||||
int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type,
|
|
||||||
const char *prop_name, struct fdt_pci_addr *addr)
|
|
||||||
{
|
|
||||||
const u32 *cell;
|
|
||||||
int len;
|
|
||||||
int ret = -ENOENT;
|
|
||||||
|
|
||||||
debug("%s: %s: ", __func__, prop_name);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If we follow the pci bus bindings strictly, we should check
|
|
||||||
* the value of the node's parent node's #address-cells and
|
|
||||||
* #size-cells. They need to be 3 and 2 accordingly. However,
|
|
||||||
* for simplicity we skip the check here.
|
|
||||||
*/
|
|
||||||
cell = fdt_getprop(blob, node, prop_name, &len);
|
|
||||||
if (!cell)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
if ((len % FDT_PCI_REG_SIZE) == 0) {
|
|
||||||
int num = len / FDT_PCI_REG_SIZE;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < num; i++) {
|
|
||||||
debug("pci address #%d: %08lx %08lx %08lx\n", i,
|
|
||||||
(ulong)fdt32_to_cpu(cell[0]),
|
|
||||||
(ulong)fdt32_to_cpu(cell[1]),
|
|
||||||
(ulong)fdt32_to_cpu(cell[2]));
|
|
||||||
if ((fdt32_to_cpu(*cell) & type) == type) {
|
|
||||||
addr->phys_hi = fdt32_to_cpu(cell[0]);
|
|
||||||
addr->phys_mid = fdt32_to_cpu(cell[1]);
|
|
||||||
addr->phys_lo = fdt32_to_cpu(cell[2]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cell += (FDT_PCI_ADDR_CELLS +
|
|
||||||
FDT_PCI_SIZE_CELLS);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == num) {
|
|
||||||
ret = -ENXIO;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = -EINVAL;
|
|
||||||
|
|
||||||
fail:
|
|
||||||
debug("(not found)\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fdtdec_get_pci_vendev(const void *blob, int node, u16 *vendor, u16 *device)
|
int fdtdec_get_pci_vendev(const void *blob, int node, u16 *vendor, u16 *device)
|
||||||
{
|
{
|
||||||
const char *list, *end;
|
const char *list, *end;
|
||||||
|
Reference in New Issue
Block a user