1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #ifndef B43_BUS_H_
- #define B43_BUS_H_
- enum b43_bus_type {
- #ifdef CONFIG_B43_BCMA
- B43_BUS_BCMA,
- #endif
- #ifdef CONFIG_B43_SSB
- B43_BUS_SSB,
- #endif
- };
- struct b43_bus_dev {
- enum b43_bus_type bus_type;
- union {
- struct bcma_device *bdev;
- struct ssb_device *sdev;
- };
- int (*bus_may_powerdown)(struct b43_bus_dev *dev);
- int (*bus_powerup)(struct b43_bus_dev *dev, bool dynamic_pctl);
- int (*device_is_enabled)(struct b43_bus_dev *dev);
- void (*device_enable)(struct b43_bus_dev *dev,
- u32 core_specific_flags);
- void (*device_disable)(struct b43_bus_dev *dev,
- u32 core_specific_flags);
- u16 (*read16)(struct b43_bus_dev *dev, u16 offset);
- u32 (*read32)(struct b43_bus_dev *dev, u16 offset);
- void (*write16)(struct b43_bus_dev *dev, u16 offset, u16 value);
- void (*write32)(struct b43_bus_dev *dev, u16 offset, u32 value);
- void (*block_read)(struct b43_bus_dev *dev, void *buffer,
- size_t count, u16 offset, u8 reg_width);
- void (*block_write)(struct b43_bus_dev *dev, const void *buffer,
- size_t count, u16 offset, u8 reg_width);
- bool flush_writes;
- struct device *dev;
- struct device *dma_dev;
- unsigned int irq;
- u16 board_vendor;
- u16 board_type;
- u16 board_rev;
- u16 chip_id;
- u8 chip_rev;
- u8 chip_pkg;
- struct ssb_sprom *bus_sprom;
- u16 core_id;
- u8 core_rev;
- };
- static inline bool b43_bus_host_is_pcmcia(struct b43_bus_dev *dev)
- {
- #ifdef CONFIG_B43_SSB
- return (dev->bus_type == B43_BUS_SSB &&
- dev->sdev->bus->bustype == SSB_BUSTYPE_PCMCIA);
- #else
- return false;
- #endif
- };
- static inline bool b43_bus_host_is_pci(struct b43_bus_dev *dev)
- {
- #ifdef CONFIG_B43_BCMA
- if (dev->bus_type == B43_BUS_BCMA)
- return (dev->bdev->bus->hosttype == BCMA_HOSTTYPE_PCI);
- #endif
- #ifdef CONFIG_B43_SSB
- if (dev->bus_type == B43_BUS_SSB)
- return (dev->sdev->bus->bustype == SSB_BUSTYPE_PCI);
- #endif
- return false;
- }
- static inline bool b43_bus_host_is_sdio(struct b43_bus_dev *dev)
- {
- #ifdef CONFIG_B43_SSB
- return (dev->bus_type == B43_BUS_SSB &&
- dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO);
- #else
- return false;
- #endif
- }
- struct b43_bus_dev *b43_bus_dev_bcma_init(struct bcma_device *core);
- struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
- void *b43_bus_get_wldev(struct b43_bus_dev *dev);
- void b43_bus_set_wldev(struct b43_bus_dev *dev, void *data);
- #endif /* B43_BUS_H_ */
|