#include <linux/devcoredump.h>
#include "cam.h"
#include "chan.h"
#include "debug.h"
#include "fw.h"
#include "mac.h"
#include "ps.h"
#include "reg.h"
#include "ser.h"
#include "util.h"
#define SER_RECFG_TIMEOUT …
enum ser_evt { … };
enum ser_state { … };
struct ser_msg { … };
struct state_ent { … };
struct event_ent { … };
static char *ser_ev_name(struct rtw89_ser *ser, u8 event)
{ … }
static char *ser_st_name(struct rtw89_ser *ser)
{ … }
#define RTW89_DEF_SER_CD_TYPE(_name, _type, _size) …
enum rtw89_ser_cd_type { … };
RTW89_DEF_SER_CD_TYPE(fw_rsvd_ple,
RTW89_SER_CD_FW_RSVD_PLE,
RTW89_FW_RSVD_PLE_SIZE);
RTW89_DEF_SER_CD_TYPE(fw_backtrace,
RTW89_SER_CD_FW_BACKTRACE,
RTW89_FW_BACKTRACE_MAX_SIZE);
struct rtw89_ser_cd_buffer { … } __packed;
static struct rtw89_ser_cd_buffer *rtw89_ser_cd_prep(struct rtw89_dev *rtwdev)
{ … }
static void rtw89_ser_cd_send(struct rtw89_dev *rtwdev,
struct rtw89_ser_cd_buffer *buf)
{ … }
static void rtw89_ser_cd_free(struct rtw89_dev *rtwdev,
struct rtw89_ser_cd_buffer *buf, bool free_self)
{ … }
static void ser_state_run(struct rtw89_ser *ser, u8 evt)
{ … }
static void ser_state_goto(struct rtw89_ser *ser, u8 new_state)
{ … }
static struct ser_msg *__rtw89_ser_dequeue_msg(struct rtw89_ser *ser)
{ … }
static void rtw89_ser_hdl_work(struct work_struct *work)
{ … }
static int ser_send_msg(struct rtw89_ser *ser, u8 event)
{ … }
static void rtw89_ser_alarm_work(struct work_struct *work)
{ … }
static void ser_set_alarm(struct rtw89_ser *ser, u32 ms, u8 event)
{ … }
static void ser_del_alarm(struct rtw89_ser *ser)
{ … }
static void drv_stop_tx(struct rtw89_ser *ser)
{ … }
static void drv_stop_rx(struct rtw89_ser *ser)
{ … }
static void drv_trx_reset(struct rtw89_ser *ser)
{ … }
static void drv_resume_tx(struct rtw89_ser *ser)
{ … }
static void drv_resume_rx(struct rtw89_ser *ser)
{ … }
static void ser_reset_vif(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
{ … }
static void ser_sta_deinit_cam_iter(void *data, struct ieee80211_sta *sta)
{ … }
static void ser_deinit_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
{ … }
static void ser_reset_mac_binding(struct rtw89_dev *rtwdev)
{ … }
static int hal_enable_dma(struct rtw89_ser *ser)
{ … }
static int hal_stop_dma(struct rtw89_ser *ser)
{ … }
static void hal_send_post_m0_event(struct rtw89_ser *ser)
{ … }
static void hal_send_m2_event(struct rtw89_ser *ser)
{ … }
static void hal_send_m4_event(struct rtw89_ser *ser)
{ … }
static void ser_idle_st_hdl(struct rtw89_ser *ser, u8 evt)
{ … }
static void ser_l1_reset_pre_st_hdl(struct rtw89_ser *ser, u8 evt)
{ … }
static void ser_reset_trx_st_hdl(struct rtw89_ser *ser, u8 evt)
{ … }
static void ser_do_hci_st_hdl(struct rtw89_ser *ser, u8 evt)
{ … }
static void ser_mac_mem_dump(struct rtw89_dev *rtwdev, u8 *buf,
u8 sel, u32 start_addr, u32 len)
{ … }
static void rtw89_ser_fw_rsvd_ple_dump(struct rtw89_dev *rtwdev, u8 *buf)
{ … }
struct __fw_backtrace_entry { … } __packed;
struct __fw_backtrace_info { … } __packed;
static_assert(…);
static u32 convert_addr_from_wcpu(u32 wcpu_addr)
{ … }
static int rtw89_ser_fw_backtrace_dump(struct rtw89_dev *rtwdev, u8 *buf,
const struct __fw_backtrace_entry *ent)
{ … }
static void ser_l2_reset_st_pre_hdl(struct rtw89_ser *ser)
{ … }
static void ser_l2_reset_st_hdl(struct rtw89_ser *ser, u8 evt)
{ … }
static const struct event_ent ser_ev_tbl[] = …;
static const struct state_ent ser_st_tbl[] = …;
int rtw89_ser_init(struct rtw89_dev *rtwdev)
{ … }
int rtw89_ser_deinit(struct rtw89_dev *rtwdev)
{ … }
void rtw89_ser_recfg_done(struct rtw89_dev *rtwdev)
{ … }
int rtw89_ser_notify(struct rtw89_dev *rtwdev, u32 err)
{ … }
EXPORT_SYMBOL(…);