new file mode 100644
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) [2022-2025] Renesas Electronics Corporation and/or its affiliates.
+ */
+
+#ifndef RA6W_CTRL_H
+#define RA6W_CTRL_H
+
+#include <net/cfg80211.h>
+
+#define RA6W_CTRL_DATA_LEN 980
+#define RA6W_CTRL_RSP_EXT_LEN (sizeof(struct ra6w_ctrl_rsp_ext_hdr))
+#define RA6W_CTRL_EVENT_RESET 0
+
+struct ra6w_ctrl_rsp_ext_hdr {
+ u32 status : 32;
+};
+
+struct ra6w_ctrl_rsp {
+ u8 cmd;
+ u8 ext_len;
+ __le16 data_len;
+ struct ra6w_ctrl_rsp_ext_hdr ext_hdr;
+ u8 data[RA6W_CTRL_DATA_LEN];
+};
+
+struct ra6w_ctrl {
+ struct ra6w_q_event event;
+ u8 cmd;
+ void *rsp;
+ u16 rsp_len;
+};
+
+extern const int chnl2bw[];
+
+struct ra6w_cfg80211_vif;
+struct ra6w_cfg80211_key;
+
+void ra6w_ctrl_init(struct ra6w_ctrl *ctrl);
+void ra6w_ctrl_event_post(struct ra6w_ctrl *ctrl, const struct sk_buff *skb);
+int ra6w_ctrl_dev_hw_reset(struct ra6w_ctrl *ctrl);
+int ra6w_ctrl_dev_reset(struct ra6w_ctrl *ctrl);
+int ra6w_ctrl_dev_start(struct ra6w_ctrl *ctrl, const struct ra6w_cmd_phy_cfg *phy_config);
+int ra6w_ctrl_otp_mac_addr_get(struct ra6w_ctrl *ctrl, u8 *mac);
+int ra6w_ctrl_if_add(struct ra6w_ctrl *ctrl, const u8 *mac, u8 iftype, bool p2p,
+ struct ra6w_cmd_add_if_rsp *rsp);
+int ra6w_ctrl_if_remove(struct ra6w_ctrl *ctrl, u8 vif_idx);
+int ra6w_ctrl_me_config(struct ra6w_ctrl *ctrl, struct wiphy *wiphy);
+int ra6w_ctrl_chan_config(struct ra6w_ctrl *ctrl, struct wiphy *wiphy);
+int ra6w_ctrl_scan_start(struct ra6w_ctrl *ctrl, struct cfg80211_scan_request *param);
+int ra6w_ctrl_scan_cancel(struct ra6w_ctrl *ctrl, const struct ra6w_cfg80211_vif *vif);
+int ra6w_ctrl_connect(struct ra6w_ctrl *ctrl, const struct net_device *ndev,
+ struct cfg80211_connect_params *sme,
+ struct ra6w_cmd_sm_connect_rsp *rsp);
+int ra6w_ctrl_disconnect_req(struct ra6w_ctrl *ctrl, const struct ra6w_cfg80211_vif *vif,
+ u16 reason);
+int ra6w_ctrl_add_key_req(struct ra6w_ctrl *ctrl, const struct ra6w_cfg80211_key *key,
+ const u8 *key_data, u32 key_len, u8 key_index,
+ struct ra6w_cmd_key_add_rsp *rsp);
+int ra6w_ctrl_del_key_req(struct ra6w_ctrl *ctrl, u8 key_index);
+int ra6w_ctrl_add_station_req(struct ra6w_ctrl *ctrl, struct station_parameters *params,
+ const u8 *mac, u8 vif_idx, struct ra6w_cmd_sta_add_rsp *rsp);
+int ra6w_ctrl_del_station_req(struct ra6w_ctrl *ctrl, u8 sta_idx, bool is_tdls_sta);
+int ra6w_ctrl_port_control_req(struct ra6w_ctrl *ctrl, bool authorized, u8 sta_idx);
+int ra6w_ctrl_remain_on_channel_req(struct ra6w_ctrl *ctrl, const struct ra6w_cfg80211_vif *vif,
+ struct ieee80211_channel *chan, int duration);
+int ra6w_ctrl_cancel_remain_on_channel_req(struct ra6w_ctrl *ctrl);
+int ra6w_ctrl_ap_start_req(struct ra6w_ctrl *ctrl, struct ra6w_cfg80211_vif *vif,
+ struct cfg80211_ap_settings *settings,
+ struct ra6w_cmd_ap_start_rsp *rsp);
+int ra6w_ctrl_ap_stop_req(struct ra6w_ctrl *ctrl, const struct ra6w_cfg80211_vif *vif);
+int ra6w_ctrl_change_beacon_req(struct ra6w_ctrl *ctrl, u8 vif_idx, const u8 *bcn, u16 bcn_len,
+ u16 tim_oft, u16 tim_len, const u16 *csa_oft);
+int ra6w_ctrl_monitor_mode_req(struct ra6w_ctrl *ctrl, const struct cfg80211_chan_def *chandef,
+ struct ra6w_cmd_mon_mode_rsp *rsp);
+int ra6w_ctrl_probe_client_req(struct ra6w_ctrl *ctrl, u8 vif_idx, u8 sta_idx,
+ struct ra6w_cmd_probe_client_rsp *rsp);
+int ra6w_ctrl_set_ap_isolate_req(struct ra6w_ctrl *ctrl, u8 ap_isolate,
+ struct ra6w_cmd_ap_isolate_rsp *rsp);
+int ra6w_ctrl_edca_req(struct ra6w_ctrl *ctrl, u8 ac, u32 param, bool uapsd, u8 vif_idx);
+int ra6w_ctrl_set_tx_power_req(struct ra6w_ctrl *ctrl, u8 vif_idx, s8 tx_power);
+int ra6w_ctrl_set_power_mgmt_req(struct ra6w_ctrl *ctrl, u8 ps_mode);
+int ra6w_ctrl_cqm_rssi_config_req(struct ra6w_ctrl *ctrl, u8 vif_idx,
+ s32 rssi_thold, u32 rssi_hyst);
+int ra6w_ctrl_mem_read_req(struct ra6w_ctrl *ctrl, u32 addr,
+ struct ra6w_cmd_mem_read_rsp *rsp);
+int ra6w_ctrl_mem_write_req(struct ra6w_ctrl *ctrl, u32 addr, u32 value);
+int ra6w_ctrl_dbg_mode_filter_req(struct ra6w_ctrl *ctrl, u32 mode);
+int ra6w_ctrl_dbg_level_filter_req(struct ra6w_ctrl *ctrl, u32 level);
+int ra6w_ctrl_rf_tx_req(struct ra6w_ctrl *ctrl, struct ra6w_cmd_rf_tx_data *data);
+int ra6w_ctrl_rf_cw_req(struct ra6w_ctrl *ctrl, const struct ra6w_cmd_rf_cw_data *data);
+int ra6w_ctrl_rf_cont_req(struct ra6w_ctrl *ctrl, const struct ra6w_cmd_rf_cont_data *data);
+int ra6w_ctrl_rf_ch_req(struct ra6w_ctrl *ctrl, u16 frequency);
+int ra6w_ctrl_rf_per_req(struct ra6w_ctrl *ctrl, u8 start, struct ra6w_cmd_rf_per_rsp *rsp);
+int ra6w_ctrl_sm_ext_auth_req_rsp(struct ra6w_ctrl *ctrl, u8 vif_idx, u16 status);
+int ra6w_ctrl_update_fw_ver(struct ra6w_ctrl *ctrl);
+int ra6w_ctrl_stats_tx_req(struct ra6w_ctrl *ctrl, u8 req_type, struct ra6w_cmd_stats_tx_rsp *rsp);
+int ra6w_ctrl_stats_tx_start_req(struct ra6w_ctrl *ctrl, u8 req_type);
+
+#endif /* RA6W_CTRL_H */