diff options
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.h | 18 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800pci.c | 30 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800usb.c | 30 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 6 |
4 files changed, 36 insertions, 48 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.h b/drivers/net/wireless/rt2x00/rt2800lib.h index cecbd3abc35b..091641e3c5e2 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.h +++ b/drivers/net/wireless/rt2x00/rt2800lib.h | |||
| @@ -50,7 +50,7 @@ static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, | |||
| 50 | const unsigned int offset, | 50 | const unsigned int offset, |
| 51 | u32 *value) | 51 | u32 *value) |
| 52 | { | 52 | { |
| 53 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 53 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 54 | 54 | ||
| 55 | rt2800ops->register_read(rt2x00dev, offset, value); | 55 | rt2800ops->register_read(rt2x00dev, offset, value); |
| 56 | } | 56 | } |
| @@ -59,7 +59,7 @@ static inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev, | |||
| 59 | const unsigned int offset, | 59 | const unsigned int offset, |
| 60 | u32 *value) | 60 | u32 *value) |
| 61 | { | 61 | { |
| 62 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 62 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 63 | 63 | ||
| 64 | rt2800ops->register_read_lock(rt2x00dev, offset, value); | 64 | rt2800ops->register_read_lock(rt2x00dev, offset, value); |
| 65 | } | 65 | } |
| @@ -68,7 +68,7 @@ static inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev, | |||
| 68 | const unsigned int offset, | 68 | const unsigned int offset, |
| 69 | u32 value) | 69 | u32 value) |
| 70 | { | 70 | { |
| 71 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 71 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 72 | 72 | ||
| 73 | rt2800ops->register_write(rt2x00dev, offset, value); | 73 | rt2800ops->register_write(rt2x00dev, offset, value); |
| 74 | } | 74 | } |
| @@ -77,7 +77,7 @@ static inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev, | |||
| 77 | const unsigned int offset, | 77 | const unsigned int offset, |
| 78 | u32 value) | 78 | u32 value) |
| 79 | { | 79 | { |
| 80 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 80 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 81 | 81 | ||
| 82 | rt2800ops->register_write_lock(rt2x00dev, offset, value); | 82 | rt2800ops->register_write_lock(rt2x00dev, offset, value); |
| 83 | } | 83 | } |
| @@ -86,7 +86,7 @@ static inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev, | |||
| 86 | const unsigned int offset, | 86 | const unsigned int offset, |
| 87 | void *value, const u32 length) | 87 | void *value, const u32 length) |
| 88 | { | 88 | { |
| 89 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 89 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 90 | 90 | ||
| 91 | rt2800ops->register_multiread(rt2x00dev, offset, value, length); | 91 | rt2800ops->register_multiread(rt2x00dev, offset, value, length); |
| 92 | } | 92 | } |
| @@ -96,7 +96,7 @@ static inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev, | |||
| 96 | const void *value, | 96 | const void *value, |
| 97 | const u32 length) | 97 | const u32 length) |
| 98 | { | 98 | { |
| 99 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 99 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 100 | 100 | ||
| 101 | rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); | 101 | rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); |
| 102 | } | 102 | } |
| @@ -106,7 +106,7 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, | |||
| 106 | const struct rt2x00_field32 field, | 106 | const struct rt2x00_field32 field, |
| 107 | u32 *reg) | 107 | u32 *reg) |
| 108 | { | 108 | { |
| 109 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 109 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 110 | 110 | ||
| 111 | return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); | 111 | return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); |
| 112 | } | 112 | } |
| @@ -114,14 +114,14 @@ static inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, | |||
| 114 | static inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev, | 114 | static inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev, |
| 115 | const u8 *data, const size_t len) | 115 | const u8 *data, const size_t len) |
| 116 | { | 116 | { |
| 117 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 117 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 118 | 118 | ||
| 119 | return rt2800ops->drv_write_firmware(rt2x00dev, data, len); | 119 | return rt2800ops->drv_write_firmware(rt2x00dev, data, len); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | static inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev) | 122 | static inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev) |
| 123 | { | 123 | { |
| 124 | const struct rt2800_ops *rt2800ops = rt2x00dev->priv; | 124 | const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; |
| 125 | 125 | ||
| 126 | return rt2800ops->drv_init_registers(rt2x00dev); | 126 | return rt2800ops->drv_init_registers(rt2x00dev); |
| 127 | } | 127 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c index 0fdd58b9dece..39b3846fa340 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c | |||
| @@ -926,27 +926,10 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 926 | return rt2800_validate_eeprom(rt2x00dev); | 926 | return rt2800_validate_eeprom(rt2x00dev); |
| 927 | } | 927 | } |
| 928 | 928 | ||
| 929 | static const struct rt2800_ops rt2800pci_rt2800_ops = { | ||
| 930 | .register_read = rt2x00pci_register_read, | ||
| 931 | .register_read_lock = rt2x00pci_register_read, /* same for PCI */ | ||
| 932 | .register_write = rt2x00pci_register_write, | ||
| 933 | .register_write_lock = rt2x00pci_register_write, /* same for PCI */ | ||
| 934 | |||
| 935 | .register_multiread = rt2x00pci_register_multiread, | ||
| 936 | .register_multiwrite = rt2x00pci_register_multiwrite, | ||
| 937 | |||
| 938 | .regbusy_read = rt2x00pci_regbusy_read, | ||
| 939 | |||
| 940 | .drv_write_firmware = rt2800pci_write_firmware, | ||
| 941 | .drv_init_registers = rt2800pci_init_registers, | ||
| 942 | }; | ||
| 943 | |||
| 944 | static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) | 929 | static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) |
| 945 | { | 930 | { |
| 946 | int retval; | 931 | int retval; |
| 947 | 932 | ||
| 948 | rt2x00dev->priv = (void *)&rt2800pci_rt2800_ops; | ||
| 949 | |||
| 950 | /* | 933 | /* |
| 951 | * Allocate eeprom data. | 934 | * Allocate eeprom data. |
| 952 | */ | 935 | */ |
| @@ -1018,6 +1001,18 @@ static const struct ieee80211_ops rt2800pci_mac80211_ops = { | |||
| 1018 | .ampdu_action = rt2800_ampdu_action, | 1001 | .ampdu_action = rt2800_ampdu_action, |
| 1019 | }; | 1002 | }; |
| 1020 | 1003 | ||
| 1004 | static const struct rt2800_ops rt2800pci_rt2800_ops = { | ||
| 1005 | .register_read = rt2x00pci_register_read, | ||
| 1006 | .register_read_lock = rt2x00pci_register_read, /* same for PCI */ | ||
| 1007 | .register_write = rt2x00pci_register_write, | ||
| 1008 | .register_write_lock = rt2x00pci_register_write, /* same for PCI */ | ||
| 1009 | .register_multiread = rt2x00pci_register_multiread, | ||
| 1010 | .register_multiwrite = rt2x00pci_register_multiwrite, | ||
| 1011 | .regbusy_read = rt2x00pci_regbusy_read, | ||
| 1012 | .drv_write_firmware = rt2800pci_write_firmware, | ||
| 1013 | .drv_init_registers = rt2800pci_init_registers, | ||
| 1014 | }; | ||
| 1015 | |||
| 1021 | static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = { | 1016 | static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = { |
| 1022 | .irq_handler = rt2800pci_interrupt, | 1017 | .irq_handler = rt2800pci_interrupt, |
| 1023 | .irq_handler_thread = rt2800pci_interrupt_thread, | 1018 | .irq_handler_thread = rt2800pci_interrupt_thread, |
| @@ -1082,6 +1077,7 @@ static const struct rt2x00_ops rt2800pci_ops = { | |||
| 1082 | .tx = &rt2800pci_queue_tx, | 1077 | .tx = &rt2800pci_queue_tx, |
| 1083 | .bcn = &rt2800pci_queue_bcn, | 1078 | .bcn = &rt2800pci_queue_bcn, |
| 1084 | .lib = &rt2800pci_rt2x00_ops, | 1079 | .lib = &rt2800pci_rt2x00_ops, |
| 1080 | .drv = &rt2800pci_rt2800_ops, | ||
| 1085 | .hw = &rt2800pci_mac80211_ops, | 1081 | .hw = &rt2800pci_mac80211_ops, |
| 1086 | #ifdef CONFIG_RT2X00_LIB_DEBUGFS | 1082 | #ifdef CONFIG_RT2X00_LIB_DEBUGFS |
| 1087 | .debugfs = &rt2800_rt2x00debug, | 1083 | .debugfs = &rt2800_rt2x00debug, |
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 7b8d51f58038..5a2dfe87c6b6 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
| @@ -470,27 +470,10 @@ static int rt2800usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 470 | return rt2800_validate_eeprom(rt2x00dev); | 470 | return rt2800_validate_eeprom(rt2x00dev); |
| 471 | } | 471 | } |
| 472 | 472 | ||
| 473 | static const struct rt2800_ops rt2800usb_rt2800_ops = { | ||
| 474 | .register_read = rt2x00usb_register_read, | ||
| 475 | .register_read_lock = rt2x00usb_register_read_lock, | ||
| 476 | .register_write = rt2x00usb_register_write, | ||
| 477 | .register_write_lock = rt2x00usb_register_write_lock, | ||
| 478 | |||
| 479 | .register_multiread = rt2x00usb_register_multiread, | ||
| 480 | .register_multiwrite = rt2x00usb_register_multiwrite, | ||
| 481 | |||
| 482 | .regbusy_read = rt2x00usb_regbusy_read, | ||
| 483 | |||
| 484 | .drv_write_firmware = rt2800usb_write_firmware, | ||
| 485 | .drv_init_registers = rt2800usb_init_registers, | ||
| 486 | }; | ||
| 487 | |||
| 488 | static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) | 473 | static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) |
| 489 | { | 474 | { |
| 490 | int retval; | 475 | int retval; |
| 491 | 476 | ||
| 492 | rt2x00dev->priv = (void *)&rt2800usb_rt2800_ops; | ||
| 493 | |||
| 494 | /* | 477 | /* |
| 495 | * Allocate eeprom data. | 478 | * Allocate eeprom data. |
| 496 | */ | 479 | */ |
| @@ -556,6 +539,18 @@ static const struct ieee80211_ops rt2800usb_mac80211_ops = { | |||
| 556 | .ampdu_action = rt2800_ampdu_action, | 539 | .ampdu_action = rt2800_ampdu_action, |
| 557 | }; | 540 | }; |
| 558 | 541 | ||
| 542 | static const struct rt2800_ops rt2800usb_rt2800_ops = { | ||
| 543 | .register_read = rt2x00usb_register_read, | ||
| 544 | .register_read_lock = rt2x00usb_register_read_lock, | ||
| 545 | .register_write = rt2x00usb_register_write, | ||
| 546 | .register_write_lock = rt2x00usb_register_write_lock, | ||
| 547 | .register_multiread = rt2x00usb_register_multiread, | ||
| 548 | .register_multiwrite = rt2x00usb_register_multiwrite, | ||
| 549 | .regbusy_read = rt2x00usb_regbusy_read, | ||
| 550 | .drv_write_firmware = rt2800usb_write_firmware, | ||
| 551 | .drv_init_registers = rt2800usb_init_registers, | ||
| 552 | }; | ||
| 553 | |||
| 559 | static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = { | 554 | static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = { |
| 560 | .probe_hw = rt2800usb_probe_hw, | 555 | .probe_hw = rt2800usb_probe_hw, |
| 561 | .get_firmware_name = rt2800usb_get_firmware_name, | 556 | .get_firmware_name = rt2800usb_get_firmware_name, |
| @@ -619,6 +614,7 @@ static const struct rt2x00_ops rt2800usb_ops = { | |||
| 619 | .tx = &rt2800usb_queue_tx, | 614 | .tx = &rt2800usb_queue_tx, |
| 620 | .bcn = &rt2800usb_queue_bcn, | 615 | .bcn = &rt2800usb_queue_bcn, |
| 621 | .lib = &rt2800usb_rt2x00_ops, | 616 | .lib = &rt2800usb_rt2x00_ops, |
| 617 | .drv = &rt2800usb_rt2800_ops, | ||
| 622 | .hw = &rt2800usb_mac80211_ops, | 618 | .hw = &rt2800usb_mac80211_ops, |
| 623 | #ifdef CONFIG_RT2X00_LIB_DEBUGFS | 619 | #ifdef CONFIG_RT2X00_LIB_DEBUGFS |
| 624 | .debugfs = &rt2800_rt2x00debug, | 620 | .debugfs = &rt2800_rt2x00debug, |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 9dd0d171abf1..c21af38cc5af 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
| @@ -621,6 +621,7 @@ struct rt2x00_ops { | |||
| 621 | const struct data_queue_desc *bcn; | 621 | const struct data_queue_desc *bcn; |
| 622 | const struct data_queue_desc *atim; | 622 | const struct data_queue_desc *atim; |
| 623 | const struct rt2x00lib_ops *lib; | 623 | const struct rt2x00lib_ops *lib; |
| 624 | const void *drv; | ||
| 624 | const struct ieee80211_ops *hw; | 625 | const struct ieee80211_ops *hw; |
| 625 | #ifdef CONFIG_RT2X00_LIB_DEBUGFS | 626 | #ifdef CONFIG_RT2X00_LIB_DEBUGFS |
| 626 | const struct rt2x00debug *debugfs; | 627 | const struct rt2x00debug *debugfs; |
| @@ -881,11 +882,6 @@ struct rt2x00_dev { | |||
| 881 | * and interrupt thread routine. | 882 | * and interrupt thread routine. |
| 882 | */ | 883 | */ |
| 883 | u32 irqvalue[2]; | 884 | u32 irqvalue[2]; |
| 884 | |||
| 885 | /* | ||
| 886 | * Driver specific data. | ||
| 887 | */ | ||
| 888 | void *priv; | ||
| 889 | }; | 885 | }; |
| 890 | 886 | ||
| 891 | /* | 887 | /* |
