bus.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef B43_BUS_H_
  2. #define B43_BUS_H_
  3. enum b43_bus_type {
  4. B43_BUS_SSB,
  5. };
  6. struct b43_bus_dev {
  7. enum b43_bus_type bus_type;
  8. union {
  9. struct ssb_device *sdev;
  10. };
  11. int (*bus_may_powerdown)(struct b43_bus_dev *dev);
  12. int (*bus_powerup)(struct b43_bus_dev *dev, bool dynamic_pctl);
  13. int (*device_is_enabled)(struct b43_bus_dev *dev);
  14. void (*device_enable)(struct b43_bus_dev *dev,
  15. u32 core_specific_flags);
  16. void (*device_disable)(struct b43_bus_dev *dev,
  17. u32 core_specific_flags);
  18. u16 (*read16)(struct b43_bus_dev *dev, u16 offset);
  19. u32 (*read32)(struct b43_bus_dev *dev, u16 offset);
  20. void (*write16)(struct b43_bus_dev *dev, u16 offset, u16 value);
  21. void (*write32)(struct b43_bus_dev *dev, u16 offset, u32 value);
  22. void (*block_read)(struct b43_bus_dev *dev, void *buffer,
  23. size_t count, u16 offset, u8 reg_width);
  24. void (*block_write)(struct b43_bus_dev *dev, const void *buffer,
  25. size_t count, u16 offset, u8 reg_width);
  26. struct device *dev;
  27. struct device *dma_dev;
  28. unsigned int irq;
  29. u16 board_vendor;
  30. u16 board_type;
  31. u16 board_rev;
  32. u16 chip_id;
  33. u8 chip_rev;
  34. u8 chip_pkg;
  35. struct ssb_sprom *bus_sprom;
  36. u16 core_id;
  37. u8 core_rev;
  38. };
  39. static inline bool b43_bus_host_is_pcmcia(struct b43_bus_dev *dev)
  40. {
  41. return (dev->bus_type == B43_BUS_SSB &&
  42. dev->sdev->bus->bustype == SSB_BUSTYPE_PCMCIA);
  43. }
  44. static inline bool b43_bus_host_is_sdio(struct b43_bus_dev *dev)
  45. {
  46. return (dev->bus_type == B43_BUS_SSB &&
  47. dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO);
  48. }
  49. struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
  50. #endif /* B43_BUS_H_ */