base.h revision 169aaffe885c56745188e7913f212a67beaa3b80
1extern spinlock_t pnp_lock; 2void *pnp_alloc(long size); 3 4int pnp_register_protocol(struct pnp_protocol *protocol); 5void pnp_unregister_protocol(struct pnp_protocol *protocol); 6 7#define PNP_EISA_ID_MASK 0x7fffffff 8void pnp_eisa_id_to_string(u32 id, char *str); 9struct pnp_dev *pnp_alloc_dev(struct pnp_protocol *, int id, char *pnpid); 10struct pnp_card *pnp_alloc_card(struct pnp_protocol *, int id, char *pnpid); 11 12int pnp_add_device(struct pnp_dev *dev); 13struct pnp_id *pnp_add_id(struct pnp_dev *dev, char *id); 14int pnp_interface_attach_device(struct pnp_dev *dev); 15 16int pnp_add_card(struct pnp_card *card); 17struct pnp_id *pnp_add_card_id(struct pnp_card *card, char *id); 18void pnp_remove_card(struct pnp_card *card); 19int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev); 20void pnp_remove_card_device(struct pnp_dev *dev); 21 22struct pnp_port { 23 resource_size_t min; /* min base number */ 24 resource_size_t max; /* max base number */ 25 resource_size_t align; /* align boundary */ 26 resource_size_t size; /* size of range */ 27 unsigned char flags; /* port flags */ 28 unsigned char pad; /* pad */ 29 struct pnp_port *next; /* next port */ 30}; 31 32#define PNP_IRQ_NR 256 33typedef struct { DECLARE_BITMAP(bits, PNP_IRQ_NR); } pnp_irq_mask_t; 34 35struct pnp_irq { 36 pnp_irq_mask_t map; /* bitmap for IRQ lines */ 37 unsigned char flags; /* IRQ flags */ 38 unsigned char pad; /* pad */ 39 struct pnp_irq *next; /* next IRQ */ 40}; 41 42struct pnp_dma { 43 unsigned char map; /* bitmask for DMA channels */ 44 unsigned char flags; /* DMA flags */ 45 struct pnp_dma *next; /* next port */ 46}; 47 48struct pnp_mem { 49 resource_size_t min; /* min base number */ 50 resource_size_t max; /* max base number */ 51 resource_size_t align; /* align boundary */ 52 resource_size_t size; /* size of range */ 53 unsigned char flags; /* memory flags */ 54 unsigned char pad; /* pad */ 55 struct pnp_mem *next; /* next memory resource */ 56}; 57 58#define PNP_RES_PRIORITY_PREFERRED 0 59#define PNP_RES_PRIORITY_ACCEPTABLE 1 60#define PNP_RES_PRIORITY_FUNCTIONAL 2 61#define PNP_RES_PRIORITY_INVALID 65535 62 63struct pnp_option { 64 unsigned short priority; /* priority */ 65 struct pnp_port *port; /* first port */ 66 struct pnp_irq *irq; /* first IRQ */ 67 struct pnp_dma *dma; /* first DMA */ 68 struct pnp_mem *mem; /* first memory resource */ 69 struct pnp_option *next; /* used to chain dependent resources */ 70}; 71 72struct pnp_option *pnp_build_option(int priority); 73struct pnp_option *pnp_register_independent_option(struct pnp_dev *dev); 74struct pnp_option *pnp_register_dependent_option(struct pnp_dev *dev, 75 int priority); 76int pnp_register_irq_resource(struct pnp_dev *dev, struct pnp_option *option, 77 struct pnp_irq *data); 78int pnp_register_dma_resource(struct pnp_dev *dev, struct pnp_option *option, 79 struct pnp_dma *data); 80int pnp_register_port_resource(struct pnp_dev *dev, struct pnp_option *option, 81 struct pnp_port *data); 82int pnp_register_mem_resource(struct pnp_dev *dev, struct pnp_option *option, 83 struct pnp_mem *data); 84void pnp_init_resources(struct pnp_dev *dev); 85 86void pnp_fixup_device(struct pnp_dev *dev); 87void pnp_free_option(struct pnp_option *option); 88int __pnp_add_device(struct pnp_dev *dev); 89void __pnp_remove_device(struct pnp_dev *dev); 90 91int pnp_check_port(struct pnp_dev *dev, struct resource *res); 92int pnp_check_mem(struct pnp_dev *dev, struct resource *res); 93int pnp_check_irq(struct pnp_dev *dev, struct resource *res); 94int pnp_check_dma(struct pnp_dev *dev, struct resource *res); 95 96char *pnp_resource_type_name(struct resource *res); 97void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc); 98 99void pnp_free_resources(struct pnp_dev *dev); 100int pnp_resource_type(struct resource *res); 101 102struct pnp_resource { 103 struct list_head list; 104 struct resource res; 105}; 106 107void pnp_free_resource(struct pnp_resource *pnp_res); 108 109struct pnp_resource *pnp_add_irq_resource(struct pnp_dev *dev, int irq, 110 int flags); 111struct pnp_resource *pnp_add_dma_resource(struct pnp_dev *dev, int dma, 112 int flags); 113struct pnp_resource *pnp_add_io_resource(struct pnp_dev *dev, 114 resource_size_t start, 115 resource_size_t end, int flags); 116struct pnp_resource *pnp_add_mem_resource(struct pnp_dev *dev, 117 resource_size_t start, 118 resource_size_t end, int flags); 119