1e3037485SYan-Hsuan Chuang /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2e3037485SYan-Hsuan Chuang /* Copyright(c) 2018-2019  Realtek Corporation
3e3037485SYan-Hsuan Chuang  */
4e3037485SYan-Hsuan Chuang 
5e3037485SYan-Hsuan Chuang #ifndef __RTW_SEC_H_
6e3037485SYan-Hsuan Chuang #define __RTW_SEC_H_
7e3037485SYan-Hsuan Chuang 
8e3037485SYan-Hsuan Chuang #define RTW_SEC_CMD_REG			0x670
9e3037485SYan-Hsuan Chuang #define RTW_SEC_WRITE_REG		0x674
10e3037485SYan-Hsuan Chuang #define RTW_SEC_READ_REG		0x678
11e3037485SYan-Hsuan Chuang #define RTW_SEC_CONFIG			0x680
12e3037485SYan-Hsuan Chuang 
13e3037485SYan-Hsuan Chuang #define RTW_SEC_CAM_ENTRY_SHIFT		3
14e3037485SYan-Hsuan Chuang #define RTW_SEC_DEFAULT_KEY_NUM		4
15e3037485SYan-Hsuan Chuang #define RTW_SEC_CMD_WRITE_ENABLE	BIT(16)
16e3037485SYan-Hsuan Chuang #define RTW_SEC_CMD_CLEAR		BIT(30)
17e3037485SYan-Hsuan Chuang #define RTW_SEC_CMD_POLLING		BIT(31)
18e3037485SYan-Hsuan Chuang 
19e3037485SYan-Hsuan Chuang #define RTW_SEC_TX_UNI_USE_DK		BIT(0)
20e3037485SYan-Hsuan Chuang #define RTW_SEC_RX_UNI_USE_DK		BIT(1)
21e3037485SYan-Hsuan Chuang #define RTW_SEC_TX_DEC_EN		BIT(2)
22e3037485SYan-Hsuan Chuang #define RTW_SEC_RX_DEC_EN		BIT(3)
23e3037485SYan-Hsuan Chuang #define RTW_SEC_TX_BC_USE_DK		BIT(6)
24e3037485SYan-Hsuan Chuang #define RTW_SEC_RX_BC_USE_DK		BIT(7)
25e3037485SYan-Hsuan Chuang 
26e3037485SYan-Hsuan Chuang #define RTW_SEC_ENGINE_EN		BIT(9)
27e3037485SYan-Hsuan Chuang 
28e3037485SYan-Hsuan Chuang int rtw_sec_get_free_cam(struct rtw_sec_desc *sec);
29e3037485SYan-Hsuan Chuang void rtw_sec_write_cam(struct rtw_dev *rtwdev,
30e3037485SYan-Hsuan Chuang 		       struct rtw_sec_desc *sec,
31e3037485SYan-Hsuan Chuang 		       struct ieee80211_sta *sta,
32e3037485SYan-Hsuan Chuang 		       struct ieee80211_key_conf *key,
33e3037485SYan-Hsuan Chuang 		       u8 hw_key_type, u8 hw_key_idx);
34e3037485SYan-Hsuan Chuang void rtw_sec_clear_cam(struct rtw_dev *rtwdev,
35e3037485SYan-Hsuan Chuang 		       struct rtw_sec_desc *sec,
36e3037485SYan-Hsuan Chuang 		       u8 hw_key_idx);
3704b786e0SYan-Hsuan Chuang u8 rtw_sec_cam_pg_backup(struct rtw_dev *rtwdev, u8 *used_cam);
38e3037485SYan-Hsuan Chuang void rtw_sec_enable_sec_engine(struct rtw_dev *rtwdev);
39e3037485SYan-Hsuan Chuang 
40e3037485SYan-Hsuan Chuang #endif
41