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