diff options
Diffstat (limited to 'drivers/net')
-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 | /* |