From 217ca36377f25f8896b6fee2f4c4700580f5e412 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Fri, 15 Mar 2019 17:18:44 +0530 Subject: [PATCH] resources: introduce io_resource() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch creates new resource function to perform allocation of IO resource, similar to mmio_resource() function does for MMIO. Change-Id: I3fdcabb14302537d6074bfd6a362690c06b66bb5 Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/31911 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki Reviewed-by: Furquan Shaikh Reviewed-by: Lijian Zhao --- src/device/device_util.c | 14 ++++++++++++++ src/include/device/device.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/src/device/device_util.c b/src/device/device_util.c index 38207ebfb8..5c4f911b8b 100644 --- a/src/device/device_util.c +++ b/src/device/device_util.c @@ -801,6 +801,20 @@ void fixed_mem_resource(struct device *dev, unsigned long index, resource->flags |= type; } +void fixed_io_resource(struct device *dev, unsigned long index, + unsigned long base, unsigned long size) +{ + struct resource *resource; + + resource = new_resource(dev, index); + resource->base = (resource_t)base; + resource->size = (resource_t)size; + resource->limit = resource->base + resource->size - 1; + resource->flags = IORESOURCE_IO | IORESOURCE_FIXED | + IORESOURCE_STORED | IORESOURCE_ASSIGNED | + IORESOURCE_RESERVE; +} + void mmconf_resource_init(struct resource *resource, resource_t base, int buses) { diff --git a/src/include/device/device.h b/src/include/device/device.h index 7d7be732e8..39a4d567a2 100644 --- a/src/include/device/device.h +++ b/src/include/device/device.h @@ -234,6 +234,9 @@ extern struct device_operations default_dev_ops_root; void pci_domain_read_resources(struct device *dev); void pci_domain_scan_bus(struct device *dev); +void fixed_io_resource(struct device *dev, unsigned long index, + unsigned long base, unsigned long size); + void fixed_mem_resource(struct device *dev, unsigned long index, unsigned long basek, unsigned long sizek, unsigned long type); @@ -259,6 +262,9 @@ void mmconf_resource(struct device *dev, unsigned long index); #define mmio_resource(dev, idx, basek, sizek) \ fixed_mem_resource(dev, idx, basek, sizek, IORESOURCE_RESERVE) +#define io_resource(dev, idx, base, size) \ + fixed_io_resource(dev, idx, base, size) + void tolm_test(void *gp, struct device *dev, struct resource *new); u32 find_pci_tolm(struct bus *bus);