- Moved hlt() to it's own header.
[coreboot.git] / src / include / device / resource.h
1 #ifndef RESOURCE_H
2 #define RESOURCE_H
3
4
5 #define IORESOURCE_BITS         0x000000ff      /* Bus-specific bits */
6
7 #define IORESOURCE_IO           0x00000100      /* Resource type */
8 #define IORESOURCE_MEM          0x00000200
9 #define IORESOURCE_IRQ          0x00000400
10 #define IORESOURCE_DRQ          0x00000800
11
12 #define IORESOURCE_PREFETCH     0x00001000      /* No side effects */
13 #define IORESOURCE_READONLY     0x00002000
14 #define IORESOURCE_CACHEABLE    0x00004000
15 #define IORESOURCE_RANGELENGTH  0x00008000
16 #define IORESOURCE_SHADOWABLE   0x00010000
17 #define IORESOURCE_BUS_HAS_VGA  0x00020000
18 #define IORESOURCE_SUBTRACTIVE  0x00040000      /* This resource filters all of the unclaimed transactions
19                                                  * to the bus below.
20                                                  */
21 #define IORESOURCE_STORED       0x20000000      /* The IO resource assignment has been stored in the device */
22 #define IORESOURCE_ASSIGNED     0x40000000      /* An IO resource that has been assigned a value */
23 #define IORESOURCE_FIXED        0x80000000      /* An IO resource the allocator must not change */
24
25 /* PCI specific resource bits */
26 #define IORESOURCE_PCI64        (1<<0)  /* 64bit long pci resource */
27 #define IORESOURCE_PCI_BRIDGE   (1<<1)  /* A bridge pci resource */
28
29 /* ISA PnP IRQ specific bits (IORESOURCE_BITS) */
30 #define IORESOURCE_IRQ_HIGHEDGE         (1<<0)
31 #define IORESOURCE_IRQ_LOWEDGE          (1<<1)
32 #define IORESOURCE_IRQ_HIGHLEVEL        (1<<2)
33 #define IORESOURCE_IRQ_LOWLEVEL         (1<<3)
34
35 /* ISA PnP DMA specific bits (IORESOURCE_BITS) */
36 #define IORESOURCE_DMA_TYPE_MASK        (3<<0)
37 #define IORESOURCE_DMA_8BIT             (0<<0)
38 #define IORESOURCE_DMA_8AND16BIT        (1<<0)
39 #define IORESOURCE_DMA_16BIT            (2<<0)
40
41 #define IORESOURCE_DMA_MASTER           (1<<2)
42 #define IORESOURCE_DMA_BYTE             (1<<3)
43 #define IORESOURCE_DMA_WORD             (1<<4)
44
45 #define IORESOURCE_DMA_SPEED_MASK       (3<<6)
46 #define IORESOURCE_DMA_COMPATIBLE       (0<<6)
47 #define IORESOURCE_DMA_TYPEA            (1<<6)
48 #define IORESOURCE_DMA_TYPEB            (2<<6)
49 #define IORESOURCE_DMA_TYPEF            (3<<6)
50
51
52 /* ISA PnP memory I/O specific bits (IORESOURCE_BITS) */
53 #define IORESOURCE_MEM_WRITEABLE        (1<<0)  /* dup: IORESOURCE_READONLY */
54 #define IORESOURCE_MEM_CACHEABLE        (1<<1)  /* dup: IORESOURCE_CACHEABLE */
55 #define IORESOURCE_MEM_RANGELENGTH      (1<<2)  /* dup: IORESOURCE_RANGELENGTH */
56 #define IORESOURCE_MEM_TYPE_MASK        (3<<3)
57 #define IORESOURCE_MEM_8BIT             (0<<3)
58 #define IORESOURCE_MEM_16BIT            (1<<3)
59 #define IORESOURCE_MEM_8AND16BIT        (2<<3)
60 #define IORESOURCE_MEM_SHADOWABLE       (1<<5)  /* dup: IORESOURCE_SHADOWABLE */
61 #define IORESOURCE_MEM_EXPANSIONROM     (1<<6)
62
63 struct resource {
64         unsigned long base;     /* Base address of the resource */
65         unsigned long size;     /* Size of the resource */
66         unsigned long limit;    /* Largest valid value base + size -1 */
67         unsigned long flags;    /* Descriptions of the kind of resource */
68         unsigned long index;    /* Bus specific per device resource id */
69         unsigned char align;    /* Required alignment (base 2) of the resource */
70         unsigned char gran;     /* Granularity (base 2) of the resource */
71         /* Alignment must be >= the granularity of the resource */
72 };
73
74 #endif /* RESOURCE_H */