aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ioport.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/ioport.h')
-rw-r--r--include/linux/ioport.h31
1 files changed, 20 insertions, 11 deletions
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 7129504e053d..b22790268b64 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -34,22 +34,25 @@ struct resource_list {
34 */ 34 */
35#define IORESOURCE_BITS 0x000000ff /* Bus-specific bits */ 35#define IORESOURCE_BITS 0x000000ff /* Bus-specific bits */
36 36
37#define IORESOURCE_TYPE_BITS 0x00000f00 /* Resource type */ 37#define IORESOURCE_TYPE_BITS 0x00001f00 /* Resource type */
38#define IORESOURCE_IO 0x00000100 38#define IORESOURCE_IO 0x00000100
39#define IORESOURCE_MEM 0x00000200 39#define IORESOURCE_MEM 0x00000200
40#define IORESOURCE_IRQ 0x00000400 40#define IORESOURCE_IRQ 0x00000400
41#define IORESOURCE_DMA 0x00000800 41#define IORESOURCE_DMA 0x00000800
42#define IORESOURCE_BUS 0x00001000
42 43
43#define IORESOURCE_PREFETCH 0x00001000 /* No side effects */ 44#define IORESOURCE_PREFETCH 0x00002000 /* No side effects */
44#define IORESOURCE_READONLY 0x00002000 45#define IORESOURCE_READONLY 0x00004000
45#define IORESOURCE_CACHEABLE 0x00004000 46#define IORESOURCE_CACHEABLE 0x00008000
46#define IORESOURCE_RANGELENGTH 0x00008000 47#define IORESOURCE_RANGELENGTH 0x00010000
47#define IORESOURCE_SHADOWABLE 0x00010000 48#define IORESOURCE_SHADOWABLE 0x00020000
48 49
49#define IORESOURCE_SIZEALIGN 0x00020000 /* size indicates alignment */ 50#define IORESOURCE_SIZEALIGN 0x00040000 /* size indicates alignment */
50#define IORESOURCE_STARTALIGN 0x00040000 /* start field is alignment */ 51#define IORESOURCE_STARTALIGN 0x00080000 /* start field is alignment */
51 52
52#define IORESOURCE_MEM_64 0x00100000 53#define IORESOURCE_MEM_64 0x00100000
54#define IORESOURCE_WINDOW 0x00200000 /* forwarded by bridge */
55#define IORESOURCE_MUXED 0x00400000 /* Resource is software muxed */
53 56
54#define IORESOURCE_EXCLUSIVE 0x08000000 /* Userland may not map this resource */ 57#define IORESOURCE_EXCLUSIVE 0x08000000 /* Userland may not map this resource */
55#define IORESOURCE_DISABLED 0x10000000 58#define IORESOURCE_DISABLED 0x10000000
@@ -110,18 +113,23 @@ struct resource_list {
110extern struct resource ioport_resource; 113extern struct resource ioport_resource;
111extern struct resource iomem_resource; 114extern struct resource iomem_resource;
112 115
116extern struct resource *request_resource_conflict(struct resource *root, struct resource *new);
113extern int request_resource(struct resource *root, struct resource *new); 117extern int request_resource(struct resource *root, struct resource *new);
114extern int release_resource(struct resource *new); 118extern int release_resource(struct resource *new);
119void release_child_resources(struct resource *new);
115extern void reserve_region_with_split(struct resource *root, 120extern void reserve_region_with_split(struct resource *root,
116 resource_size_t start, resource_size_t end, 121 resource_size_t start, resource_size_t end,
117 const char *name); 122 const char *name);
123extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new);
118extern int insert_resource(struct resource *parent, struct resource *new); 124extern int insert_resource(struct resource *parent, struct resource *new);
119extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new); 125extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
120extern int allocate_resource(struct resource *root, struct resource *new, 126extern int allocate_resource(struct resource *root, struct resource *new,
121 resource_size_t size, resource_size_t min, 127 resource_size_t size, resource_size_t min,
122 resource_size_t max, resource_size_t align, 128 resource_size_t max, resource_size_t align,
123 void (*alignf)(void *, struct resource *, 129 resource_size_t (*alignf)(void *,
124 resource_size_t, resource_size_t), 130 const struct resource *,
131 resource_size_t,
132 resource_size_t),
125 void *alignf_data); 133 void *alignf_data);
126int adjust_resource(struct resource *res, resource_size_t start, 134int adjust_resource(struct resource *res, resource_size_t start,
127 resource_size_t size); 135 resource_size_t size);
@@ -136,7 +144,8 @@ static inline unsigned long resource_type(const struct resource *res)
136} 144}
137 145
138/* Convenience shorthand with allocation */ 146/* Convenience shorthand with allocation */
139#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), 0) 147#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), 0)
148#define request_muxed_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), IORESOURCE_MUXED)
140#define __request_mem_region(start,n,name, excl) __request_region(&iomem_resource, (start), (n), (name), excl) 149#define __request_mem_region(start,n,name, excl) __request_region(&iomem_resource, (start), (n), (name), excl)
141#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name), 0) 150#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name), 0)
142#define request_mem_region_exclusive(start,n,name) \ 151#define request_mem_region_exclusive(start,n,name) \