summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2021-06-13 08:02:56 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2022-06-26 15:19:53 +0000
commitad5fab23620a25d53d358dbde5f005bbe955e77b (patch)
tree429593ba55873726e47448ab62577ca645770f63 /src
parentce34596f74aa1b2b9865061c6d2cdfa223f33222 (diff)
device: Add fixed_io_range_flags() and helpers
Function fixed_io_resource() and alias io_resource() were previously unused. Unlike previously, IORESOURCE_STORED flag needs to be set by the caller, when necessary. For fixed resources, fields alignment, granularity and limit need not be initialised, as the resource cannot be moved. It is assumed the caller provides valid base and size parameters. Change-Id: I8fb4cf2dee4f5193e5652648b63c0ecba7b8bab2 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55458 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'src')
-rw-r--r--src/device/device_util.c14
-rw-r--r--src/include/device/device.h29
2 files changed, 23 insertions, 20 deletions
diff --git a/src/device/device_util.c b/src/device/device_util.c
index 9e2c3d5d9b..383e17b0f6 100644
--- a/src/device/device_util.c
+++ b/src/device/device_util.c
@@ -841,20 +841,6 @@ const struct resource *fixed_resource_range_idx(struct device *dev, unsigned lon
return resource;
}
-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(struct device *dev, unsigned long index)
{
struct resource *resource = new_resource(dev, index);
diff --git a/src/include/device/device.h b/src/include/device/device.h
index c01830693b..8f5407dcfc 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -307,9 +307,6 @@ void pci_domain_read_resources(struct device *dev);
void pci_domain_set_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 mmconf_resource(struct device *dev, unsigned long index);
/* These are temporary resource constructors to get us through the
@@ -336,6 +333,29 @@ const struct resource *fixed_mem_from_to_flags(struct device *dev, unsigned long
return fixed_mem_range_flags(dev, index, base, end - base, flags);
}
+static inline
+const struct resource *fixed_io_range_flags(struct device *dev, unsigned long index,
+ uint16_t base, uint16_t size, unsigned long flags)
+{
+ return fixed_resource_range_idx(dev, index, base, size, IORESOURCE_IO | flags);
+}
+
+static inline
+const struct resource *fixed_io_from_to_flags(struct device *dev, unsigned long index,
+ uint16_t base, uint16_t end, unsigned long flags)
+{
+ if (end <= base)
+ return NULL;
+ return fixed_io_range_flags(dev, index, base, end - base, flags);
+}
+
+static inline
+const struct resource *fixed_io_range_reserved(struct device *dev, unsigned long index,
+ uint16_t base, uint16_t size)
+{
+ return fixed_io_range_flags(dev, index, base, size, IORESOURCE_RESERVE);
+}
+
/* Compatibility code */
static inline void fixed_mem_resource_kb(struct device *dev, unsigned long index,
@@ -365,9 +385,6 @@ static inline void fixed_mem_resource_kb(struct device *dev, unsigned long index
#define mmio_resource_kb(dev, idx, basek, sizek) \
fixed_mem_resource_kb(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);