Commit e796643e authored by Ivo van Doorn's avatar Ivo van Doorn Committed by John W. Linville

rt2x00: Move driver callback functions into the ops structure

All callback functions are gathered in rt2x00dev->ops except
for the callback functions which are used in rt2800lib to
acces rt2800pci/usb.

Move the priv pointer from rt2x00dev to rt2x00dev->ops and
rename it to drv to make it obvious that it is the driver callback
structure.
Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f31c9a8c
...@@ -50,7 +50,7 @@ static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, ...@@ -50,7 +50,7 @@ static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev,
const unsigned int offset, const unsigned int offset,
u32 *value) u32 *value)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
rt2800ops->register_read(rt2x00dev, offset, value); rt2800ops->register_read(rt2x00dev, offset, value);
} }
...@@ -59,7 +59,7 @@ static inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev, ...@@ -59,7 +59,7 @@ static inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev,
const unsigned int offset, const unsigned int offset,
u32 *value) u32 *value)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
rt2800ops->register_read_lock(rt2x00dev, offset, value); rt2800ops->register_read_lock(rt2x00dev, offset, value);
} }
...@@ -68,7 +68,7 @@ static inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev, ...@@ -68,7 +68,7 @@ static inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev,
const unsigned int offset, const unsigned int offset,
u32 value) u32 value)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
rt2800ops->register_write(rt2x00dev, offset, value); rt2800ops->register_write(rt2x00dev, offset, value);
} }
...@@ -77,7 +77,7 @@ static inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev, ...@@ -77,7 +77,7 @@ static inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev,
const unsigned int offset, const unsigned int offset,
u32 value) u32 value)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
rt2800ops->register_write_lock(rt2x00dev, offset, value); rt2800ops->register_write_lock(rt2x00dev, offset, value);
} }
...@@ -86,7 +86,7 @@ static inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev, ...@@ -86,7 +86,7 @@ static inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev,
const unsigned int offset, const unsigned int offset,
void *value, const u32 length) void *value, const u32 length)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
rt2800ops->register_multiread(rt2x00dev, offset, value, length); rt2800ops->register_multiread(rt2x00dev, offset, value, length);
} }
...@@ -96,7 +96,7 @@ static inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev, ...@@ -96,7 +96,7 @@ static inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev,
const void *value, const void *value,
const u32 length) const u32 length)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); rt2800ops->register_multiwrite(rt2x00dev, offset, value, length);
} }
...@@ -106,7 +106,7 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, ...@@ -106,7 +106,7 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev,
const struct rt2x00_field32 field, const struct rt2x00_field32 field,
u32 *reg) u32 *reg)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg);
} }
...@@ -114,14 +114,14 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, ...@@ -114,14 +114,14 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev,
static inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev, static inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev,
const u8 *data, const size_t len) const u8 *data, const size_t len)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
return rt2800ops->drv_write_firmware(rt2x00dev, data, len); return rt2800ops->drv_write_firmware(rt2x00dev, data, len);
} }
static inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev) static inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev)
{ {
const struct rt2800_ops *rt2800ops = rt2x00dev->priv; const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
return rt2800ops->drv_init_registers(rt2x00dev); return rt2800ops->drv_init_registers(rt2x00dev);
} }
......
...@@ -926,27 +926,10 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev) ...@@ -926,27 +926,10 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
return rt2800_validate_eeprom(rt2x00dev); return rt2800_validate_eeprom(rt2x00dev);
} }
static const struct rt2800_ops rt2800pci_rt2800_ops = {
.register_read = rt2x00pci_register_read,
.register_read_lock = rt2x00pci_register_read, /* same for PCI */
.register_write = rt2x00pci_register_write,
.register_write_lock = rt2x00pci_register_write, /* same for PCI */
.register_multiread = rt2x00pci_register_multiread,
.register_multiwrite = rt2x00pci_register_multiwrite,
.regbusy_read = rt2x00pci_regbusy_read,
.drv_write_firmware = rt2800pci_write_firmware,
.drv_init_registers = rt2800pci_init_registers,
};
static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
{ {
int retval; int retval;
rt2x00dev->priv = (void *)&rt2800pci_rt2800_ops;
/* /*
* Allocate eeprom data. * Allocate eeprom data.
*/ */
...@@ -1018,6 +1001,18 @@ static const struct ieee80211_ops rt2800pci_mac80211_ops = { ...@@ -1018,6 +1001,18 @@ static const struct ieee80211_ops rt2800pci_mac80211_ops = {
.ampdu_action = rt2800_ampdu_action, .ampdu_action = rt2800_ampdu_action,
}; };
static const struct rt2800_ops rt2800pci_rt2800_ops = {
.register_read = rt2x00pci_register_read,
.register_read_lock = rt2x00pci_register_read, /* same for PCI */
.register_write = rt2x00pci_register_write,
.register_write_lock = rt2x00pci_register_write, /* same for PCI */
.register_multiread = rt2x00pci_register_multiread,
.register_multiwrite = rt2x00pci_register_multiwrite,
.regbusy_read = rt2x00pci_regbusy_read,
.drv_write_firmware = rt2800pci_write_firmware,
.drv_init_registers = rt2800pci_init_registers,
};
static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = { static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = {
.irq_handler = rt2800pci_interrupt, .irq_handler = rt2800pci_interrupt,
.irq_handler_thread = rt2800pci_interrupt_thread, .irq_handler_thread = rt2800pci_interrupt_thread,
...@@ -1082,6 +1077,7 @@ static const struct rt2x00_ops rt2800pci_ops = { ...@@ -1082,6 +1077,7 @@ static const struct rt2x00_ops rt2800pci_ops = {
.tx = &rt2800pci_queue_tx, .tx = &rt2800pci_queue_tx,
.bcn = &rt2800pci_queue_bcn, .bcn = &rt2800pci_queue_bcn,
.lib = &rt2800pci_rt2x00_ops, .lib = &rt2800pci_rt2x00_ops,
.drv = &rt2800pci_rt2800_ops,
.hw = &rt2800pci_mac80211_ops, .hw = &rt2800pci_mac80211_ops,
#ifdef CONFIG_RT2X00_LIB_DEBUGFS #ifdef CONFIG_RT2X00_LIB_DEBUGFS
.debugfs = &rt2800_rt2x00debug, .debugfs = &rt2800_rt2x00debug,
......
...@@ -470,27 +470,10 @@ static int rt2800usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) ...@@ -470,27 +470,10 @@ static int rt2800usb_validate_eeprom(struct rt2x00_dev *rt2x00dev)
return rt2800_validate_eeprom(rt2x00dev); return rt2800_validate_eeprom(rt2x00dev);
} }
static const struct rt2800_ops rt2800usb_rt2800_ops = {
.register_read = rt2x00usb_register_read,
.register_read_lock = rt2x00usb_register_read_lock,
.register_write = rt2x00usb_register_write,
.register_write_lock = rt2x00usb_register_write_lock,
.register_multiread = rt2x00usb_register_multiread,
.register_multiwrite = rt2x00usb_register_multiwrite,
.regbusy_read = rt2x00usb_regbusy_read,
.drv_write_firmware = rt2800usb_write_firmware,
.drv_init_registers = rt2800usb_init_registers,
};
static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev)
{ {
int retval; int retval;
rt2x00dev->priv = (void *)&rt2800usb_rt2800_ops;
/* /*
* Allocate eeprom data. * Allocate eeprom data.
*/ */
...@@ -556,6 +539,18 @@ static const struct ieee80211_ops rt2800usb_mac80211_ops = { ...@@ -556,6 +539,18 @@ static const struct ieee80211_ops rt2800usb_mac80211_ops = {
.ampdu_action = rt2800_ampdu_action, .ampdu_action = rt2800_ampdu_action,
}; };
static const struct rt2800_ops rt2800usb_rt2800_ops = {
.register_read = rt2x00usb_register_read,
.register_read_lock = rt2x00usb_register_read_lock,
.register_write = rt2x00usb_register_write,
.register_write_lock = rt2x00usb_register_write_lock,
.register_multiread = rt2x00usb_register_multiread,
.register_multiwrite = rt2x00usb_register_multiwrite,
.regbusy_read = rt2x00usb_regbusy_read,
.drv_write_firmware = rt2800usb_write_firmware,
.drv_init_registers = rt2800usb_init_registers,
};
static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = { static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = {
.probe_hw = rt2800usb_probe_hw, .probe_hw = rt2800usb_probe_hw,
.get_firmware_name = rt2800usb_get_firmware_name, .get_firmware_name = rt2800usb_get_firmware_name,
...@@ -619,6 +614,7 @@ static const struct rt2x00_ops rt2800usb_ops = { ...@@ -619,6 +614,7 @@ static const struct rt2x00_ops rt2800usb_ops = {
.tx = &rt2800usb_queue_tx, .tx = &rt2800usb_queue_tx,
.bcn = &rt2800usb_queue_bcn, .bcn = &rt2800usb_queue_bcn,
.lib = &rt2800usb_rt2x00_ops, .lib = &rt2800usb_rt2x00_ops,
.drv = &rt2800usb_rt2800_ops,
.hw = &rt2800usb_mac80211_ops, .hw = &rt2800usb_mac80211_ops,
#ifdef CONFIG_RT2X00_LIB_DEBUGFS #ifdef CONFIG_RT2X00_LIB_DEBUGFS
.debugfs = &rt2800_rt2x00debug, .debugfs = &rt2800_rt2x00debug,
......
...@@ -621,6 +621,7 @@ struct rt2x00_ops { ...@@ -621,6 +621,7 @@ struct rt2x00_ops {
const struct data_queue_desc *bcn; const struct data_queue_desc *bcn;
const struct data_queue_desc *atim; const struct data_queue_desc *atim;
const struct rt2x00lib_ops *lib; const struct rt2x00lib_ops *lib;
const void *drv;
const struct ieee80211_ops *hw; const struct ieee80211_ops *hw;
#ifdef CONFIG_RT2X00_LIB_DEBUGFS #ifdef CONFIG_RT2X00_LIB_DEBUGFS
const struct rt2x00debug *debugfs; const struct rt2x00debug *debugfs;
...@@ -881,11 +882,6 @@ struct rt2x00_dev { ...@@ -881,11 +882,6 @@ struct rt2x00_dev {
* and interrupt thread routine. * and interrupt thread routine.
*/ */
u32 irqvalue[2]; u32 irqvalue[2];
/*
* Driver specific data.
*/
void *priv;
}; };
/* /*
......
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