Commit c0b4c009 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville

b43: bus: abstract R/W operations

Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 482f0538
...@@ -883,34 +883,34 @@ static inline enum ieee80211_band b43_current_band(struct b43_wl *wl) ...@@ -883,34 +883,34 @@ static inline enum ieee80211_band b43_current_band(struct b43_wl *wl)
static inline u16 b43_read16(struct b43_wldev *dev, u16 offset) static inline u16 b43_read16(struct b43_wldev *dev, u16 offset)
{ {
return ssb_read16(dev->sdev, offset); return dev->dev->read16(dev->dev, offset);
} }
static inline void b43_write16(struct b43_wldev *dev, u16 offset, u16 value) static inline void b43_write16(struct b43_wldev *dev, u16 offset, u16 value)
{ {
ssb_write16(dev->sdev, offset, value); dev->dev->write16(dev->dev, offset, value);
} }
static inline u32 b43_read32(struct b43_wldev *dev, u16 offset) static inline u32 b43_read32(struct b43_wldev *dev, u16 offset)
{ {
return ssb_read32(dev->sdev, offset); return dev->dev->read32(dev->dev, offset);
} }
static inline void b43_write32(struct b43_wldev *dev, u16 offset, u32 value) static inline void b43_write32(struct b43_wldev *dev, u16 offset, u32 value)
{ {
ssb_write32(dev->sdev, offset, value); dev->dev->write32(dev->dev, offset, value);
} }
static inline void b43_block_read(struct b43_wldev *dev, void *buffer, static inline void b43_block_read(struct b43_wldev *dev, void *buffer,
size_t count, u16 offset, u8 reg_width) size_t count, u16 offset, u8 reg_width)
{ {
ssb_block_read(dev->sdev, buffer, count, offset, reg_width); dev->dev->block_read(dev->dev, buffer, count, offset, reg_width);
} }
static inline void b43_block_write(struct b43_wldev *dev, const void *buffer, static inline void b43_block_write(struct b43_wldev *dev, const void *buffer,
size_t count, u16 offset, u8 reg_width) size_t count, u16 offset, u8 reg_width)
{ {
ssb_block_write(dev->sdev, buffer, count, offset, reg_width); dev->dev->block_write(dev->dev, buffer, count, offset, reg_width);
} }
static inline bool b43_using_pio_transfers(struct b43_wldev *dev) static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
......
...@@ -25,6 +25,37 @@ ...@@ -25,6 +25,37 @@
/* SSB */ /* SSB */
static inline u16 b43_bus_ssb_read16(struct b43_bus_dev *dev, u16 offset)
{
return ssb_read16(dev->sdev, offset);
}
static inline u32 b43_bus_ssb_read32(struct b43_bus_dev *dev, u16 offset)
{
return ssb_read32(dev->sdev, offset);
}
static inline
void b43_bus_ssb_write16(struct b43_bus_dev *dev, u16 offset, u16 value)
{
ssb_write16(dev->sdev, offset, value);
}
static inline
void b43_bus_ssb_write32(struct b43_bus_dev *dev, u16 offset, u32 value)
{
ssb_write32(dev->sdev, offset, value);
}
static inline
void b43_bus_ssb_block_read(struct b43_bus_dev *dev, void *buffer,
size_t count, u16 offset, u8 reg_width)
{
ssb_block_read(dev->sdev, buffer, count, offset, reg_width);
}
static inline
void b43_bus_ssb_block_write(struct b43_bus_dev *dev, const void *buffer,
size_t count, u16 offset, u8 reg_width)
{
ssb_block_write(dev->sdev, buffer, count, offset, reg_width);
}
struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev) struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev)
{ {
struct b43_bus_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL); struct b43_bus_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
...@@ -32,5 +63,12 @@ struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev) ...@@ -32,5 +63,12 @@ struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev)
dev->bus_type = B43_BUS_SSB; dev->bus_type = B43_BUS_SSB;
dev->sdev = sdev; dev->sdev = sdev;
dev->read16 = b43_bus_ssb_read16;
dev->read32 = b43_bus_ssb_read32;
dev->write16 = b43_bus_ssb_write16;
dev->write32 = b43_bus_ssb_write32;
dev->block_read = b43_bus_ssb_block_read;
dev->block_write = b43_bus_ssb_block_write;
return dev; return dev;
} }
...@@ -10,6 +10,15 @@ struct b43_bus_dev { ...@@ -10,6 +10,15 @@ struct b43_bus_dev {
union { union {
struct ssb_device *sdev; struct ssb_device *sdev;
}; };
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);
}; };
struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev); struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment