rt2800lib.h revision ad417a533a5bddedbf6b64c12cc26af7c80866f8
17ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz/* 296481b20f4d6df7021867ae9a9deaa989ec32e40Ivo van Doorn Copyright (C) 2010 Willow Garage <http://www.willowgarage.com> 396481b20f4d6df7021867ae9a9deaa989ec32e40Ivo van Doorn Copyright (C) 2010 Ivo van Doorn <IvDoorn@gmail.com> 47ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz Copyright (C) 2009 Bartlomiej Zolnierkiewicz 57ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 67ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz This program is free software; you can redistribute it and/or modify 77ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz it under the terms of the GNU General Public License as published by 87ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz the Free Software Foundation; either version 2 of the License, or 97ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz (at your option) any later version. 107ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 117ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz This program is distributed in the hope that it will be useful, 127ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz but WITHOUT ANY WARRANTY; without even the implied warranty of 137ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 147ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz GNU General Public License for more details. 157ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 167ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz You should have received a copy of the GNU General Public License 177ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz along with this program; if not, write to the 187ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz Free Software Foundation, Inc., 197ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 207ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz */ 217ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 227ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#ifndef RT2800LIB_H 237ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#define RT2800LIB_H 247ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 257ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstruct rt2800_ops { 267ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_read)(struct rt2x00_dev *rt2x00dev, 277ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 *value); 2831a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde void (*register_read_lock)(struct rt2x00_dev *rt2x00dev, 2931a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde const unsigned int offset, u32 *value); 307ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_write)(struct rt2x00_dev *rt2x00dev, 317ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 value); 327ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_write_lock)(struct rt2x00_dev *rt2x00dev, 337ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 value); 347ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 357ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_multiread)(struct rt2x00_dev *rt2x00dev, 367ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 377ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void *value, const u32 length); 387ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_multiwrite)(struct rt2x00_dev *rt2x00dev, 397ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 407ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const void *value, const u32 length); 417ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 427ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz int (*regbusy_read)(struct rt2x00_dev *rt2x00dev, 437ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 447ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2x00_field32 field, u32 *reg); 45e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde 46ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde void (*read_eeprom)(struct rt2x00_dev *rt2x00dev); 47ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde bool (*hwcrypt_disabled)(struct rt2x00_dev *rt2x00dev); 48ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde 49f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn int (*drv_write_firmware)(struct rt2x00_dev *rt2x00dev, 50f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len); 51e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde int (*drv_init_registers)(struct rt2x00_dev *rt2x00dev); 520c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn __le32 *(*drv_get_txwi)(struct queue_entry *entry); 537ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz}; 547ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 557ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, 567ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 577ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 *value) 587ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 59e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 607ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 617ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_read(rt2x00dev, offset, value); 627ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 637ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 6431a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerdestatic inline void rt2800_register_read_lock(struct rt2x00_dev *rt2x00dev, 6531a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde const unsigned int offset, 6631a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde u32 *value) 6731a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde{ 68e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 6931a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde 7031a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde rt2800ops->register_read_lock(rt2x00dev, offset, value); 7131a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde} 7231a4cf1f22677ba1ea90be055bc20aac25b8e7c4Gertjan van Wingerde 737ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev, 747ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 757ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 value) 767ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 77e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 787ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 797ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_write(rt2x00dev, offset, value); 807ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 817ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 827ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev, 837ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 847ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 value) 857ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 86e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 877ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 887ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_write_lock(rt2x00dev, offset, value); 897ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 907ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 917ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev, 927ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 937ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void *value, const u32 length) 947ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 95e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 967ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 977ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_multiread(rt2x00dev, offset, value, length); 987ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 997ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1007ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev, 1017ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 1027ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const void *value, 1037ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const u32 length) 1047ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 105e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 1067ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1077ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); 1087ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 1097ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1107ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, 1117ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 1127ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2x00_field32 field, 1137ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 *reg) 1147ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 115e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 1167ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 1177ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); 1187ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 1197ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 120ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerdestatic inline void rt2800_read_eeprom(struct rt2x00_dev *rt2x00dev) 121ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde{ 122ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 123ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde 124ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde rt2800ops->read_eeprom(rt2x00dev); 125ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde} 126ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde 127ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerdestatic inline bool rt2800_hwcrypt_disabled(struct rt2x00_dev *rt2x00dev) 128ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde{ 129ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 130ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde 131ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde return rt2800ops->hwcrypt_disabled(rt2x00dev); 132ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde} 133ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde 134f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doornstatic inline int rt2800_drv_write_firmware(struct rt2x00_dev *rt2x00dev, 135f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len) 136f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn{ 137e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 138f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn 139f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn return rt2800ops->drv_write_firmware(rt2x00dev, data, len); 140f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn} 141f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn 142e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerdestatic inline int rt2800_drv_init_registers(struct rt2x00_dev *rt2x00dev) 143e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde{ 144e796643eaf0889c346e6b69c5afe777c327b1919Ivo van Doorn const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; 145e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde 146e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde return rt2800ops->drv_init_registers(rt2x00dev); 147e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde} 148e3a896b9924d6dcd88ad16186d7ec77f32d12ef8Gertjan van Wingerde 1490c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doornstatic inline __le32 *rt2800_drv_get_txwi(struct queue_entry *entry) 1500c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn{ 1510c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn const struct rt2800_ops *rt2800ops = entry->queue->rt2x00dev->ops->drv; 1520c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn 1530c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn return rt2800ops->drv_get_txwi(entry); 1540c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn} 1550c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn 15689297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewiczvoid rt2800_mcu_request(struct rt2x00_dev *rt2x00dev, 15789297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz const u8 command, const u8 token, 15889297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz const u8 arg0, const u8 arg1); 15989297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz 1605ffddc498c700bb45ea55efc37746cb28d601766Ivo van Doornint rt2800_wait_csr_ready(struct rt2x00_dev *rt2x00dev); 161b9a07ae9d9e09662013992088fd58ffbcb2f9a30Ivo van Doornint rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev); 162b9a07ae9d9e09662013992088fd58ffbcb2f9a30Ivo van Doorn 163f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doornint rt2800_check_firmware(struct rt2x00_dev *rt2x00dev, 164f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len); 165f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doornint rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, 166f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn const u8 *data, const size_t len); 167f31c9a8c1380e20e95d06925f2e42baf61af4db7Ivo van Doorn 1680c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doornvoid rt2800_write_tx_data(struct queue_entry *entry, 1690c5879bc62f9b8eb31520a86213466f3a68ec794Ivo van Doorn struct txentry_desc *txdesc); 170748619220651a33c260ed6c0a7648e69324edd74Ivo van Doornvoid rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc); 17159679b91d1d33ebe90b72ffded9a57dba788fa6bGertjan van Wingerde 17231937c423ed3a13613b3aa7459e7405dd428f2d8Helmut Schaavoid rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32* txwi); 17396481b20f4d6df7021867ae9a9deaa989ec32e40Ivo van Doorn 174f0194b2d5d01b99555fd8a6e42281809086f1ab1Gertjan van Wingerdevoid rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc); 17569cf36a4523be026bc16743c5c989c5e82edb7d9Helmut Schaavoid rt2800_clear_beacon(struct queue_entry *entry); 176f0194b2d5d01b99555fd8a6e42281809086f1ab1Gertjan van Wingerde 177f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczextern const struct rt2x00debug rt2800_rt2x00debug; 178f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz 179f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_rfkill_poll(struct rt2x00_dev *rt2x00dev); 180f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev, 181f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_crypto *crypto, 182f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct ieee80211_key_conf *key); 183f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_config_pairwise_key(struct rt2x00_dev *rt2x00dev, 184f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_crypto *crypto, 185f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct ieee80211_key_conf *key); 186a2b1328a23c57fbb9c51e6660a11049c35d151f9Helmut Schaaint rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif, 187a2b1328a23c57fbb9c51e6660a11049c35d151f9Helmut Schaa struct ieee80211_sta *sta); 188a2b1328a23c57fbb9c51e6660a11049c35d151f9Helmut Schaaint rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, int wcid); 189f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_filter(struct rt2x00_dev *rt2x00dev, 190f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const unsigned int filter_flags); 191f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf, 192f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00intf_conf *conf, const unsigned int flags); 1930204464329c17ba6d293e1899f71223599a0e582Helmut Schaavoid rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp, 1940204464329c17ba6d293e1899f71223599a0e582Helmut Schaa u32 changed); 195f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant); 196f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config(struct rt2x00_dev *rt2x00dev, 197f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_conf *libconf, 198f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const unsigned int flags); 199f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_link_stats(struct rt2x00_dev *rt2x00dev, struct link_qual *qual); 200f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_reset_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual); 201f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual, 202f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const u32 count); 2039e33a3553821418b2c4f53d09311476c55176b13Helmut Schaavoid rt2800_gain_calibration(struct rt2x00_dev *rt2x00dev); 2042e9c43dd45ced5bd77c94d4216f96b4a49448d73John Livoid rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev); 205f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz 206b9a07ae9d9e09662013992088fd58ffbcb2f9a30Ivo van Doornint rt2800_enable_radio(struct rt2x00_dev *rt2x00dev); 207b9a07ae9d9e09662013992088fd58ffbcb2f9a30Ivo van Doornvoid rt2800_disable_radio(struct rt2x00_dev *rt2x00dev); 208fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewicz 20930e840346c516ad4e36f710fa485933ccc7afa66Bartlomiej Zolnierkiewiczint rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev); 21030e840346c516ad4e36f710fa485933ccc7afa66Bartlomiej Zolnierkiewiczvoid rt2800_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev); 211ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerde 212ad417a533a5bddedbf6b64c12cc26af7c80866f8Gertjan van Wingerdeint rt2800_probe_hw(struct rt2x00_dev *rt2x00dev); 21338bd7b8a0f485ba5ad514fcd621a1842ebadf9e6Bartlomiej Zolnierkiewicz 214e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaavoid rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx, u32 *iv32, 215e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa u16 *iv16); 216e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaaint rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value); 2178a3a3c85e44d58f5af0adac74a0b866ba89a1978Eliad Pellerint rt2800_conf_tx(struct ieee80211_hw *hw, 2188a3a3c85e44d58f5af0adac74a0b866ba89a1978Eliad Peller struct ieee80211_vif *vif, u16 queue_idx, 219e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa const struct ieee80211_tx_queue_params *params); 22037a41b4affa33bb237d3692bf51f1b5ebcaf29d8Eliad Pelleru64 rt2800_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif); 221e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaaint rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 222e783619ea8f1fb9fccec4931b0cf956de0ed1019Helmut Schaa enum ieee80211_ampdu_mlme_action action, 2230b01f030d38e00650e2db42da083d8647aad40a5Johannes Berg struct ieee80211_sta *sta, u16 tid, u16 *ssn, 2240b01f030d38e00650e2db42da083d8647aad40a5Johannes Berg u8 buf_size); 225977206d79fdc9fc1b153e0b52c56e0be59586f37Helmut Schaaint rt2800_get_survey(struct ieee80211_hw *hw, int idx, 226977206d79fdc9fc1b153e0b52c56e0be59586f37Helmut Schaa struct survey_info *survey); 227f7b395e9f898313c2add740af04361e59b06e68bJakub Kicinskivoid rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev); 2282ce33995216a088fc11e1f85768375580324174cBartlomiej Zolnierkiewicz 2297ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#endif /* RT2800LIB_H */ 230