drivers: power: report battery voltage in AOSP compatible format
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / net / wireless / libertas / cmd.h
CommitLineData
14e865ba
DW
1/* Copyright (C) 2007, Red Hat, Inc. */
2
3#ifndef _LBS_CMD_H_
4#define _LBS_CMD_H_
5
cc4b9d39
DW
6#include <net/cfg80211.h>
7
9e66e701 8#include "host.h"
14e865ba
DW
9#include "dev.h"
10
bca61f8a
HS
11
12/* Command & response transfer between host and card */
13
14struct cmd_ctrl_node {
15 struct list_head list;
16 int result;
17 /* command response */
18 int (*callback)(struct lbs_private *,
19 unsigned long,
20 struct cmd_header *);
21 unsigned long callback_arg;
22 /* command data */
23 struct cmd_header *cmdbuf;
24 /* wait queue */
25 u16 cmdwaitqwoken;
26 wait_queue_head_t cmdwait_q;
27};
28
29
f15ebb63 30/* lbs_cmd() infers the size of the buffer to copy data back into, from
bca61f8a 31 the size of the target of the pointer. Since the command to be sent
f15ebb63
DW
32 may often be smaller, that size is set in cmd->size by the caller.*/
33#define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg) ({ \
34 uint16_t __sz = le16_to_cpu((cmd)->hdr.size); \
35 (cmd)->hdr.size = cpu_to_le16(sizeof(*(cmd))); \
36 __lbs_cmd(priv, cmdnr, &(cmd)->hdr, __sz, cb, cb_arg); \
37})
14e865ba 38
689442dc
DW
39#define lbs_cmd_with_response(priv, cmdnr, cmd) \
40 lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd))
7e226272 41
8db4a2b9
HS
42void lbs_cmd_async(struct lbs_private *priv, uint16_t command,
43 struct cmd_header *in_cmd, int in_cmd_size);
44
7ad994de 45int __lbs_cmd(struct lbs_private *priv, uint16_t command,
7e226272 46 struct cmd_header *in_cmd, int in_cmd_size,
7ad994de 47 int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
14e865ba
DW
48 unsigned long callback_arg);
49
6d898b19
HS
50struct cmd_ctrl_node *__lbs_cmd_async(struct lbs_private *priv,
51 uint16_t command, struct cmd_header *in_cmd, int in_cmd_size,
52 int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
53 unsigned long callback_arg);
54
bca61f8a
HS
55int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
56 struct cmd_header *resp);
0112c9e9 57
bca61f8a
HS
58int lbs_allocate_cmd_buffer(struct lbs_private *priv);
59int lbs_free_cmd_buffer(struct lbs_private *priv);
0112c9e9 60
bca61f8a 61int lbs_execute_next_command(struct lbs_private *priv);
df90d843
DD
62void __lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
63 int result);
bca61f8a
HS
64void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
65 int result);
66int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len);
3ed6e080 67
3ed6e080 68
bca61f8a 69/* From cmdresp.c */
a8bdcd71 70
bca61f8a 71void lbs_mac_event_disconnected(struct lbs_private *priv);
6e66f03f 72
301eacbf 73
bca61f8a
HS
74
75/* Events */
76
77int lbs_process_event(struct lbs_private *priv, u32 event);
78
79
80/* Actual commands */
81
82int lbs_update_hw_spec(struct lbs_private *priv);
8e3c91bb 83
2dd4b262
DW
84int lbs_set_channel(struct lbs_private *priv, u8 channel);
85
bca61f8a
HS
86int lbs_update_channel(struct lbs_private *priv);
87
88int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria,
89 struct wol_config *p_wol_config);
90
91int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
92 struct sleep_params *sp);
93
bca61f8a
HS
94void lbs_ps_confirm_sleep(struct lbs_private *priv);
95
96int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on);
97
98void lbs_set_mac_control(struct lbs_private *priv);
871fc09f 99int lbs_set_mac_control_sync(struct lbs_private *priv);
bca61f8a
HS
100
101int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel,
102 s16 *maxlevel);
103
104int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val);
105
106int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val);
107
108
bca61f8a
HS
109/* Commands only used in wext.c, assoc. and scan.c */
110
111int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
112 int8_t p1, int8_t p2);
113
114int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
115 int8_t p2, int usesnr);
116
117int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
6ce4fd2a 118
85319f93
JC
119int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv,
120 uint16_t cmd_action);
bca61f8a 121
87c8c72d
DW
122int lbs_set_tx_power(struct lbs_private *priv, s16 dbm);
123
bca61f8a 124int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
39fcf7a3 125
1311843c
AK
126int lbs_set_host_sleep(struct lbs_private *priv, int host_sleep);
127
a45b6f4f
DW
128int lbs_set_monitor_mode(struct lbs_private *priv, int enable);
129
9fb7663d
DW
130int lbs_get_rssi(struct lbs_private *priv, s8 *snr, s8 *nf);
131
20d2ebe5 132int lbs_set_11d_domain_info(struct lbs_private *priv);
cc4b9d39 133
4c7c6e00
DW
134int lbs_get_reg(struct lbs_private *priv, u16 reg, u16 offset, u32 *value);
135
136int lbs_set_reg(struct lbs_private *priv, u16 reg, u16 offset, u32 value);
137
0bb64087
DW
138int lbs_set_ps_mode(struct lbs_private *priv, u16 cmd_action, bool block);
139
14e865ba 140#endif /* _LBS_CMD_H */