130
128
wmi_set_params_event_rx(struct wmi_t *wmip, u8 *datap, u32 len);
133
wmi_acm_reject_event_rx(struct wmi_t *wmip, u8 *datap, u32 len);
135
#ifdef CONFIG_HOST_GPIO_SUPPORT
136
static int wmi_gpio_intr_rx(struct wmi_t *wmip, u8 *datap, int len);
137
static int wmi_gpio_data_rx(struct wmi_t *wmip, u8 *datap, int len);
138
static int wmi_gpio_ack_rx(struct wmi_t *wmip, u8 *datap, int len);
139
#endif /* CONFIG_HOST_GPIO_SUPPORT */
141
131
#ifdef CONFIG_HOST_TCMD_SUPPORT
188
178
static int wmi_peer_node_event_rx (struct wmi_t *wmip, u8 *datap,
190
#ifdef ATH_AR6K_11N_SUPPORT
191
180
static int wmi_addba_req_event_rx(struct wmi_t *, u8 *, int);
192
181
static int wmi_addba_resp_event_rx(struct wmi_t *, u8 *, int);
193
182
static int wmi_delba_req_event_rx(struct wmi_t *, u8 *, int);
194
183
static int wmi_btcoex_config_event_rx(struct wmi_t *wmip, u8 *datap, int len);
195
184
static int wmi_btcoex_stats_event_rx(struct wmi_t *wmip, u8 *datap, int len);
197
185
static int wmi_hci_event_rx(struct wmi_t *, u8 *, int);
199
187
#ifdef WAPI_ENABLE
865
848
status = wmi_dset_data_req_rx(wmip, datap, len);
867
850
#endif /* CONFIG_HOST_DSET_SUPPORT */
868
#ifdef CONFIG_HOST_GPIO_SUPPORT
869
case (WMIX_GPIO_INTR_EVENTID):
870
wmi_gpio_intr_rx(wmip, datap, len);
872
case (WMIX_GPIO_DATA_EVENTID):
873
wmi_gpio_data_rx(wmip, datap, len);
875
case (WMIX_GPIO_ACK_EVENTID):
876
wmi_gpio_ack_rx(wmip, datap, len);
878
#endif /* CONFIG_HOST_GPIO_SUPPORT */
879
851
case (WMIX_HB_CHALLENGE_RESP_EVENTID):
880
852
wmi_hbChallengeResp_rx(wmip, datap, len);
967
939
case (WMI_READY_EVENTID):
968
940
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_READY_EVENTID\n", DBGARG));
969
941
status = wmi_ready_event_rx(wmip, datap, len);
970
A_WMI_SEND_EVENT_TO_APP(wmip->wmi_devt, id, datap, len);
971
942
A_WMI_DBGLOG_INIT_DONE(wmip->wmi_devt);
973
944
case (WMI_CONNECT_EVENTID):
974
945
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_CONNECT_EVENTID\n", DBGARG));
975
946
status = wmi_connect_event_rx(wmip, datap, len);
976
A_WMI_SEND_GENERIC_EVENT_TO_APP(wmip->wmi_devt, id, datap, len);
978
948
case (WMI_DISCONNECT_EVENTID):
979
949
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_DISCONNECT_EVENTID\n", DBGARG));
980
950
status = wmi_disconnect_event_rx(wmip, datap, len);
981
A_WMI_SEND_EVENT_TO_APP(wmip->wmi_devt, id, datap, len);
983
952
case (WMI_PEER_NODE_EVENTID):
984
953
A_DPRINTF (DBG_WMI, (DBGFMT "WMI_PEER_NODE_EVENTID\n", DBGARG));
985
954
status = wmi_peer_node_event_rx(wmip, datap, len);
986
A_WMI_SEND_EVENT_TO_APP(wmip->wmi_devt, id, datap, len);
988
956
case (WMI_TKIP_MICERR_EVENTID):
989
957
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_TKIP_MICERR_EVENTID\n", DBGARG));
1024
991
case (WMI_PSTREAM_TIMEOUT_EVENTID):
1025
992
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_PSTREAM_TIMEOUT_EVENTID\n", DBGARG));
1026
993
status = wmi_pstream_timeout_event_rx(wmip, datap, len);
1027
/* pstreams are fatpipe abstractions that get implicitly created.
1028
* User apps only deal with thinstreams. creation of a thinstream
1029
* by the user or data traffic flow in an AC triggers implicit
1030
* pstream creation. Do we need to send this event to App..?
1031
* no harm in sending it.
1033
A_WMI_SEND_EVENT_TO_APP(wmip->wmi_devt, id, datap, len);
1035
995
case (WMI_NEIGHBOR_REPORT_EVENTID):
1036
996
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_NEIGHBOR_REPORT_EVENTID\n", DBGARG));
1133
1089
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_SET_PARAMS_REPLY Event\n", DBGARG));
1134
1090
status = wmi_set_params_event_rx(wmip, datap, len);
1136
case (WMI_ACM_REJECT_EVENTID):
1137
A_DPRINTF(DBG_WMI, (DBGFMT "WMI_SET_PARAMS_REPLY Event\n", DBGARG));
1138
status = wmi_acm_reject_event_rx(wmip, datap, len);
1140
#ifdef ATH_AR6K_11N_SUPPORT
1141
1092
case (WMI_ADDBA_REQ_EVENTID):
1142
1093
status = wmi_addba_req_event_rx(wmip, datap, len);
2301
#ifdef CONFIG_HOST_GPIO_SUPPORT
2303
wmi_gpio_intr_rx(struct wmi_t *wmip, u8 *datap, int len)
2305
WMIX_GPIO_INTR_EVENT *gpio_intr = (WMIX_GPIO_INTR_EVENT *)datap;
2308
(DBGFMT "Enter - intrmask=0x%x input=0x%x.\n", DBGARG,
2309
gpio_intr->intr_mask, gpio_intr->input_values));
2311
A_WMI_GPIO_INTR_RX(gpio_intr->intr_mask, gpio_intr->input_values);
2317
wmi_gpio_data_rx(struct wmi_t *wmip, u8 *datap, int len)
2319
WMIX_GPIO_DATA_EVENT *gpio_data = (WMIX_GPIO_DATA_EVENT *)datap;
2322
(DBGFMT "Enter - reg=%d value=0x%x\n", DBGARG,
2323
gpio_data->reg_id, gpio_data->value));
2325
A_WMI_GPIO_DATA_RX(gpio_data->reg_id, gpio_data->value);
2331
wmi_gpio_ack_rx(struct wmi_t *wmip, u8 *datap, int len)
2333
A_DPRINTF(DBG_WMI, (DBGFMT "Enter\n", DBGARG));
2335
A_WMI_GPIO_ACK_RX();
2339
#endif /* CONFIG_HOST_GPIO_SUPPORT */
2342
2252
* Called to send a wmi command. Command specific data is already built
2343
2253
* on osbuf and current osbuf->data points to it.
4282
4193
NO_SYNC_WMIFLAG));
4285
#ifdef CONFIG_HOST_GPIO_SUPPORT
4286
/* Send a command to Target to change GPIO output pins. */
4288
wmi_gpio_output_set(struct wmi_t *wmip,
4295
WMIX_GPIO_OUTPUT_SET_CMD *output_set;
4298
size = sizeof(*output_set);
4301
(DBGFMT "Enter - set=0x%x clear=0x%x enb=0x%x dis=0x%x\n", DBGARG,
4302
set_mask, clear_mask, enable_mask, disable_mask));
4304
osbuf = A_NETBUF_ALLOC(size);
4305
if (osbuf == NULL) {
4308
A_NETBUF_PUT(osbuf, size);
4309
output_set = (WMIX_GPIO_OUTPUT_SET_CMD *)(A_NETBUF_DATA(osbuf));
4311
output_set->set_mask = set_mask;
4312
output_set->clear_mask = clear_mask;
4313
output_set->enable_mask = enable_mask;
4314
output_set->disable_mask = disable_mask;
4316
return (wmi_cmd_send_xtnd(wmip, osbuf, WMIX_GPIO_OUTPUT_SET_CMDID,
4320
/* Send a command to the Target requesting state of the GPIO input pins */
4322
wmi_gpio_input_get(struct wmi_t *wmip)
4324
A_DPRINTF(DBG_WMI, (DBGFMT "Enter\n", DBGARG));
4326
return wmi_simple_cmd_xtnd(wmip, WMIX_GPIO_INPUT_GET_CMDID);
4329
/* Send a command to the Target that changes the value of a GPIO register. */
4331
wmi_gpio_register_set(struct wmi_t *wmip,
4336
WMIX_GPIO_REGISTER_SET_CMD *register_set;
4339
size = sizeof(*register_set);
4342
(DBGFMT "Enter - reg=%d value=0x%x\n", DBGARG, gpioreg_id, value));
4344
osbuf = A_NETBUF_ALLOC(size);
4345
if (osbuf == NULL) {
4348
A_NETBUF_PUT(osbuf, size);
4349
register_set = (WMIX_GPIO_REGISTER_SET_CMD *)(A_NETBUF_DATA(osbuf));
4351
register_set->gpioreg_id = gpioreg_id;
4352
register_set->value = value;
4354
return (wmi_cmd_send_xtnd(wmip, osbuf, WMIX_GPIO_REGISTER_SET_CMDID,
4358
/* Send a command to the Target to fetch the value of a GPIO register. */
4360
wmi_gpio_register_get(struct wmi_t *wmip,
4364
WMIX_GPIO_REGISTER_GET_CMD *register_get;
4367
size = sizeof(*register_get);
4369
A_DPRINTF(DBG_WMI, (DBGFMT "Enter - reg=%d\n", DBGARG, gpioreg_id));
4371
osbuf = A_NETBUF_ALLOC(size);
4372
if (osbuf == NULL) {
4375
A_NETBUF_PUT(osbuf, size);
4376
register_get = (WMIX_GPIO_REGISTER_GET_CMD *)(A_NETBUF_DATA(osbuf));
4378
register_get->gpioreg_id = gpioreg_id;
4380
return (wmi_cmd_send_xtnd(wmip, osbuf, WMIX_GPIO_REGISTER_GET_CMDID,
4384
/* Send a command to the Target acknowledging some GPIO interrupts. */
4386
wmi_gpio_intr_ack(struct wmi_t *wmip,
4390
WMIX_GPIO_INTR_ACK_CMD *intr_ack;
4393
size = sizeof(*intr_ack);
4395
A_DPRINTF(DBG_WMI, (DBGFMT "Enter ack_mask=0x%x\n", DBGARG, ack_mask));
4397
osbuf = A_NETBUF_ALLOC(size);
4398
if (osbuf == NULL) {
4401
A_NETBUF_PUT(osbuf, size);
4402
intr_ack = (WMIX_GPIO_INTR_ACK_CMD *)(A_NETBUF_DATA(osbuf));
4404
intr_ack->ack_mask = ack_mask;
4406
return (wmi_cmd_send_xtnd(wmip, osbuf, WMIX_GPIO_INTR_ACK_CMDID,
4409
#endif /* CONFIG_HOST_GPIO_SUPPORT */
4412
4197
wmi_set_access_params_cmd(struct wmi_t *wmip, u8 ac, u16 txop, u8 eCWmin,
4413
4198
u8 eCWmax, u8 aifsn)