forked from KolibriOS/kolibrios
ddk: v4.6.7
git-svn-id: svn://kolibrios.org@7143 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -20,6 +20,7 @@ struct resource {
|
||||
resource_size_t end;
|
||||
const char *name;
|
||||
unsigned long flags;
|
||||
unsigned long desc;
|
||||
struct resource *parent, *sibling, *child;
|
||||
};
|
||||
|
||||
@@ -49,12 +50,19 @@ struct resource {
|
||||
#define IORESOURCE_WINDOW 0x00200000 /* forwarded by bridge */
|
||||
#define IORESOURCE_MUXED 0x00400000 /* Resource is software muxed */
|
||||
|
||||
#define IORESOURCE_EXT_TYPE_BITS 0x01000000 /* Resource extended types */
|
||||
#define IORESOURCE_SYSRAM 0x01000000 /* System RAM (modifier) */
|
||||
|
||||
#define IORESOURCE_EXCLUSIVE 0x08000000 /* Userland may not map this resource */
|
||||
|
||||
#define IORESOURCE_DISABLED 0x10000000
|
||||
#define IORESOURCE_UNSET 0x20000000 /* No address assigned yet */
|
||||
#define IORESOURCE_AUTO 0x40000000
|
||||
#define IORESOURCE_BUSY 0x80000000 /* Driver has marked this resource busy */
|
||||
|
||||
/* I/O resource extended types */
|
||||
#define IORESOURCE_SYSTEM_RAM (IORESOURCE_MEM|IORESOURCE_SYSRAM)
|
||||
|
||||
/* PnP IRQ specific bits (IORESOURCE_BITS) */
|
||||
#define IORESOURCE_IRQ_HIGHEDGE (1<<0)
|
||||
#define IORESOURCE_IRQ_LOWEDGE (1<<1)
|
||||
@@ -98,13 +106,27 @@ struct resource {
|
||||
|
||||
/* PCI ROM control bits (IORESOURCE_BITS) */
|
||||
#define IORESOURCE_ROM_ENABLE (1<<0) /* ROM is enabled, same as PCI_ROM_ADDRESS_ENABLE */
|
||||
#define IORESOURCE_ROM_SHADOW (1<<1) /* ROM is copy at C000:0 */
|
||||
#define IORESOURCE_ROM_COPY (1<<2) /* ROM is alloc'd copy, resource field overlaid */
|
||||
#define IORESOURCE_ROM_BIOS_COPY (1<<3) /* ROM is BIOS copy, resource field overlaid */
|
||||
#define IORESOURCE_ROM_SHADOW (1<<1) /* Use RAM image, not ROM BAR */
|
||||
|
||||
/* PCI control bits. Shares IORESOURCE_BITS with above PCI ROM. */
|
||||
#define IORESOURCE_PCI_FIXED (1<<4) /* Do not move resource */
|
||||
|
||||
/*
|
||||
* I/O Resource Descriptors
|
||||
*
|
||||
* Descriptors are used by walk_iomem_res_desc() and region_intersects()
|
||||
* for searching a specific resource range in the iomem table. Assign
|
||||
* a new descriptor when a resource range supports the search interfaces.
|
||||
* Otherwise, resource.desc must be set to IORES_DESC_NONE (0).
|
||||
*/
|
||||
enum {
|
||||
IORES_DESC_NONE = 0,
|
||||
IORES_DESC_CRASH_KERNEL = 1,
|
||||
IORES_DESC_ACPI_TABLES = 2,
|
||||
IORES_DESC_ACPI_NV_STORAGE = 3,
|
||||
IORES_DESC_PERSISTENT_MEMORY = 4,
|
||||
IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
|
||||
};
|
||||
|
||||
/* helpers to define resources */
|
||||
#define DEFINE_RES_NAMED(_start, _size, _name, _flags) \
|
||||
@@ -113,6 +135,7 @@ struct resource {
|
||||
.end = (_start) + (_size) - 1, \
|
||||
.name = (_name), \
|
||||
.flags = (_flags), \
|
||||
.desc = IORES_DESC_NONE, \
|
||||
}
|
||||
|
||||
#define DEFINE_RES_IO_NAMED(_start, _size, _name) \
|
||||
@@ -149,6 +172,7 @@ extern void reserve_region_with_split(struct resource *root,
|
||||
extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new);
|
||||
extern int insert_resource(struct resource *parent, struct resource *new);
|
||||
extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
|
||||
extern int remove_resource(struct resource *old);
|
||||
extern void arch_remove_reservations(struct resource *avail);
|
||||
extern int allocate_resource(struct resource *root, struct resource *new,
|
||||
resource_size_t size, resource_size_t min,
|
||||
@@ -170,6 +194,10 @@ static inline unsigned long resource_type(const struct resource *res)
|
||||
{
|
||||
return res->flags & IORESOURCE_TYPE_BITS;
|
||||
}
|
||||
static inline unsigned long resource_ext_type(const struct resource *res)
|
||||
{
|
||||
return res->flags & IORESOURCE_EXT_TYPE_BITS;
|
||||
}
|
||||
/* True iff r1 completely contains r2 */
|
||||
static inline bool resource_contains(struct resource *r1, struct resource *r2)
|
||||
{
|
||||
|
Reference in New Issue
Block a user