From ad5fab23620a25d53d358dbde5f005bbe955e77b Mon Sep 17 00:00:00 2001 From: Kyösti Mälkki Date: Sun, 13 Jun 2021 08:02:56 +0300 Subject: device: Add fixed_io_range_flags() and helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/55458 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- src/include/device/device.h | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/include') 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); -- cgit v1.2.3