device: Add fixed_mem_range_flags() and helpers
Unlike fixed_mem_resource_kb() the arguments are not in KiB. This allows coccinelle script to assign the base and size without applying the KiB division or 10 bit right-shift. Unlike with fixed_mem_resource_kb() the IORESOURCE_STORED flag is passed in the flags parameter until some inconsistencies in the tree get resolved. Change-Id: I2cc9ef94b60d62aaf4374f400b7e05b86e4664d2 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55436 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
parent
508c290bb5
commit
ce34596f74
|
@ -822,22 +822,23 @@ void show_all_devs_resources(int debug_level, const char *msg)
|
|||
}
|
||||
}
|
||||
|
||||
void fixed_mem_resource_kb(struct device *dev, unsigned long index,
|
||||
unsigned long basek, unsigned long sizek,
|
||||
unsigned long type)
|
||||
const struct resource *fixed_resource_range_idx(struct device *dev, unsigned long index,
|
||||
uint64_t base, uint64_t size, unsigned long flags)
|
||||
{
|
||||
struct resource *resource;
|
||||
|
||||
if (!sizek)
|
||||
return;
|
||||
if (!size)
|
||||
return NULL;
|
||||
|
||||
resource = new_resource(dev, index);
|
||||
resource->base = ((resource_t)basek) << 10;
|
||||
resource->size = ((resource_t)sizek) << 10;
|
||||
resource->flags = IORESOURCE_MEM | IORESOURCE_FIXED |
|
||||
IORESOURCE_STORED | IORESOURCE_ASSIGNED;
|
||||
resource->base = base;
|
||||
resource->size = size;
|
||||
resource->flags = IORESOURCE_FIXED | IORESOURCE_ASSIGNED;
|
||||
resource->flags |= flags;
|
||||
|
||||
resource->flags |= type;
|
||||
printk(BIOS_SPEW, "dev: %s, index: 0x%lx, base: 0x%llx, size: 0x%llx\n",
|
||||
dev_path(dev), resource->index, resource->base, resource->size);
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
void fixed_io_resource(struct device *dev, unsigned long index,
|
||||
|
|
|
@ -310,11 +310,42 @@ 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_kb(struct device *dev, unsigned long index,
|
||||
unsigned long basek, unsigned long sizek, unsigned long type);
|
||||
|
||||
void mmconf_resource(struct device *dev, unsigned long index);
|
||||
|
||||
/* These are temporary resource constructors to get us through the
|
||||
migration away from open-coding all the IORESOURCE_FLAGS. */
|
||||
|
||||
const struct resource *fixed_resource_range_idx(struct device *dev, unsigned long index,
|
||||
uint64_t base, uint64_t size,
|
||||
unsigned long flags);
|
||||
|
||||
static inline
|
||||
const struct resource *fixed_mem_range_flags(struct device *dev, unsigned long index,
|
||||
uint64_t base, uint64_t size,
|
||||
unsigned long flags)
|
||||
{
|
||||
return fixed_resource_range_idx(dev, index, base, size, IORESOURCE_MEM | flags);
|
||||
}
|
||||
|
||||
static inline
|
||||
const struct resource *fixed_mem_from_to_flags(struct device *dev, unsigned long index,
|
||||
uint64_t base, uint64_t end, unsigned long flags)
|
||||
{
|
||||
if (end <= base)
|
||||
return NULL;
|
||||
return fixed_mem_range_flags(dev, index, base, end - base, flags);
|
||||
}
|
||||
|
||||
/* Compatibility code */
|
||||
|
||||
static inline void fixed_mem_resource_kb(struct device *dev, unsigned long index,
|
||||
unsigned long basek, unsigned long sizek,
|
||||
unsigned long flags)
|
||||
{
|
||||
fixed_mem_range_flags(dev, index, ((uint64_t)basek) << 10,
|
||||
((uint64_t)sizek) << 10, IORESOURCE_STORED | flags);
|
||||
}
|
||||
|
||||
/* It is the caller's responsibility to adjust regions such that ram_resource_kb()
|
||||
* and mmio_resource_kb() do not overlap.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue