~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/ioport.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * ioport.h     Definitions of routines for detecting, reserving and
  3  *              allocating system resources.
  4  *
  5  * Authors:     Linus Torvalds
  6  */
  7 
  8 #ifndef _LINUX_IOPORT_H
  9 #define _LINUX_IOPORT_H
 10 
 11 /*
 12  * Resources are tree-like, allowing
 13  * nesting etc..
 14  */
 15 struct resource {
 16         const char *name;
 17         unsigned long start, end;
 18         unsigned long flags;
 19         struct resource *parent, *sibling, *child;
 20 };
 21 
 22 struct resource_list {
 23         struct resource_list *next;
 24         struct resource *res;
 25         struct pci_dev *dev;
 26 };
 27 
 28 /*
 29  * IO resources have these defined flags.
 30  */
 31 #define IORESOURCE_BITS         0x000000ff      /* Bus-specific bits */
 32 
 33 #define IORESOURCE_IO           0x00000100      /* Resource type */
 34 #define IORESOURCE_MEM          0x00000200
 35 #define IORESOURCE_IRQ          0x00000400
 36 #define IORESOURCE_DMA          0x00000800
 37 
 38 #define IORESOURCE_PREFETCH     0x00001000      /* No side effects */
 39 #define IORESOURCE_READONLY     0x00002000
 40 #define IORESOURCE_CACHEABLE    0x00004000
 41 #define IORESOURCE_RANGELENGTH  0x00008000
 42 #define IORESOURCE_SHADOWABLE   0x00010000
 43 #define IORESOURCE_BUS_HAS_VGA  0x00080000
 44 
 45 #define IORESOURCE_UNSET        0x20000000
 46 #define IORESOURCE_AUTO         0x40000000
 47 #define IORESOURCE_BUSY         0x80000000      /* Driver has marked this resource busy */
 48 
 49 /* ISA PnP IRQ specific bits (IORESOURCE_BITS) */
 50 #define IORESOURCE_IRQ_HIGHEDGE         (1<<0)
 51 #define IORESOURCE_IRQ_LOWEDGE          (1<<1)
 52 #define IORESOURCE_IRQ_HIGHLEVEL        (1<<2)
 53 #define IORESOURCE_IRQ_LOWLEVEL         (1<<3)
 54 
 55 /* ISA PnP DMA specific bits (IORESOURCE_BITS) */
 56 #define IORESOURCE_DMA_TYPE_MASK        (3<<0)
 57 #define IORESOURCE_DMA_8BIT             (0<<0)
 58 #define IORESOURCE_DMA_8AND16BIT        (1<<0)
 59 #define IORESOURCE_DMA_16BIT            (2<<0)
 60 
 61 #define IORESOURCE_DMA_MASTER           (1<<2)
 62 #define IORESOURCE_DMA_BYTE             (1<<3)
 63 #define IORESOURCE_DMA_WORD             (1<<4)
 64 
 65 #define IORESOURCE_DMA_SPEED_MASK       (3<<6)
 66 #define IORESOURCE_DMA_COMPATIBLE       (0<<6)
 67 #define IORESOURCE_DMA_TYPEA            (1<<6)
 68 #define IORESOURCE_DMA_TYPEB            (2<<6)
 69 #define IORESOURCE_DMA_TYPEF            (3<<6)
 70 
 71 /* ISA PnP memory I/O specific bits (IORESOURCE_BITS) */
 72 #define IORESOURCE_MEM_WRITEABLE        (1<<0)  /* dup: IORESOURCE_READONLY */
 73 #define IORESOURCE_MEM_CACHEABLE        (1<<1)  /* dup: IORESOURCE_CACHEABLE */
 74 #define IORESOURCE_MEM_RANGELENGTH      (1<<2)  /* dup: IORESOURCE_RANGELENGTH */
 75 #define IORESOURCE_MEM_TYPE_MASK        (3<<3)
 76 #define IORESOURCE_MEM_8BIT             (0<<3)
 77 #define IORESOURCE_MEM_16BIT            (1<<3)
 78 #define IORESOURCE_MEM_8AND16BIT        (2<<3)
 79 #define IORESOURCE_MEM_SHADOWABLE       (1<<5)  /* dup: IORESOURCE_SHADOWABLE */
 80 #define IORESOURCE_MEM_EXPANSIONROM     (1<<6)
 81 
 82 /* PC/ISA/whatever - the normal PC address spaces: IO and memory */
 83 extern struct resource ioport_resource;
 84 extern struct resource iomem_resource;
 85 
 86 extern int get_resource_list(struct resource *, char *buf, int size);
 87 
 88 extern int check_resource(struct resource *root, unsigned long, unsigned long);
 89 extern int request_resource(struct resource *root, struct resource *new);
 90 extern int release_resource(struct resource *new);
 91 extern int allocate_resource(struct resource *root, struct resource *new,
 92                              unsigned long size,
 93                              unsigned long min, unsigned long max,
 94                              unsigned long align,
 95                              void (*alignf)(void *, struct resource *, unsigned long),
 96                              void *alignf_data);
 97 
 98 /* Convenience shorthand with allocation */
 99 #define request_region(start,n,name)    __request_region(&ioport_resource, (start), (n), (name))
100 #define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
101 
102 extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
103 
104 /* Compatibility cruft */
105 #define check_region(start,n)   __check_region(&ioport_resource, (start), (n))
106 #define release_region(start,n) __release_region(&ioport_resource, (start), (n))
107 #define check_mem_region(start,n)       __check_region(&iomem_resource, (start), (n))
108 #define release_mem_region(start,n)     __release_region(&iomem_resource, (start), (n))
109 
110 extern int __check_region(struct resource *, unsigned long, unsigned long);
111 extern void __release_region(struct resource *, unsigned long, unsigned long);
112 
113 #define get_ioport_list(buf)    get_resource_list(&ioport_resource, buf, PAGE_SIZE)
114 #define get_mem_list(buf)       get_resource_list(&iomem_resource, buf, PAGE_SIZE)
115 
116 #define HAVE_AUTOIRQ
117 extern void autoirq_setup(int waittime);
118 extern int autoirq_report(int waittime);
119 
120 #endif  /* _LINUX_IOPORT_H */
121 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.