162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * This file is part of wl12xx 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2012 Texas Instruments. All rights reserved. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __WL12XX_EVENT_H__ 962306a36Sopenharmony_ci#define __WL12XX_EVENT_H__ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "../wlcore/wlcore.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cienum { 1462306a36Sopenharmony_ci MEASUREMENT_START_EVENT_ID = BIT(8), 1562306a36Sopenharmony_ci MEASUREMENT_COMPLETE_EVENT_ID = BIT(9), 1662306a36Sopenharmony_ci SCAN_COMPLETE_EVENT_ID = BIT(10), 1762306a36Sopenharmony_ci WFD_DISCOVERY_COMPLETE_EVENT_ID = BIT(11), 1862306a36Sopenharmony_ci AP_DISCOVERY_COMPLETE_EVENT_ID = BIT(12), 1962306a36Sopenharmony_ci RESERVED1 = BIT(13), 2062306a36Sopenharmony_ci PSPOLL_DELIVERY_FAILURE_EVENT_ID = BIT(14), 2162306a36Sopenharmony_ci ROLE_STOP_COMPLETE_EVENT_ID = BIT(15), 2262306a36Sopenharmony_ci RADAR_DETECTED_EVENT_ID = BIT(16), 2362306a36Sopenharmony_ci CHANNEL_SWITCH_COMPLETE_EVENT_ID = BIT(17), 2462306a36Sopenharmony_ci BSS_LOSE_EVENT_ID = BIT(18), 2562306a36Sopenharmony_ci REGAINED_BSS_EVENT_ID = BIT(19), 2662306a36Sopenharmony_ci MAX_TX_RETRY_EVENT_ID = BIT(20), 2762306a36Sopenharmony_ci DUMMY_PACKET_EVENT_ID = BIT(21), 2862306a36Sopenharmony_ci SOFT_GEMINI_SENSE_EVENT_ID = BIT(22), 2962306a36Sopenharmony_ci CHANGE_AUTO_MODE_TIMEOUT_EVENT_ID = BIT(23), 3062306a36Sopenharmony_ci SOFT_GEMINI_AVALANCHE_EVENT_ID = BIT(24), 3162306a36Sopenharmony_ci PLT_RX_CALIBRATION_COMPLETE_EVENT_ID = BIT(25), 3262306a36Sopenharmony_ci INACTIVE_STA_EVENT_ID = BIT(26), 3362306a36Sopenharmony_ci PEER_REMOVE_COMPLETE_EVENT_ID = BIT(27), 3462306a36Sopenharmony_ci PERIODIC_SCAN_COMPLETE_EVENT_ID = BIT(28), 3562306a36Sopenharmony_ci PERIODIC_SCAN_REPORT_EVENT_ID = BIT(29), 3662306a36Sopenharmony_ci BA_SESSION_RX_CONSTRAINT_EVENT_ID = BIT(30), 3762306a36Sopenharmony_ci REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID = BIT(31), 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cistruct wl12xx_event_mailbox { 4162306a36Sopenharmony_ci __le32 events_vector; 4262306a36Sopenharmony_ci __le32 events_mask; 4362306a36Sopenharmony_ci __le32 reserved_1; 4462306a36Sopenharmony_ci __le32 reserved_2; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci u8 number_of_scan_results; 4762306a36Sopenharmony_ci u8 scan_tag; 4862306a36Sopenharmony_ci u8 completed_scan_status; 4962306a36Sopenharmony_ci u8 reserved_3; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci u8 soft_gemini_sense_info; 5262306a36Sopenharmony_ci u8 soft_gemini_protective_info; 5362306a36Sopenharmony_ci s8 rssi_snr_trigger_metric[NUM_OF_RSSI_SNR_TRIGGERS]; 5462306a36Sopenharmony_ci u8 change_auto_mode_timeout; 5562306a36Sopenharmony_ci u8 scheduled_scan_status; 5662306a36Sopenharmony_ci u8 reserved4; 5762306a36Sopenharmony_ci /* tuned channel (roc) */ 5862306a36Sopenharmony_ci u8 roc_channel; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci __le16 hlid_removed_bitmap; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci /* bitmap of aged stations (by HLID) */ 6362306a36Sopenharmony_ci __le16 sta_aging_status; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci /* bitmap of stations (by HLID) which exceeded max tx retries */ 6662306a36Sopenharmony_ci __le16 sta_tx_retry_exceeded; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci /* discovery completed results */ 6962306a36Sopenharmony_ci u8 discovery_tag; 7062306a36Sopenharmony_ci u8 number_of_preq_results; 7162306a36Sopenharmony_ci u8 number_of_prsp_results; 7262306a36Sopenharmony_ci u8 reserved_5; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci /* rx ba constraint */ 7562306a36Sopenharmony_ci u8 role_id; /* 0xFF means any role. */ 7662306a36Sopenharmony_ci u8 rx_ba_allowed; 7762306a36Sopenharmony_ci u8 reserved_6[2]; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci /* Channel switch results */ 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci u8 channel_switch_role_id; 8262306a36Sopenharmony_ci u8 channel_switch_status; 8362306a36Sopenharmony_ci u8 reserved_7[2]; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci u8 ps_poll_delivery_failure_role_ids; 8662306a36Sopenharmony_ci u8 stopped_role_ids; 8762306a36Sopenharmony_ci u8 started_role_ids; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci u8 reserved_8[9]; 9062306a36Sopenharmony_ci} __packed; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciint wl12xx_wait_for_event(struct wl1271 *wl, enum wlcore_wait_event event, 9362306a36Sopenharmony_ci bool *timeout); 9462306a36Sopenharmony_ciint wl12xx_process_mailbox_events(struct wl1271 *wl); 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci#endif 9762306a36Sopenharmony_ci 98