rt2800lib.h revision 0c5879bc62f9b8eb31520a86213466f3a68ec794
17ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz/* 27ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz Copyright (C) 2009 Bartlomiej Zolnierkiewicz 37ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 47ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz This program is free software; you can redistribute it and/or modify 57ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz it under the terms of the GNU General Public License as published by 67ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz the Free Software Foundation; either version 2 of the License, or 77ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz (at your option) any later version. 87ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 97ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz This program is distributed in the hope that it will be useful, 107ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz but WITHOUT ANY WARRANTY; without even the implied warranty of 117ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 127ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz GNU General Public License for more details. 137ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 147ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz You should have received a copy of the GNU General Public License 157ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz along with this program; if not, write to the 167ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz Free Software Foundation, Inc., 177ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 187ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz */ 197ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 207ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#ifndef RT2800LIB_H 217ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#define RT2800LIB_H 227ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 237ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstruct rt2800_ops { 247ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_read)(struct rt2x00_dev *rt2x00dev, 257ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 *value); 2631a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde void (*register_read_lock)(struct rt2x00_dev *rt2x00dev, 2731a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde const unsigned int offset, u32 *value); 287ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_write)(struct rt2x00_dev *rt2x00dev, 297ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 value); 307ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_write_lock)(struct rt2x00_dev *rt2x00dev, 317ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 value); 327ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 337ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_multiread)(struct rt2x00_dev *rt2x00dev, 347ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 357ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void *value, const u32 length); 367ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_multiwrite)(struct rt2x00_dev *rt2x00dev, 377ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 387ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const void *value, const u32 length); 397ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 407ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz int (*regbusy_read)(struct rt2x00_dev *rt2x00dev, 417ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 427ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2x00_field32 field, u32 *reg); 43e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde 44f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn int (*drv_write_firmware)(struct rt2x00_dev *rt2x00dev, 45f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len); 46e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde int (*drv_init_registers)(struct rt2x00_dev *rt2x00dev); 470c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn __le32 *(*drv_get_txwi)(struct queue_entry *entry); 487ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz}; 497ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 507ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, 517ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 527ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 *value) 537ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 54e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 557ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 567ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_read(rt2x00dev, offset, value); 577ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 587ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 5931a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerdestatic inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev, 6031a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde const unsigned int offset, 6131a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde u32 *value) 6231a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde{ 63e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 6431a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde 6531a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde rt2800ops->register_read_lock(rt2x00dev, offset, value); 6631a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde} 6731a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde 687ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev, 697ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 707ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 value) 717ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 72e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 737ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 747ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_write(rt2x00dev, offset, value); 757ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 767ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 777ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev, 787ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 797ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 value) 807ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 81e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 827ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 837ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_write_lock(rt2x00dev, offset, value); 847ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 857ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 867ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev, 877ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 887ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void *value, const u32 length) 897ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 90e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 917ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 927ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_multiread(rt2x00dev, offset, value, length); 937ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 947ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 957ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev, 967ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 977ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const void *value, 987ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const u32 length) 997ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 100e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 1017ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1027ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); 1037ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 1047ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1057ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, 1067ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 1077ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2x00_field32 field, 1087ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 *reg) 1097ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 110e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 1117ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1127ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); 1137ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 1147ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 115f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doornstatic inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev, 116f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len) 117f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn{ 118e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 119f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn 120f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn return rt2800ops->drv_write_firmware(rt2x00dev, data, len); 121f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn} 122f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn 123e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerdestatic inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev) 124e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde{ 125e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 126e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde 127e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde return rt2800ops->drv_init_registers(rt2x00dev); 128e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde} 129e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde 1300c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doornstatic inline __le32 *rt2800_drv_get_txwi(struct queue_entry *entry) 1310c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn{ 1320c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn const struct rt2800_ops *rt2800ops = entry->queue->rt2x00dev->ops->drv; 1330c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn 1340c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn return rt2800ops->drv_get_txwi(entry); 1350c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn} 1360c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn 13789297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewiczvoid rt2800_mcu_request(struct rt2x00_dev *rt2x00dev, 13889297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz const u8 command, const u8 token, 13989297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz const u8 arg0, const u8 arg1); 14089297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz 141f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doornint rt2800_check_firmware(struct rt2x00_dev *rt2x00dev, 142f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len); 143f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doornint rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, 144f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len); 145f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn 1460c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doornvoid rt2800_write_tx_data(struct queue_entry *entry, 1470c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn struct txentry_desc *txdesc); 148748619220651a33c260ed6c0a7648e69324edd74Ivo van Doornvoid rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc); 14959679b91d1d33ebe90b72ffded9a57dba788fa6bGertjan van Wingerde 150f0194b2d5d01b99555fd8a6e42281809086f1ab1Gertjan van Wingerdevoid rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc); 151f0194b2d5d01b99555fd8a6e42281809086f1ab1Gertjan van Wingerde 152f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczextern const struct rt2x00debug rt2800_rt2x00debug; 153f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz 154f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_rfkill_poll(struct rt2x00_dev *rt2x00dev); 155f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev, 156f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_crypto *crypto, 157f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct ieee80211_key_conf *key); 158f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_config_pairwise_key(struct rt2x00_dev *rt2x00dev, 159f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_crypto *crypto, 160f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct ieee80211_key_conf *key); 161f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_filter(struct rt2x00_dev *rt2x00dev, 162f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const unsigned int filter_flags); 163f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf, 164f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00intf_conf *conf, const unsigned int flags); 165f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp); 166f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant); 167f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config(struct rt2x00_dev *rt2x00dev, 168f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_conf *libconf, 169f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const unsigned int flags); 170f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_link_stats(struct rt2x00_dev *rt2x00dev, struct link_qual *qual); 171f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_reset_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual); 172f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual, 173f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const u32 count); 174f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz 175fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewiczint rt2800_init_registers(struct rt2x00_dev *rt2x00dev); 176fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewiczint rt2800_init_bbp(struct rt2x00_dev *rt2x00dev); 177fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewiczint rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev); 17867a4c1e24d58e0d88ed88539641631f6fc8a0cfdGertjan van Wingerdeint rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev); 179fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewicz 18030e840346c516ad4e36f710fa485933ccc7afa66Bartlomiej Zolnierkiewiczint rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev); 18130e840346c516ad4e36f710fa485933ccc7afa66Bartlomiej Zolnierkiewiczvoid rt2800_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev); 18238bd7b8a0f485ba5ad514fcd621a1842ebadf9e6Bartlomiej Zolnierkiewiczint rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev); 18338bd7b8a0f485ba5ad514fcd621a1842ebadf9e6Bartlomiej Zolnierkiewiczint rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev); 1844da2933fe1f2d3d9ed548660f5c02a9b0608a8c7Bartlomiej Zolnierkiewiczint rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev); 18538bd7b8a0f485ba5ad514fcd621a1842ebadf9e6Bartlomiej Zolnierkiewicz 186e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaavoid rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, u32 *iv32, 187e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa u16 *iv16); 188e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaaint rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value); 189e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaaint rt2800_conf_tx(struct ieee80211_hw *hw, u16 queue_idx, 190e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa const struct ieee80211_tx_queue_params *params); 191e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaau64 rt2800_get_tsf(struct ieee80211_hw *hw); 192e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaaint rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 193e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa enum ieee80211_ampdu_mlme_action action, 194e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa struct ieee80211_sta *sta, u16 tid, u16 *ssn); 1952ce33995216a088fc11e1f85768375580324174cBartlomiej Zolnierkiewicz 1967ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#endif /* RT2800LIB_H */ 197