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