162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * This file is part of wl18xx 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2012 Texas Instruments. All rights reserved. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __WL18XX_EVENT_H__ 962306a36Sopenharmony_ci#define __WL18XX_EVENT_H__ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "../wlcore/wlcore.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cienum { 1462306a36Sopenharmony_ci SCAN_COMPLETE_EVENT_ID = BIT(8), 1562306a36Sopenharmony_ci RADAR_DETECTED_EVENT_ID = BIT(9), 1662306a36Sopenharmony_ci CHANNEL_SWITCH_COMPLETE_EVENT_ID = BIT(10), 1762306a36Sopenharmony_ci BSS_LOSS_EVENT_ID = BIT(11), 1862306a36Sopenharmony_ci MAX_TX_FAILURE_EVENT_ID = BIT(12), 1962306a36Sopenharmony_ci DUMMY_PACKET_EVENT_ID = BIT(13), 2062306a36Sopenharmony_ci INACTIVE_STA_EVENT_ID = BIT(14), 2162306a36Sopenharmony_ci PEER_REMOVE_COMPLETE_EVENT_ID = BIT(15), 2262306a36Sopenharmony_ci PERIODIC_SCAN_COMPLETE_EVENT_ID = BIT(16), 2362306a36Sopenharmony_ci BA_SESSION_RX_CONSTRAINT_EVENT_ID = BIT(17), 2462306a36Sopenharmony_ci REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID = BIT(18), 2562306a36Sopenharmony_ci DFS_CHANNELS_CONFIG_COMPLETE_EVENT = BIT(19), 2662306a36Sopenharmony_ci PERIODIC_SCAN_REPORT_EVENT_ID = BIT(20), 2762306a36Sopenharmony_ci RX_BA_WIN_SIZE_CHANGE_EVENT_ID = BIT(21), 2862306a36Sopenharmony_ci SMART_CONFIG_SYNC_EVENT_ID = BIT(22), 2962306a36Sopenharmony_ci SMART_CONFIG_DECODE_EVENT_ID = BIT(23), 3062306a36Sopenharmony_ci TIME_SYNC_EVENT_ID = BIT(24), 3162306a36Sopenharmony_ci FW_LOGGER_INDICATION = BIT(25), 3262306a36Sopenharmony_ci}; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cienum wl18xx_radar_types { 3562306a36Sopenharmony_ci RADAR_TYPE_NONE, 3662306a36Sopenharmony_ci RADAR_TYPE_REGULAR, 3762306a36Sopenharmony_ci RADAR_TYPE_CHIRP 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cistruct wl18xx_event_mailbox { 4162306a36Sopenharmony_ci __le32 events_vector; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci u8 number_of_scan_results; 4462306a36Sopenharmony_ci u8 number_of_sched_scan_results; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci __le16 channel_switch_role_id_bitmap; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci s8 rssi_snr_trigger_metric[NUM_OF_RSSI_SNR_TRIGGERS]; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci /* bitmap of removed links */ 5162306a36Sopenharmony_ci __le32 hlid_removed_bitmap; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci /* rx ba constraint */ 5462306a36Sopenharmony_ci __le16 rx_ba_role_id_bitmap; /* 0xfff means any role. */ 5562306a36Sopenharmony_ci __le16 rx_ba_allowed_bitmap; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci /* bitmap of roc completed (by role id) */ 5862306a36Sopenharmony_ci __le16 roc_completed_bitmap; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci /* bitmap of stations (by role id) with bss loss */ 6162306a36Sopenharmony_ci __le16 bss_loss_bitmap; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci /* bitmap of stations (by HLID) which exceeded max tx retries */ 6462306a36Sopenharmony_ci __le16 tx_retry_exceeded_bitmap; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci /* time sync high msb*/ 6762306a36Sopenharmony_ci __le16 time_sync_tsf_high_msb; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci /* bitmap of inactive stations (by HLID) */ 7062306a36Sopenharmony_ci __le16 inactive_sta_bitmap; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci /* time sync high lsb*/ 7362306a36Sopenharmony_ci __le16 time_sync_tsf_high_lsb; 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci /* rx BA win size indicated by RX_BA_WIN_SIZE_CHANGE_EVENT_ID */ 7662306a36Sopenharmony_ci u8 rx_ba_role_id; 7762306a36Sopenharmony_ci u8 rx_ba_link_id; 7862306a36Sopenharmony_ci u8 rx_ba_win_size; 7962306a36Sopenharmony_ci u8 padding; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci /* smart config */ 8262306a36Sopenharmony_ci u8 sc_ssid_len; 8362306a36Sopenharmony_ci u8 sc_pwd_len; 8462306a36Sopenharmony_ci u8 sc_token_len; 8562306a36Sopenharmony_ci u8 padding1; 8662306a36Sopenharmony_ci u8 sc_ssid[32]; 8762306a36Sopenharmony_ci u8 sc_pwd[64]; 8862306a36Sopenharmony_ci u8 sc_token[32]; 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci /* smart config sync channel */ 9162306a36Sopenharmony_ci u8 sc_sync_channel; 9262306a36Sopenharmony_ci u8 sc_sync_band; 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci /* time sync low msb*/ 9562306a36Sopenharmony_ci __le16 time_sync_tsf_low_msb; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci /* radar detect */ 9862306a36Sopenharmony_ci u8 radar_channel; 9962306a36Sopenharmony_ci u8 radar_type; 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci /* time sync low lsb*/ 10262306a36Sopenharmony_ci __le16 time_sync_tsf_low_lsb; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci} __packed; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ciint wl18xx_wait_for_event(struct wl1271 *wl, enum wlcore_wait_event event, 10762306a36Sopenharmony_ci bool *timeout); 10862306a36Sopenharmony_ciint wl18xx_process_mailbox_events(struct wl1271 *wl); 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci#endif 111