2011-05-18 02:06:36 +02:00
# ifndef B43_BUS_H_
# define B43_BUS_H_
enum b43_bus_type {
2011-07-06 15:45:26 +02:00
# ifdef CONFIG_B43_BCMA
2011-07-06 19:03:46 +02:00
B43_BUS_BCMA ,
2011-07-06 15:45:26 +02:00
# endif
2011-05-18 02:06:36 +02:00
B43_BUS_SSB ,
} ;
struct b43_bus_dev {
enum b43_bus_type bus_type ;
union {
2011-07-06 19:03:46 +02:00
struct bcma_device * bdev ;
2011-05-18 02:06:36 +02:00
struct ssb_device * sdev ;
} ;
2011-05-18 02:06:37 +02:00
2011-05-18 02:06:43 +02:00
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 ) ;
2011-05-18 02:06:37 +02:00
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 ) ;
2011-05-18 02:06:38 +02:00
2011-05-18 02:06:40 +02:00
struct device * dev ;
struct device * dma_dev ;
unsigned int irq ;
2011-05-18 02:06:42 +02:00
u16 board_vendor ;
u16 board_type ;
u16 board_rev ;
2011-05-18 02:06:41 +02:00
u16 chip_id ;
u8 chip_rev ;
u8 chip_pkg ;
2011-05-18 02:06:39 +02:00
struct ssb_sprom * bus_sprom ;
2011-05-18 02:06:38 +02:00
u16 core_id ;
u8 core_rev ;
2011-05-18 02:06:36 +02:00
} ;
2011-05-19 15:11:27 +02:00
static inline bool b43_bus_host_is_pcmcia ( struct b43_bus_dev * dev )
{
return ( dev - > bus_type = = B43_BUS_SSB & &
dev - > sdev - > bus - > bustype = = SSB_BUSTYPE_PCMCIA ) ;
}
static inline bool b43_bus_host_is_sdio ( struct b43_bus_dev * dev )
{
return ( dev - > bus_type = = B43_BUS_SSB & &
dev - > sdev - > bus - > bustype = = SSB_BUSTYPE_SDIO ) ;
}
2011-07-06 19:03:46 +02:00
struct b43_bus_dev * b43_bus_dev_bcma_init ( struct bcma_device * core ) ;
2011-05-18 02:06:36 +02:00
struct b43_bus_dev * b43_bus_dev_ssb_init ( struct ssb_device * sdev ) ;
2011-07-06 15:45:28 +02:00
void * b43_bus_get_wldev ( struct b43_bus_dev * dev ) ;
void b43_bus_set_wldev ( struct b43_bus_dev * dev , void * data ) ;
2011-05-18 02:06:36 +02:00
# endif /* B43_BUS_H_ */