linux/drivers/net/wireless/b43/bus.h
<<
>>
Prefs
   1#ifndef B43_BUS_H_
   2#define B43_BUS_H_
   3
   4enum b43_bus_type {
   5#ifdef CONFIG_B43_BCMA
   6        B43_BUS_BCMA,
   7#endif
   8        B43_BUS_SSB,
   9};
  10
  11struct b43_bus_dev {
  12        enum b43_bus_type bus_type;
  13        union {
  14                struct bcma_device *bdev;
  15                struct ssb_device *sdev;
  16        };
  17
  18        int (*bus_may_powerdown)(struct b43_bus_dev *dev);
  19        int (*bus_powerup)(struct b43_bus_dev *dev, bool dynamic_pctl);
  20        int (*device_is_enabled)(struct b43_bus_dev *dev);
  21        void (*device_enable)(struct b43_bus_dev *dev,
  22                              u32 core_specific_flags);
  23        void (*device_disable)(struct b43_bus_dev *dev,
  24                               u32 core_specific_flags);
  25
  26        u16 (*read16)(struct b43_bus_dev *dev, u16 offset);
  27        u32 (*read32)(struct b43_bus_dev *dev, u16 offset);
  28        void (*write16)(struct b43_bus_dev *dev, u16 offset, u16 value);
  29        void (*write32)(struct b43_bus_dev *dev, u16 offset, u32 value);
  30        void (*block_read)(struct b43_bus_dev *dev, void *buffer,
  31                           size_t count, u16 offset, u8 reg_width);
  32        void (*block_write)(struct b43_bus_dev *dev, const void *buffer,
  33                            size_t count, u16 offset, u8 reg_width);
  34
  35        struct device *dev;
  36        struct device *dma_dev;
  37        unsigned int irq;
  38
  39        u16 board_vendor;
  40        u16 board_type;
  41        u16 board_rev;
  42
  43        u16 chip_id;
  44        u8 chip_rev;
  45        u8 chip_pkg;
  46
  47        struct ssb_sprom *bus_sprom;
  48
  49        u16 core_id;
  50        u8 core_rev;
  51};
  52
  53static inline bool b43_bus_host_is_pcmcia(struct b43_bus_dev *dev)
  54{
  55        return (dev->bus_type == B43_BUS_SSB &&
  56                dev->sdev->bus->bustype == SSB_BUSTYPE_PCMCIA);
  57}
  58static inline bool b43_bus_host_is_sdio(struct b43_bus_dev *dev)
  59{
  60        return (dev->bus_type == B43_BUS_SSB &&
  61                dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO);
  62}
  63
  64struct b43_bus_dev *b43_bus_dev_bcma_init(struct bcma_device *core);
  65struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
  66
  67void *b43_bus_get_wldev(struct b43_bus_dev *dev);
  68void b43_bus_set_wldev(struct b43_bus_dev *dev, void *data);
  69
  70#endif /* B43_BUS_H_ */
  71