rt2800lib.h revision 2ce33995216a088fc11e1f85768375580324174c
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); 267ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_write)(struct rt2x00_dev *rt2x00dev, 277ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 value); 287ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_write_lock)(struct rt2x00_dev *rt2x00dev, 297ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, u32 value); 307ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 317ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_multiread)(struct rt2x00_dev *rt2x00dev, 327ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 337ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void *value, const u32 length); 347ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void (*register_multiwrite)(struct rt2x00_dev *rt2x00dev, 357ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 367ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const void *value, const u32 length); 377ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 387ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz int (*regbusy_read)(struct rt2x00_dev *rt2x00dev, 397ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 407ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2x00_field32 field, u32 *reg); 417ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz}; 427ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 437ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, 447ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 457ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 *value) 467ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 477ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 487ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 497ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_read(rt2x00dev, offset, value); 507ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 517ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 527ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_write(struct rt2x00_dev *rt2x00dev, 537ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 547ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 value) 557ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 567ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 577ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 587ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_write(rt2x00dev, offset, value); 597ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 607ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 617ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_write_lock(struct rt2x00_dev *rt2x00dev, 627ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 637ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 value) 647ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 657ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 667ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 677ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_write_lock(rt2x00dev, offset, value); 687ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 697ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 707ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_multiread(struct rt2x00_dev *rt2x00dev, 717ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 727ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz void *value, const u32 length) 737ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 747ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 757ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 767ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_multiread(rt2x00dev, offset, value, length); 777ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 787ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 797ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline void rt2800_register_multiwrite(struct rt2x00_dev *rt2x00dev, 807ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 817ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const void *value, 827ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const u32 length) 837ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 847ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 857ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 867ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz rt2800ops->register_multiwrite(rt2x00dev, offset, value, length); 877ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 887ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 897ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewiczstatic inline int rt2800_regbusy_read(struct rt2x00_dev *rt2x00dev, 907ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const unsigned int offset, 917ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2x00_field32 field, 927ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz u32 *reg) 937ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz{ 947ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz const struct rt2800_ops *rt2800ops = rt2x00dev->priv; 957ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 967ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz return rt2800ops->regbusy_read(rt2x00dev, offset, field, reg); 977ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz} 987ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz 9989297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewiczvoid rt2800_mcu_request(struct rt2x00_dev *rt2x00dev, 10089297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz const u8 command, const u8 token, 10189297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz const u8 arg0, const u8 arg1); 10289297425c2104b187c25d6260a41345c491c8f18Bartlomiej Zolnierkiewicz 103f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczextern const struct rt2x00debug rt2800_rt2x00debug; 104f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz 105f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_rfkill_poll(struct rt2x00_dev *rt2x00dev); 106f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_init_led(struct rt2x00_dev *rt2x00dev, 107f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00_led *led, enum led_type type); 108f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev, 109f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_crypto *crypto, 110f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct ieee80211_key_conf *key); 111f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczint rt2800_config_pairwise_key(struct rt2x00_dev *rt2x00dev, 112f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_crypto *crypto, 113f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct ieee80211_key_conf *key); 114f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_filter(struct rt2x00_dev *rt2x00dev, 115f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const unsigned int filter_flags); 116f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf, 117f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00intf_conf *conf, const unsigned int flags); 118f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp); 119f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant); 120f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_config(struct rt2x00_dev *rt2x00dev, 121f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz struct rt2x00lib_conf *libconf, 122f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const unsigned int flags); 123f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_link_stats(struct rt2x00_dev *rt2x00dev, struct link_qual *qual); 124f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_reset_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual); 125f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewiczvoid rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual, 126f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz const u32 count); 127f445061630c7a4a85193fdef006234f94f71c366Bartlomiej Zolnierkiewicz 128fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewiczint rt2800_init_registers(struct rt2x00_dev *rt2x00dev); 129fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewiczint rt2800_init_bbp(struct rt2x00_dev *rt2x00dev); 130fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewiczint rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev); 131fcf5154118849cca3cdf424e83f863225d8173e7Bartlomiej Zolnierkiewicz 1322ce33995216a088fc11e1f85768375580324174cBartlomiej Zolnierkiewiczextern const struct ieee80211_ops rt2800_mac80211_ops; 1332ce33995216a088fc11e1f85768375580324174cBartlomiej Zolnierkiewicz 1347ef5cc92bac940419f022e11115a28daea53814fBartlomiej Zolnierkiewicz#endif /* RT2800LIB_H */ 135