root/drivers/net/wireless/broadcom/b43/bus.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. b43_bus_host_is_pcmcia
  2. b43_bus_host_is_pci
  3. b43_bus_host_is_sdio

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef B43_BUS_H_
   3 #define B43_BUS_H_
   4 
   5 enum b43_bus_type {
   6 #ifdef CONFIG_B43_BCMA
   7         B43_BUS_BCMA,
   8 #endif
   9 #ifdef CONFIG_B43_SSB
  10         B43_BUS_SSB,
  11 #endif
  12 };
  13 
  14 struct b43_bus_dev {
  15         enum b43_bus_type bus_type;
  16         union {
  17                 struct bcma_device *bdev;
  18                 struct ssb_device *sdev;
  19         };
  20 
  21         int (*bus_may_powerdown)(struct b43_bus_dev *dev);
  22         int (*bus_powerup)(struct b43_bus_dev *dev, bool dynamic_pctl);
  23         int (*device_is_enabled)(struct b43_bus_dev *dev);
  24         void (*device_enable)(struct b43_bus_dev *dev,
  25                               u32 core_specific_flags);
  26         void (*device_disable)(struct b43_bus_dev *dev,
  27                                u32 core_specific_flags);
  28 
  29         u16 (*read16)(struct b43_bus_dev *dev, u16 offset);
  30         u32 (*read32)(struct b43_bus_dev *dev, u16 offset);
  31         void (*write16)(struct b43_bus_dev *dev, u16 offset, u16 value);
  32         void (*write32)(struct b43_bus_dev *dev, u16 offset, u32 value);
  33         void (*block_read)(struct b43_bus_dev *dev, void *buffer,
  34                            size_t count, u16 offset, u8 reg_width);
  35         void (*block_write)(struct b43_bus_dev *dev, const void *buffer,
  36                             size_t count, u16 offset, u8 reg_width);
  37         bool flush_writes;
  38 
  39         struct device *dev;
  40         struct device *dma_dev;
  41         unsigned int irq;
  42 
  43         u16 board_vendor;
  44         u16 board_type;
  45         u16 board_rev;
  46 
  47         u16 chip_id;
  48         u8 chip_rev;
  49         u8 chip_pkg;
  50 
  51         struct ssb_sprom *bus_sprom;
  52 
  53         u16 core_id;
  54         u8 core_rev;
  55 };
  56 
  57 static inline bool b43_bus_host_is_pcmcia(struct b43_bus_dev *dev)
  58 {
  59 #ifdef CONFIG_B43_SSB
  60         return (dev->bus_type == B43_BUS_SSB &&
  61                 dev->sdev->bus->bustype == SSB_BUSTYPE_PCMCIA);
  62 #else
  63         return false;
  64 #endif
  65 };
  66 
  67 static inline bool b43_bus_host_is_pci(struct b43_bus_dev *dev)
  68 {
  69 #ifdef CONFIG_B43_BCMA
  70         if (dev->bus_type == B43_BUS_BCMA)
  71                 return (dev->bdev->bus->hosttype == BCMA_HOSTTYPE_PCI);
  72 #endif
  73 #ifdef CONFIG_B43_SSB
  74         if (dev->bus_type == B43_BUS_SSB)
  75                 return (dev->sdev->bus->bustype == SSB_BUSTYPE_PCI);
  76 #endif
  77         return false;
  78 }
  79 
  80 static inline bool b43_bus_host_is_sdio(struct b43_bus_dev *dev)
  81 {
  82 #ifdef CONFIG_B43_SSB
  83         return (dev->bus_type == B43_BUS_SSB &&
  84                 dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO);
  85 #else
  86         return false;
  87 #endif
  88 }
  89 
  90 struct b43_bus_dev *b43_bus_dev_bcma_init(struct bcma_device *core);
  91 struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
  92 
  93 void *b43_bus_get_wldev(struct b43_bus_dev *dev);
  94 void b43_bus_set_wldev(struct b43_bus_dev *dev, void *data);
  95 
  96 #endif /* B43_BUS_H_ */

/* [<][>][^][v][top][bottom][index][help] */