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>
This commit is contained in:
parent
ce34596f74
commit
ad5fab2362
|
@ -841,20 +841,6 @@ const struct resource *fixed_resource_range_idx(struct device *dev, unsigned lon
|
||||||
return resource;
|
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)
|
void mmconf_resource(struct device *dev, unsigned long index)
|
||||||
{
|
{
|
||||||
struct resource *resource = new_resource(dev, index);
|
struct resource *resource = new_resource(dev, index);
|
||||||
|
|
|
@ -307,9 +307,6 @@ void pci_domain_read_resources(struct device *dev);
|
||||||
void pci_domain_set_resources(struct device *dev);
|
void pci_domain_set_resources(struct device *dev);
|
||||||
void pci_domain_scan_bus(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);
|
void mmconf_resource(struct device *dev, unsigned long index);
|
||||||
|
|
||||||
/* These are temporary resource constructors to get us through the
|
/* 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);
|
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 */
|
/* Compatibility code */
|
||||||
|
|
||||||
static inline void fixed_mem_resource_kb(struct device *dev, unsigned long index,
|
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) \
|
#define mmio_resource_kb(dev, idx, basek, sizek) \
|
||||||
fixed_mem_resource_kb(dev, idx, basek, sizek, IORESOURCE_RESERVE)
|
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);
|
void tolm_test(void *gp, struct device *dev, struct resource *new);
|
||||||
u32 find_pci_tolm(struct bus *bus);
|
u32 find_pci_tolm(struct bus *bus);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue