[PATCH] fix for pci.h when compiling without PCI

From: Paul Barton-Davis (pbd@Op.Net)
Date: Sat Feb 12 2000 - 15:59:23 EST

  • Next message: Jani Hakala: "kfree_skb on hard IRQ with epic100, 2.3.44 (a FIX ?)"

    I was building a kernel for an old 486 this morning, which revealed a
    problem with pci.h when you config without PCI. Here's a fix.

    --p

    --- linux/include/linux/pci.h.orig Sat Feb 12 10:04:41 2000
    +++ linux/include/linux/pci.h Sat Feb 12 11:21:17 2000
    @@ -438,7 +438,6 @@
     
     /* Backward compatibility, don't use in new code! */
     
    -int pcibios_present(void);
     #define pci_present pcibios_present
     int pcibios_read_config_byte (unsigned char bus, unsigned char dev_fn,
                                   unsigned char where, unsigned char *val);
    @@ -459,6 +458,12 @@
     
     /* Generic PCI functions used internally */
     
    +#define PCI_ANY_ID (~0)
    +
    +#ifdef CONFIG_PCI
    +
    +int pcibios_present(void); /* Backward compatibility, don't use in new code! */
    +
     void pci_init(void);
     struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
     struct pci_bus *pci_alloc_primary_bus(int bus);
    @@ -479,9 +484,6 @@
                                      const struct pci_dev *from);
     struct pci_dev *pci_find_class (unsigned int class, const struct pci_dev *from);
     struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn);
    -int pci_find_capability (struct pci_dev *dev, int cap);
    -
    -#define PCI_ANY_ID (~0)
     
     int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val);
     int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);
    @@ -492,6 +494,46 @@
     
     int pci_enable_device(struct pci_dev *dev);
     void pci_set_master(struct pci_dev *dev);
    +
    +#else /* !CONFIG_PCI */
    +
    +/*
    + * If the system does not have PCI, clearly these return errors. Define
    + * these as simple inline functions to avoid hair in drivers.
    + */
    +
    +extern inline int pcibios_present(void) { return 0; }
    +
    +#define _PCI_NOP(o,s,t) \
    + extern inline int pcibios_##o##_config_##s## (u8 bus, u8 dfn, u8 where, t val) \
    + { return PCIBIOS_FUNC_NOT_SUPPORTED; } \
    + extern inline int pci_##o##_config_##s## (struct pci_dev *dev, int where, t val) \
    + { return PCIBIOS_FUNC_NOT_SUPPORTED; }
    +#define _PCI_NOP_ALL(o,x) _PCI_NOP(o,byte,u8 x) \
    + _PCI_NOP(o,word,u16 x) \
    + _PCI_NOP(o,dword,u32 x)
    +_PCI_NOP_ALL(read, *)
    +_PCI_NOP_ALL(write,)
    +
    +extern inline struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, const struct pci_dev *from)
    +{ return NULL; }
    +
    +extern inline struct pci_dev *pci_find_class(unsigned int class, const struct pci_dev *from)
    +{ return NULL; }
    +
    +extern inline struct pci_dev *pci_find_slot(unsigned int bus, unsigned int devfn)
    +{ return NULL; }
    +
    +extern inline struct pci_dev *pci_find_subsys(unsigned int vendor, unsigned int device,
    +unsigned int ss_vendor, unsigned int ss_device, const struct pci_dev *from)
    +{ return NULL; }
    +
    +extern inline void pci_set_master(struct pci_dev *dev) { }
    +extern inline int pci_enable_device(struct pci_dev *dev) { return 0; }
    +
    +#endif /* CONFIG_PCI */
    +
    +int pci_find_capability (struct pci_dev *dev, int cap);
     int pci_set_power_state(struct pci_dev *dev, int state);
     int pci_assign_resource(struct pci_dev *dev, int i);
     
    @@ -535,42 +577,6 @@
     struct pci_driver *pci_dev_driver(const struct pci_dev *);
     const struct pci_device_id *pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev);
     
    -/*
    - * If the system does not have PCI, clearly these return errors. Define
    - * these as simple inline functions to avoid hair in drivers.
    - */
    -
    -#ifndef CONFIG_PCI
    -extern inline int pcibios_present(void) { return 0; }
    -
    -#define _PCI_NOP(o,s,t) \
    - extern inline int pcibios_##o##_config_##s## (u8 bus, u8 dfn, u8 where, t val) \
    - { return PCIBIOS_FUNC_NOT_SUPPORTED; } \
    - extern inline int pci_##o##_config_##s## (struct pci_dev *dev, int where, t val) \
    - { return PCIBIOS_FUNC_NOT_SUPPORTED; }
    -#define _PCI_NOP_ALL(o,x) _PCI_NOP(o,byte,u8 x) \
    - _PCI_NOP(o,word,u16 x) \
    - _PCI_NOP(o,dword,u32 x)
    -_PCI_NOP_ALL(read, *)
    -_PCI_NOP_ALL(write,)
    -
    -extern inline struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, const struct pci_dev *from)
    -{ return NULL; }
    -
    -extern inline struct pci_dev *pci_find_class(unsigned int class, const struct pci_dev *from)
    -{ return NULL; }
    -
    -extern inline struct pci_dev *pci_find_slot(unsigned int bus, unsigned int devfn)
    -{ return NULL; }
    -
    -extern inline struct pci_dev *pci_find_subsys(unsigned int vendor, unsigned int device,
    -unsigned int ss_vendor, unsigned int ss_device, const struct pci_dev *from)
    -{ return NULL; }
    -
    -extern inline void pci_set_master(struct pci_dev *dev) { }
    -extern inline int pci_enable_device(struct pci_dev *dev) { return 0; }
    -
    -#endif /* !CONFIG_PCI */
     
     /* these helpers provide future and backwards compatibility
      * for accessing popular PCI BAR info */

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/



    This archive was generated by hypermail 2b29 : Sat Feb 12 2000 - 16:43:17 EST