diff options
| author | Anton Blanchard <anton@samba.org> | 2003-01-14 12:21:33 +1100 |
|---|---|---|
| committer | Anton Blanchard <anton@samba.org> | 2003-01-14 12:21:33 +1100 |
| commit | f3ae5c72087bd059e0a188e57a171709c4fd72fa (patch) | |
| tree | 6834feafe78a4b6fd06feaa4f9c577123a448672 /include | |
| parent | eb4b3b4816a3e580960214d1daa1e38fa5d36694 (diff) | |
| parent | 291b901bf8430ee789ec2c31a49dc935b0fe7ae9 (diff) | |
Merge samba.org:/scratch/anton/linux-2.5
into samba.org:/scratch/anton/for-alan
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-arm/dma-mapping.h | 6 | ||||
| -rw-r--r-- | include/asm-arm/ecard.h | 1 | ||||
| -rw-r--r-- | include/asm-arm/pci.h | 4 | ||||
| -rw-r--r-- | include/asm-arm/proc-armv/uaccess.h | 52 | ||||
| -rw-r--r-- | include/asm-arm/procinfo.h | 7 | ||||
| -rw-r--r-- | include/asm-arm/uaccess.h | 139 | ||||
| -rw-r--r-- | include/linux/ide.h | 2 | ||||
| -rw-r--r-- | include/linux/isapnp.h | 17 | ||||
| -rw-r--r-- | include/linux/module.h | 8 | ||||
| -rw-r--r-- | include/linux/pci_ids.h | 2 | ||||
| -rw-r--r-- | include/linux/pnp.h | 116 | ||||
| -rw-r--r-- | include/linux/pnpbios.h | 18 |
12 files changed, 184 insertions, 188 deletions
diff --git a/include/asm-arm/dma-mapping.h b/include/asm-arm/dma-mapping.h index dd85f46611e7..e3d1dbb7bebf 100644 --- a/include/asm-arm/dma-mapping.h +++ b/include/asm-arm/dma-mapping.h @@ -14,7 +14,7 @@ * devices. This is the "generic" version. The PCI specific version * is in pci.h */ -extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle); +extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle, unsigned long flags); extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle); extern void consistent_sync(void *kaddr, size_t size, int rw); @@ -84,12 +84,12 @@ static inline int dma_is_consistent(dma_addr_t handle) static inline void * dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle) { - int gfp = GFP_KERNEL; + int gfp = GFP_ATOMIC; if (dev == NULL || dmadev_is_sa1111(dev) || *dev->dma_mask != 0xffffffff) gfp |= GFP_DMA; - return consistent_alloc(gfp, size, handle); + return consistent_alloc(gfp, size, handle, 0); } /** diff --git a/include/asm-arm/ecard.h b/include/asm-arm/ecard.h index 1c9ecdadecd9..602dc63b9dfa 100644 --- a/include/asm-arm/ecard.h +++ b/include/asm-arm/ecard.h @@ -160,6 +160,7 @@ struct expansion_card { const char *card_desc; /* Card description */ CONST unsigned int podaddr; /* Base Linux address for card */ CONST loader_t loader; /* loader program */ + u64 dma_mask; }; struct in_chunk_dir { diff --git a/include/asm-arm/pci.h b/include/asm-arm/pci.h index 7760592d853f..7c690a057a20 100644 --- a/include/asm-arm/pci.h +++ b/include/asm-arm/pci.h @@ -40,13 +40,13 @@ static inline void pcibios_penalize_isa_irq(int irq) static inline void * pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *handle) { - int gfp = GFP_KERNEL; + int gfp = GFP_ATOMIC; if (hwdev == NULL || pcidev_is_sa1111(hwdev) || hwdev->dma_mask != 0xffffffff) gfp |= GFP_DMA; - return consistent_alloc(gfp, size, handle); + return consistent_alloc(gfp, size, handle, 0); } static inline void diff --git a/include/asm-arm/proc-armv/uaccess.h b/include/asm-arm/proc-armv/uaccess.h index 1162e2f9e047..25154d53177c 100644 --- a/include/asm-arm/proc-armv/uaccess.h +++ b/include/asm-arm/proc-armv/uaccess.h @@ -12,7 +12,7 @@ * Note that this is actually 0x1,0000,0000 */ #define KERNEL_DS 0x00000000 -#define USER_DS PAGE_OFFSET +#define USER_DS TASK_SIZE static inline void set_fs (mm_segment_t fs) { @@ -50,8 +50,8 @@ static inline void set_fs (mm_segment_t fs) " .align 3\n" \ " .long 1b, 3b\n" \ " .previous" \ - : "=r" (err) \ - : "r" (x), "r" (__pu_addr), "i" (-EFAULT), "0" (err) \ + : "+r" (err) \ + : "r" (x), "r" (__pu_addr), "i" (-EFAULT) \ : "cc") #ifndef __ARMEB__ @@ -83,19 +83,18 @@ static inline void set_fs (mm_segment_t fs) " .align 3\n" \ " .long 1b, 3b\n" \ " .previous" \ - : "=r" (err) \ - : "r" (x), "r" (__pu_addr), "i" (-EFAULT), "0" (err)) + : "+r" (err) \ + : "r" (x), "r" (__pu_addr), "i" (-EFAULT) \ + : "cc") #define __put_user_asm_dword(x,__pu_addr,err) \ -({ \ - unsigned long long __temp = (unsigned long long)x; \ __asm__ __volatile__( \ - "1: strt %1, [%2], #0\n" \ - "2: strt %3, [%4], #0\n" \ + "1: strt %Q2, [%1], #4\n" \ + "2: strt %R2, [%1], #0\n" \ "3:\n" \ " .section .fixup,\"ax\"\n" \ " .align 2\n" \ - "4: mov %0, %5\n" \ + "4: mov %0, %3\n" \ " b 3b\n" \ " .previous\n" \ " .section __ex_table,\"a\"\n" \ @@ -103,12 +102,9 @@ static inline void set_fs (mm_segment_t fs) " .long 1b, 4b\n" \ " .long 2b, 4b\n" \ " .previous" \ - : "=r" (err) \ - : "r" (__temp), "r" (__pu_addr), \ - "r" (__temp >> 32), "r" (__pu_addr + 4), \ - "i" (-EFAULT), "0" (err) \ - : "cc"); \ -}) + : "+r" (err), "+r" (__pu_addr) \ + : "r" (x), "i" (-EFAULT) \ + : "cc") #define __get_user_asm_byte(x,addr,err) \ __asm__ __volatile__( \ @@ -124,23 +120,24 @@ static inline void set_fs (mm_segment_t fs) " .align 3\n" \ " .long 1b, 3b\n" \ " .previous" \ - : "=r" (err), "=&r" (x) \ - : "r" (addr), "i" (-EFAULT), "0" (err)) + : "+r" (err), "=&r" (x) \ + : "r" (addr), "i" (-EFAULT) \ + : "cc") #ifndef __ARMEB__ -#define __get_user_asm_half(x,addr,err) \ +#define __get_user_asm_half(x,__gu_addr,err) \ ({ \ - unsigned long __b1, __b2, __ptr = (unsigned long)addr; \ - __get_user_asm_byte(__b1, __ptr, err); \ - __get_user_asm_byte(__b2, __ptr + 1, err); \ + unsigned long __b1, __b2; \ + __get_user_asm_byte(__b1, __gu_addr, err); \ + __get_user_asm_byte(__b2, __gu_addr + 1, err); \ (x) = __b1 | (__b2 << 8); \ }) #else -#define __get_user_asm_half(x,addr,err) \ +#define __get_user_asm_half(x,__gu_addr,err) \ ({ \ unsigned long __b1, __b2; \ - __get_user_asm_byte(__b1, addr, err); \ - __get_user_asm_byte(__b2, (int)(addr) + 1, err); \ + __get_user_asm_byte(__b1, __gu_addr, err); \ + __get_user_asm_byte(__b2, __gu_addr + 1, err); \ (x) = (__b1 << 8) | __b2; \ }) #endif @@ -159,8 +156,9 @@ static inline void set_fs (mm_segment_t fs) " .align 3\n" \ " .long 1b, 3b\n" \ " .previous" \ - : "=r" (err), "=&r" (x) \ - : "r" (addr), "i" (-EFAULT), "0" (err)) + : "+r" (err), "=&r" (x) \ + : "r" (addr), "i" (-EFAULT) \ + : "cc") extern unsigned long __arch_copy_from_user(void *to, const void *from, unsigned long n); #define __do_copy_from_user(to,from,n) \ diff --git a/include/asm-arm/procinfo.h b/include/asm-arm/procinfo.h index fced718b32be..a762a23a7560 100644 --- a/include/asm-arm/procinfo.h +++ b/include/asm-arm/procinfo.h @@ -16,11 +16,6 @@ struct cpu_tlb_fns; struct cpu_user_fns; struct processor; -struct proc_info_item { - const char *manufacturer; - const char *cpu_name; -}; - /* * Note! struct processor is always defined if we're * using MULTI_CPU, otherwise this entry is unused, @@ -38,7 +33,7 @@ struct proc_info_list { const char *arch_name; const char *elf_name; unsigned int elf_hwcap; - struct proc_info_item *info; + const char *cpu_name; struct processor *proc; struct cpu_tlb_fns *tlb; struct cpu_user_fns *user; diff --git a/include/asm-arm/uaccess.h b/include/asm-arm/uaccess.h index d21892660de0..0534487d8ff3 100644 --- a/include/asm-arm/uaccess.h +++ b/include/asm-arm/uaccess.h @@ -74,7 +74,7 @@ extern int __get_user_bad(void); __asm__ __volatile__ ("bl __get_user_" #__s \ : "=&r" (__e), "=r" (__r1) \ : "0" (__p) \ - : __i) + : __i, "cc") #define get_user(x,p) \ ({ \ @@ -100,8 +100,31 @@ extern int __get_user_bad(void); __e; \ }) -#define __get_user(x,p) __get_user_nocheck((x),(p),sizeof(*(p))) -#define __get_user_error(x,p,e) __get_user_nocheck_error((x),(p),sizeof(*(p)),(e)) +#define __get_user(x,ptr) \ +({ \ + long __gu_err = 0; \ + __get_user_err((x),(ptr),__gu_err); \ + __gu_err; \ +}) + +#define __get_user_error(x,ptr,err) \ +({ \ + __get_user_err((x),(ptr),err); \ + (void) 0; \ +}) + +#define __get_user_err(x,ptr,err) \ +do { \ + unsigned long __gu_addr = (unsigned long)(ptr); \ + unsigned long __gu_val; \ + switch (sizeof(*(ptr))) { \ + case 1: __get_user_asm_byte(__gu_val,__gu_addr,err); break; \ + case 2: __get_user_asm_half(__gu_val,__gu_addr,err); break; \ + case 4: __get_user_asm_word(__gu_val,__gu_addr,err); break; \ + default: (__gu_val) = __get_user_bad(); \ + } \ + (x) = (__typeof__(*(ptr)))__gu_val; \ +} while (0) extern int __put_user_1(void *, unsigned int); extern int __put_user_2(void *, unsigned int); @@ -113,7 +136,7 @@ extern int __put_user_bad(void); __asm__ __volatile__ ("bl __put_user_" #__s \ : "=&r" (__e) \ : "0" (__p), "r" (__r1) \ - : __i) + : __i, "cc") #define put_user(x,p) \ ({ \ @@ -138,8 +161,31 @@ extern int __put_user_bad(void); __e; \ }) -#define __put_user(x,p) __put_user_nocheck((__typeof(*(p)))(x),(p),sizeof(*(p))) -#define __put_user_error(x,p,e) __put_user_nocheck_error((x),(p),sizeof(*(p)),(e)) +#define __put_user(x,ptr) \ +({ \ + long __pu_err = 0; \ + __put_user_err((x),(ptr),__pu_err); \ + __pu_err; \ +}) + +#define __put_user_error(x,ptr,err) \ +({ \ + __put_user_err((x),(ptr),err); \ + (void) 0; \ +}) + +#define __put_user_err(x,ptr,err) \ +do { \ + unsigned long __pu_addr = (unsigned long)(ptr); \ + __typeof__(*(ptr)) __pu_val = (x); \ + switch (sizeof(*(ptr))) { \ + case 1: __put_user_asm_byte(__pu_val,__pu_addr,err); break; \ + case 2: __put_user_asm_half(__pu_val,__pu_addr,err); break; \ + case 4: __put_user_asm_word(__pu_val,__pu_addr,err); break; \ + case 8: __put_user_asm_dword(__pu_val,__pu_addr,err); break; \ + default: __put_user_bad(); \ + } \ +} while (0) static __inline__ unsigned long copy_from_user(void *to, const void *from, unsigned long n) { @@ -209,85 +255,4 @@ static inline long strnlen_user(const char *s, long n) return res; } -/* - * These are the work horses of the get/put_user functions - */ -#if 0 -#define __get_user_check(x,ptr,size) \ -({ \ - long __gu_err = -EFAULT, __gu_val = 0; \ - const __typeof__(*(ptr)) *__gu_addr = (ptr); \ - if (access_ok(VERIFY_READ,__gu_addr,size)) { \ - __gu_err = 0; \ - __get_user_size(__gu_val,__gu_addr,(size),__gu_err); \ - } \ - (x) = (__typeof__(*(ptr)))__gu_val; \ - __gu_err; \ -}) -#endif - -#define __get_user_nocheck(x,ptr,size) \ -({ \ - long __gu_err = 0, __gu_val; \ - __get_user_size(__gu_val,(ptr),(size),__gu_err); \ - (x) = (__typeof__(*(ptr)))__gu_val; \ - __gu_err; \ -}) - -#define __get_user_nocheck_error(x,ptr,size,err) \ -({ \ - long __gu_val; \ - __get_user_size(__gu_val,(ptr),(size),(err)); \ - (x) = (__typeof__(*(ptr)))__gu_val; \ - (void) 0; \ -}) - -#define __put_user_check(x,ptr,size) \ -({ \ - long __pu_err = -EFAULT; \ - __typeof__(*(ptr)) *__pu_addr = (ptr); \ - if (access_ok(VERIFY_WRITE,__pu_addr,size)) { \ - __pu_err = 0; \ - __put_user_size((x),__pu_addr,(size),__pu_err); \ - } \ - __pu_err; \ -}) - -#define __put_user_nocheck(x,ptr,size) \ -({ \ - long __pu_err = 0; \ - unsigned long __pu_addr = (unsigned long)(ptr); \ - __put_user_size((x),__pu_addr,(size),__pu_err); \ - __pu_err; \ -}) - -#define __put_user_nocheck_error(x,ptr,size,err) \ -({ \ - unsigned long __pu_addr = (unsigned long)(ptr); \ - __put_user_size((x),__pu_addr,(size),err); \ - (void) 0; \ -}) - -#define __get_user_size(x,ptr,size,retval) \ -do { \ - switch (size) { \ - case 1: __get_user_asm_byte(x,ptr,retval); break; \ - case 2: __get_user_asm_half(x,ptr,retval); break; \ - case 4: __get_user_asm_word(x,ptr,retval); break; \ - case 8: __get_user_asm_dword(x,ptr,retval); break; \ - default: (x) = __get_user_bad(); \ - } \ -} while (0) - -#define __put_user_size(x,ptr,size,retval) \ -do { \ - switch (size) { \ - case 1: __put_user_asm_byte(x,ptr,retval); break; \ - case 2: __put_user_asm_half(x,ptr,retval); break; \ - case 4: __put_user_asm_word(x,ptr,retval); break; \ - case 8: __put_user_asm_dword(x,ptr,retval); break; \ - default: __put_user_bad(); \ - } \ -} while (0) - #endif /* _ASMARM_UACCESS_H */ diff --git a/include/linux/ide.h b/include/linux/ide.h index 2e2718ebfd98..9aec59722441 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -916,6 +916,8 @@ typedef struct hwif_s { struct pci_dev *pci_dev; /* for pci chipsets */ struct ide_pci_device_s *cds; /* chipset device struct */ + + struct pnp_dev *pnp_dev; /* for PnP devices */ #if 0 ide_hwif_ops_t *hwifops; diff --git a/include/linux/isapnp.h b/include/linux/isapnp.h index 3e03c39fbc40..9582944ab25c 100644 --- a/include/linux/isapnp.h +++ b/include/linux/isapnp.h @@ -122,6 +122,15 @@ static inline isapnp_proc_done(void) { return 0; } /* init/main.c */ int isapnp_init(void); +/* compat */ +struct pnp_card *pnp_find_card(unsigned short vendor, + unsigned short device, + struct pnp_card *from); +struct pnp_dev *pnp_find_dev(struct pnp_card *card, + unsigned short vendor, + unsigned short function, + struct pnp_dev *from); + #else /* !CONFIG_ISAPNP */ /* lowlevel configuration */ @@ -139,6 +148,14 @@ static inline void isapnp_device(unsigned char device) { ; } static inline void isapnp_activate(unsigned char device) { ; } static inline void isapnp_deactivate(unsigned char device) { ; } +static inline struct pnp_card *pnp_find_card(unsigned short vendor, + unsigned short device, + struct pnp_card *from) { return NULL; } +static inline struct pnp_dev *pnp_find_dev(struct pnp_card *card, + unsigned short vendor, + unsigned short function, + struct pnp_dev *from) { return NULL; } + #endif /* CONFIG_ISAPNP */ #endif /* __KERNEL__ */ diff --git a/include/linux/module.h b/include/linux/module.h index 8b0084419604..f38e535eacd9 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -61,6 +61,8 @@ extern const struct gtype##_id __mod_##gtype##_table \ __attribute__ ((unused, alias(__stringify(name)))) #define THIS_MODULE (&__this_module) +#define MOD_INC_USE_COUNT _MOD_INC_USE_COUNT(THIS_MODULE) +#define MOD_DEC_USE_COUNT __MOD_DEC_USE_COUNT(THIS_MODULE) /* * The following license idents are currently accepted as indicating free @@ -96,6 +98,8 @@ extern const struct gtype##_id __mod_##gtype##_table \ #define MODULE_GENERIC_TABLE(gtype,name) #define THIS_MODULE ((struct module *)0) +#define MOD_INC_USE_COUNT do { } while (0) +#define MOD_DEC_USE_COUNT do { } while (0) #define MODULE_LICENSE(license) #endif @@ -426,10 +430,6 @@ static inline void __deprecated _MOD_INC_USE_COUNT(struct module *module) try_module_get(module); #endif } -#define MOD_INC_USE_COUNT \ - _MOD_INC_USE_COUNT(THIS_MODULE) -#define MOD_DEC_USE_COUNT \ - __MOD_DEC_USE_COUNT(THIS_MODULE) #define EXPORT_NO_SYMBOLS extern int module_dummy_usage; #define GET_USE_COUNT(module) (module_dummy_usage) diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 8221b1f372ab..013ccd61fb30 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -137,6 +137,7 @@ #define PCI_DEVICE_ID_COMPAQ_SMART2P 0xae10 #define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32 #define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34 +#define PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE 0xae33 #define PCI_DEVICE_ID_COMPAQ_NETFLEX3I 0xae35 #define PCI_DEVICE_ID_COMPAQ_NETEL100D 0xae40 #define PCI_DEVICE_ID_COMPAQ_NETEL100PI 0xae43 @@ -1880,6 +1881,7 @@ #define PCI_DEVICE_ID_INTEL_82454GX 0x84c4 #define PCI_DEVICE_ID_INTEL_82450GX 0x84c5 #define PCI_DEVICE_ID_INTEL_82451NX 0x84ca +#define PCI_DEVICE_ID_INTEL_82454NX 0x84cb #define PCI_DEVICE_ID_INTEL_84460GX 0x84ea #define PCI_VENDOR_ID_COMPUTONE 0x8e0e diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 7d4e9fd6ae0e..b97e8f64122f 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h @@ -20,7 +20,8 @@ #define DEVICE_COUNT_IRQ 2 #define DEVICE_COUNT_DMA 2 -#define DEVICE_COUNT_RESOURCE 12 +#define DEVICE_COUNT_IO 8 +#define DEVICE_COUNT_MEM 4 #define MAX_DEVICES 8 struct pnp_resource; @@ -30,6 +31,7 @@ struct pnp_cfg; struct pnp_card { char name[80]; + int status; /* status of the card */ unsigned char number; /* card number */ struct list_head global_list; /* node in global list of cards */ struct list_head protocol_list; /* node in protocol's list of cards */ @@ -84,6 +86,9 @@ static inline void pnpc_set_protodata (struct pnp_card *pcard, void *data) struct pnp_dev { char name[80]; /* device name */ int active; /* status of the device */ + int capabilities; + int status; + struct list_head global_list; /* node in global list of devices */ struct list_head protocol_list; /* node in list of device's protocol */ struct list_head card_list; /* node in card's list of devices */ @@ -98,7 +103,8 @@ struct pnp_dev { struct pnp_resources *res; /* possible resource information */ int lock_resources; /* resources are locked */ - struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */ + struct resource io_resource[DEVICE_COUNT_IO]; /* port regions */ + struct resource mem_resource[DEVICE_COUNT_MEM]; /* memory regions + expansion ROMs */ struct resource dma_resource[DEVICE_COUNT_DMA]; struct resource irq_resource[DEVICE_COUNT_IRQ]; @@ -116,13 +122,10 @@ struct pnp_dev { for(dev = global_to_pnp_dev(pnp_global.next); \ dev != global_to_pnp_dev(&pnp_global); \ dev = global_to_pnp_dev(dev->global_list.next)) - -static inline int pnp_dev_has_driver(struct pnp_dev *pdev) -{ - if (pdev->driver || (pdev->card && pdev->card->driver)) - return 1; - return 0; -} +#define card_for_each_dev(card,dev) \ + for((dev) = card_to_pnp_dev((card)->devices.next); \ + (dev) != card_to_pnp_dev(&(card)->devices); \ + (dev) = card_to_pnp_dev((dev)->card_list.next)) static inline void *pnp_get_drvdata (struct pnp_dev *pdev) { @@ -149,6 +152,28 @@ struct pnp_fixup { void (*quirk_function)(struct pnp_dev *dev); /* fixup function */ }; +/* capabilities */ +#define PNP_READ 0x0001 +#define PNP_WRITE 0x0002 +#define PNP_DISABLE 0x0004 +#define PNP_CONFIGURABLE 0x0008 +#define PNP_REMOVABLE 0x0010 + +#define pnp_can_read(dev) (((dev)->protocol) && ((dev)->protocol->get) && \ + ((dev)->capabilities & PNP_READ)) +#define pnp_can_write(dev) (((dev)->protocol) && ((dev)->protocol->set) && \ + ((dev)->capabilities & PNP_WRITE)) +#define pnp_can_disable(dev) (((dev)->protocol) && ((dev)->protocol->disable) && \ + ((dev)->capabilities & PNP_DISABLE)) +#define pnp_can_configure(dev) ((!(dev)->active) && ((dev)->capabilities & PNP_CONFIGURABLE)) + +/* status */ +#define PNP_INIT 0x0000 +#define PNP_READY 0x0001 +#define PNP_ATTACHED 0x0002 +#define PNP_BUSY 0x0004 +#define PNP_FAULTY 0x0008 + /* * Driver Management @@ -205,10 +230,14 @@ struct pnpc_driver { * Resource Management */ +#define pnp_flags_valid(resrc) (((resrc)->flags & IORESOURCE_UNSET) == 0 && \ + ((resrc)->flags & (IORESOURCE_IO|IORESOURCE_MEM|IORESOURCE_IRQ|IORESOURCE_DMA)) != 0) + /* Use these instead of directly reading pnp_dev to get resource information */ -#define pnp_port_start(dev,bar) ((dev)->resource[(bar)].start) -#define pnp_port_end(dev,bar) ((dev)->resource[(bar)].end) -#define pnp_port_flags(dev,bar) ((dev)->resource[(bar)].flags) +#define pnp_port_start(dev,bar) ((dev)->io_resource[(bar)].start) +#define pnp_port_end(dev,bar) ((dev)->io_resource[(bar)].end) +#define pnp_port_flags(dev,bar) ((dev)->io_resource[(bar)].flags) +#define pnp_port_valid(dev,bar) pnp_flags_valid(&(dev)->io_resource[(bar)]) #define pnp_port_len(dev,bar) \ ((pnp_port_start((dev),(bar)) == 0 && \ pnp_port_end((dev),(bar)) == \ @@ -217,9 +246,10 @@ struct pnpc_driver { (pnp_port_end((dev),(bar)) - \ pnp_port_start((dev),(bar)) + 1)) -#define pnp_mem_start(dev,bar) ((dev)->resource[(bar+8)].start) -#define pnp_mem_end(dev,bar) ((dev)->resource[(bar+8)].end) -#define pnp_mem_flags(dev,bar) ((dev)->resource[(bar+8)].flags) +#define pnp_mem_start(dev,bar) ((dev)->mem_resource[(bar)].start) +#define pnp_mem_end(dev,bar) ((dev)->mem_resource[(bar)].end) +#define pnp_mem_flags(dev,bar) ((dev)->mem_resource[(bar)].flags) +#define pnp_mem_valid(dev,bar) pnp_flags_valid(&(dev)->mem_resource[(bar)]) #define pnp_mem_len(dev,bar) \ ((pnp_mem_start((dev),(bar)) == 0 && \ pnp_mem_end((dev),(bar)) == \ @@ -228,11 +258,13 @@ struct pnpc_driver { (pnp_mem_end((dev),(bar)) - \ pnp_mem_start((dev),(bar)) + 1)) -#define pnp_irq(dev,bar) ((dev)->irq_resource[(bar)].start) -#define pnp_irq_flags(dev,bar) ((dev)->irq_resource[(bar)].flags) +#define pnp_irq(dev,bar) ((dev)->irq_resource[(bar)].start) +#define pnp_irq_flags(dev,bar) ((dev)->irq_resource[(bar)].flags) +#define pnp_irq_valid(dev,bar) pnp_flags_valid(&(dev)->irq_resource[(bar)]) -#define pnp_dma(dev,bar) ((dev)->dma_resource[(bar)].start) -#define pnp_dma_flags(dev,bar) ((dev)->dma_resource[(bar)].flags) +#define pnp_dma(dev,bar) ((dev)->dma_resource[(bar)].start) +#define pnp_dma_flags(dev,bar) ((dev)->dma_resource[(bar)].flags) +#define pnp_dma_valid(dev,bar) pnp_flags_valid(&(dev)->dma_resource[(bar)]) #define PNP_PORT_FLAG_16BITADDR (1<<0) #define PNP_PORT_FLAG_FIXED (1<<1) @@ -298,14 +330,12 @@ struct pnp_resources { }; struct pnp_res_cfg { - struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */ + struct resource io_resource[DEVICE_COUNT_IO]; /* I/O ports */ + struct resource mem_resource[DEVICE_COUNT_MEM]; /* memory regions + expansion ROMs */ struct resource dma_resource[DEVICE_COUNT_DMA]; struct resource irq_resource[DEVICE_COUNT_IRQ]; }; -#define PNP_DYNAMIC 0 /* get or set current resource */ -#define PNP_STATIC 1 /* get or set resource for next boot */ - struct pnp_cfg { struct pnp_port *port[8]; struct pnp_irq *irq[2]; @@ -325,7 +355,7 @@ struct pnp_protocol { /* functions */ int (*get)(struct pnp_dev *dev); - int (*set)(struct pnp_dev *dev, struct pnp_cfg *config, char flags); + int (*set)(struct pnp_dev *dev, struct pnp_cfg *config); int (*disable)(struct pnp_dev *dev); /* used by pnp layer only (look but don't touch) */ @@ -367,7 +397,7 @@ int pnp_add_mem32_resource(struct pnp_dev *dev, int depnum, struct pnp_mem32 *da int pnp_init_res_cfg(struct pnp_res_cfg *template); int pnp_activate_dev(struct pnp_dev *dev, struct pnp_res_cfg *template); int pnp_disable_dev(struct pnp_dev *dev); -int pnp_raw_set_dev(struct pnp_dev *dev, int depnum, struct pnp_res_cfg *template, int mode); +int pnp_raw_set_dev(struct pnp_dev *dev, int depnum, struct pnp_res_cfg *template); void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size); /* driver */ @@ -375,6 +405,8 @@ int compare_pnp_id(struct pnp_id * pos, const char * id); int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev); int pnp_register_driver(struct pnp_driver *drv); void pnp_unregister_driver(struct pnp_driver *drv); +int pnp_device_attach(struct pnp_dev *pnp_dev); +void pnp_device_detach(struct pnp_dev *pnp_dev); #else @@ -395,12 +427,16 @@ static inline int pnp_add_mem32_resource(struct pnp_dev *dev, int depnum, struct static inline int pnp_init_res_cfg(struct pnp_res_cfg *template) { return -ENODEV; } static inline int pnp_activate_dev(struct pnp_dev *dev, struct pnp_res_cfg *template) { return -ENODEV; } static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } -static inline int pnp_raw_set_dev(struct pnp_dev *dev, int depnum, struct pnp_res_cfg *template, int mode) { return -ENODEV; } +static inline int pnp_raw_set_dev(struct pnp_dev *dev, int depnum, struct pnp_res_cfg *template) { return -ENODEV; } +static inline void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size) { ; } static inline int compare_pnp_id(struct list_head * id_list, const char * id) { return -ENODEV; } static inline int pnp_add_id(struct pnp_id *id, struct pnp_dev *dev) { return -ENODEV; } static inline int pnp_register_driver(struct pnp_driver *drv) { return -ENODEV; } static inline void pnp_unregister_driver(struct pnp_driver *drv) { ; } +static inline int pnp_device_attach(struct pnp_dev *pnp_dev) { return -ENODEV; } +static inline void pnp_device_detach(struct pnp_dev *pnp_dev) { ; } + #endif /* CONFIG_PNP */ @@ -417,6 +453,8 @@ int pnpc_register_driver(struct pnpc_driver * drv); void pnpc_unregister_driver(struct pnpc_driver *drv); int pnpc_add_id(struct pnp_id *id, struct pnp_card *card); extern struct list_head pnp_cards; +int pnpc_attach(struct pnp_card *card); +void pnpc_detach(struct pnp_card *card); #else @@ -429,34 +467,12 @@ static inline void pnp_release_card_device(struct pnp_dev *dev) { ; } static inline int pnpc_register_driver(struct pnpc_driver *drv) { return -ENODEV; } static inline void pnpc_unregister_driver(struct pnpc_driver *drv) { ; } static inline int pnpc_add_id(struct pnp_id *id, struct pnp_card *card) { return -ENODEV; } +static inline int pnpc_attach(struct pnp_card *card) { return -ENODEV; } +static inline void pnpc_detach(struct pnp_card *card) { ; } #endif /* CONFIG_PNP_CARD */ -#if defined(CONFIG_ISAPNP) - -/* compat */ -struct pnp_card *pnp_find_card(unsigned short vendor, - unsigned short device, - struct pnp_card *from); -struct pnp_dev *pnp_find_dev(struct pnp_card *card, - unsigned short vendor, - unsigned short function, - struct pnp_dev *from); - -#else - -static inline struct pnp_card *pnp_find_card(unsigned short vendor, - unsigned short device, - struct pnp_card *from) { return NULL; } -static inline struct pnp_dev *pnp_find_dev(struct pnp_card *card, - unsigned short vendor, - unsigned short function, - struct pnp_dev *from) { return NULL; } - -#endif /* CONFIG_ISAPNP */ - - #ifdef DEBUG #define pnp_dbg(format, arg...) printk(KERN_DEBUG "pnp: " format "\n" , ## arg) #else diff --git a/include/linux/pnpbios.h b/include/linux/pnpbios.h index 2363817caa7f..81ea18989075 100644 --- a/include/linux/pnpbios.h +++ b/include/linux/pnpbios.h @@ -78,15 +78,15 @@ /* * Plug and Play BIOS flags */ -#define PNP_NO_DISABLE 0x0001 -#define PNP_NO_CONFIG 0x0002 -#define PNP_OUTPUT 0x0004 -#define PNP_INPUT 0x0008 -#define PNP_BOOTABLE 0x0010 -#define PNP_DOCK 0x0020 -#define PNP_REMOVABLE 0x0040 -#define pnp_is_static(x) (x->flags & 0x0100) == 0x0000 -#define pnp_is_dynamic(x) x->flags & 0x0080 +#define PNPBIOS_NO_DISABLE 0x0001 +#define PNPBIOS_NO_CONFIG 0x0002 +#define PNPBIOS_OUTPUT 0x0004 +#define PNPBIOS_INPUT 0x0008 +#define PNPBIOS_BOOTABLE 0x0010 +#define PNPBIOS_DOCK 0x0020 +#define PNPBIOS_REMOVABLE 0x0040 +#define pnpbios_is_static(x) ((x)->flags & 0x0100) == 0x0000 +#define pnpbios_is_dynamic(x) (x)->flags & 0x0080 /* 0x8000 through 0xffff are OEM defined */ |
