1727ce158SMartin Mares /* 2*e95c8373SMartin Mares * $Id: internal.h,v 1.2 1999/07/07 11:23:10 mj Exp $ 3727ce158SMartin Mares * 4727ce158SMartin Mares * The PCI Library -- Internal Include File 5727ce158SMartin Mares * 6727ce158SMartin Mares * Copyright (c) 1997--1999 Martin Mares <[email protected]> 7727ce158SMartin Mares * 8727ce158SMartin Mares * Can be freely distributed and used under the terms of the GNU GPL. 9727ce158SMartin Mares */ 10727ce158SMartin Mares 11727ce158SMartin Mares #include "pci.h" 12727ce158SMartin Mares 13727ce158SMartin Mares #ifdef HAVE_PM_LINUX_BYTEORDER_H 14727ce158SMartin Mares 15727ce158SMartin Mares #include <asm/byteorder.h> 16727ce158SMartin Mares #define cpu_to_le16 __cpu_to_le16 17727ce158SMartin Mares #define cpu_to_le32 __cpu_to_le32 18727ce158SMartin Mares #define le16_to_cpu __le16_to_cpu 19727ce158SMartin Mares #define le32_to_cpu __le32_to_cpu 20727ce158SMartin Mares 21727ce158SMartin Mares #else 22727ce158SMartin Mares 23727ce158SMartin Mares #include <endian.h> 24727ce158SMartin Mares #if __BYTE_ORDER == __BIG_ENDIAN 25727ce158SMartin Mares #define cpu_to_le16 swab16 26727ce158SMartin Mares #define cpu_to_le32 swab32 27727ce158SMartin Mares #define le16_to_cpu swab16 28727ce158SMartin Mares #define le32_to_cpu swab32 29727ce158SMartin Mares 30727ce158SMartin Mares static inline word swab16(word w) 31727ce158SMartin Mares { 32727ce158SMartin Mares return (w << 8) | ((w >> 8) & 0xff); 33727ce158SMartin Mares } 34727ce158SMartin Mares 35727ce158SMartin Mares static inline u32 swab32(u32 w) 36727ce158SMartin Mares { 37727ce158SMartin Mares return ((w & 0xff000000) >> 24) | 38727ce158SMartin Mares ((w & 0x00ff0000) >> 8) | 39727ce158SMartin Mares ((w & 0x0000ff00) << 8) | 40727ce158SMartin Mares ((w & 0x000000ff) << 24); 41727ce158SMartin Mares } 42727ce158SMartin Mares #else 43727ce158SMartin Mares #define cpu_to_le16(x) (x) 44727ce158SMartin Mares #define cpu_to_le32(x) (x) 45727ce158SMartin Mares #define le16_to_cpu(x) (x) 46727ce158SMartin Mares #define le32_to_cpu(x) (x) 47727ce158SMartin Mares #endif 48727ce158SMartin Mares 49727ce158SMartin Mares #endif 50727ce158SMartin Mares 51727ce158SMartin Mares struct pci_methods { 52727ce158SMartin Mares char *name; 53727ce158SMartin Mares void (*config)(struct pci_access *); 54727ce158SMartin Mares int (*detect)(struct pci_access *); 55727ce158SMartin Mares void (*init)(struct pci_access *); 56727ce158SMartin Mares void (*cleanup)(struct pci_access *); 57727ce158SMartin Mares void (*scan)(struct pci_access *); 58*e95c8373SMartin Mares int (*fill_info)(struct pci_dev *, int flags); 59727ce158SMartin Mares int (*read)(struct pci_dev *, int pos, byte *buf, int len); 60727ce158SMartin Mares int (*write)(struct pci_dev *, int pos, byte *buf, int len); 61727ce158SMartin Mares void (*init_dev)(struct pci_dev *); 62727ce158SMartin Mares void (*cleanup_dev)(struct pci_dev *); 63727ce158SMartin Mares }; 64727ce158SMartin Mares 65727ce158SMartin Mares void pci_generic_scan(struct pci_access *); 66*e95c8373SMartin Mares int pci_generic_fill_info(struct pci_dev *, int flags); 67727ce158SMartin Mares int pci_generic_block_read(struct pci_dev *, int pos, byte *buf, int len); 68727ce158SMartin Mares int pci_generic_block_write(struct pci_dev *, int pos, byte *buf, int len); 69727ce158SMartin Mares 70727ce158SMartin Mares void *pci_malloc(struct pci_access *, int); 71727ce158SMartin Mares void pci_mfree(void *); 72727ce158SMartin Mares 73727ce158SMartin Mares struct pci_dev *pci_alloc_dev(struct pci_access *); 74727ce158SMartin Mares int pci_link_dev(struct pci_access *, struct pci_dev *); 75727ce158SMartin Mares 76727ce158SMartin Mares extern struct pci_methods pm_intel_conf1, pm_intel_conf2, pm_linux_proc, 77727ce158SMartin Mares pm_syscalls, pm_dump; 78727ce158SMartin Mares 79727ce158SMartin Mares #define UNUSED __attribute__((unused)) 80