mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
f69d3d6d10
The PCI helpers read only the base address for a PCI region. In some cases the size is needed as well, e.g. to pass along to a driver which needs to know the size of its register area. Update the functions to allow the size to be returned. For serial, record the information and provided it with the serial_info() call. A limitation still exists in that the size is not available when OF_LIVE is enabled, so take account of that in the tests. Signed-off-by: Simon Glass <sjg@chromium.org>
41 lines
727 B
C
41 lines
727 B
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (c) 2013 Google, Inc
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <dm/device.h>
|
|
#include <dm/ofnode.h>
|
|
#include <dm/read.h>
|
|
#include <dm/util.h>
|
|
#include <linux/libfdt.h>
|
|
#include <vsprintf.h>
|
|
|
|
int list_count_items(struct list_head *head)
|
|
{
|
|
struct list_head *node;
|
|
int count = 0;
|
|
|
|
list_for_each(node, head)
|
|
count++;
|
|
|
|
return count;
|
|
}
|
|
|
|
#if CONFIG_IS_ENABLED(OF_REAL)
|
|
int pci_get_devfn(struct udevice *dev)
|
|
{
|
|
struct fdt_pci_addr addr;
|
|
int ret;
|
|
|
|
/* Extract the devfn from fdt_pci_addr */
|
|
ret = ofnode_read_pci_addr(dev_ofnode(dev), FDT_PCI_SPACE_CONFIG,
|
|
"reg", &addr, NULL);
|
|
if (ret) {
|
|
if (ret != -ENOENT)
|
|
return -EINVAL;
|
|
}
|
|
|
|
return addr.phys_hi & 0xff00;
|
|
}
|
|
#endif
|