#include <linux/delay.h>
#include "iosm_ipc_chnl_cfg.h"
#include "iosm_ipc_devlink.h"
#include "iosm_ipc_flash.h"
#include "iosm_ipc_imem.h"
#include "iosm_ipc_port.h"
#include "iosm_ipc_trace.h"
#include "iosm_ipc_debugfs.h"
static int ipc_imem_check_wwan_ips(struct ipc_mem_channel *chnl)
{ … }
static int ipc_imem_msg_send_device_sleep(struct iosm_imem *ipc_imem, u32 state)
{ … }
static bool ipc_imem_dl_skb_alloc(struct iosm_imem *ipc_imem,
struct ipc_pipe *pipe)
{ … }
static int ipc_imem_tq_td_alloc_timer(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static enum hrtimer_restart ipc_imem_td_alloc_timer_cb(struct hrtimer *hr_timer)
{ … }
static int ipc_imem_tq_fast_update_timer_cb(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static enum hrtimer_restart
ipc_imem_fast_update_timer_cb(struct hrtimer *hr_timer)
{ … }
static int ipc_imem_tq_adb_timer_cb(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static enum hrtimer_restart
ipc_imem_adb_timer_cb(struct hrtimer *hr_timer)
{ … }
static int ipc_imem_setup_cp_mux_cap_init(struct iosm_imem *ipc_imem,
struct ipc_mux_config *cfg)
{ … }
void ipc_imem_msg_send_feature_set(struct iosm_imem *ipc_imem,
unsigned int reset_enable, bool atomic_ctx)
{ … }
void ipc_imem_td_update_timer_start(struct iosm_imem *ipc_imem)
{ … }
void ipc_imem_hrtimer_stop(struct hrtimer *hr_timer)
{ … }
void ipc_imem_adb_timer_start(struct iosm_imem *ipc_imem)
{ … }
bool ipc_imem_ul_write_td(struct iosm_imem *ipc_imem)
{ … }
void ipc_imem_ipc_init_check(struct iosm_imem *ipc_imem)
{ … }
static void ipc_imem_dl_skb_process(struct iosm_imem *ipc_imem,
struct ipc_pipe *pipe, struct sk_buff *skb)
{ … }
static void ipc_imem_dl_pipe_process(struct iosm_imem *ipc_imem,
struct ipc_pipe *pipe)
{ … }
static void ipc_imem_ul_pipe_process(struct iosm_imem *ipc_imem,
struct ipc_pipe *pipe)
{ … }
static void ipc_imem_rom_irq_exec(struct iosm_imem *ipc_imem)
{ … }
static int ipc_imem_tq_td_update_timer_cb(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static void ipc_imem_slp_control_exec(struct iosm_imem *ipc_imem)
{ … }
static int ipc_imem_tq_startup_timer_cb(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static enum hrtimer_restart ipc_imem_startup_timer_cb(struct hrtimer *hr_timer)
{ … }
static enum ipc_mem_exec_stage
ipc_imem_get_exec_stage_buffered(struct iosm_imem *ipc_imem)
{ … }
static int ipc_imem_send_mdm_rdy_cb(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static void ipc_imem_run_state_worker(struct work_struct *instance)
{ … }
static void ipc_imem_handle_irq(struct iosm_imem *ipc_imem, int irq)
{ … }
static int ipc_imem_tq_irq_cb(struct iosm_imem *ipc_imem, int arg, void *msg,
size_t size)
{ … }
void ipc_imem_ul_send(struct iosm_imem *ipc_imem)
{ … }
static enum ipc_phase ipc_imem_phase_update_check(struct iosm_imem *ipc_imem,
enum ipc_mem_exec_stage stage)
{ … }
static bool ipc_imem_pipe_open(struct iosm_imem *ipc_imem,
struct ipc_pipe *pipe)
{ … }
static int ipc_imem_tq_pipe_td_alloc(struct iosm_imem *ipc_imem, int arg,
void *msg, size_t size)
{ … }
static enum hrtimer_restart
ipc_imem_td_update_timer_cb(struct hrtimer *hr_timer)
{ … }
enum ipc_phase ipc_imem_phase_update(struct iosm_imem *ipc_imem)
{ … }
const char *ipc_imem_phase_get_string(enum ipc_phase phase)
{ … }
void ipc_imem_pipe_close(struct iosm_imem *ipc_imem, struct ipc_pipe *pipe)
{ … }
void ipc_imem_channel_close(struct iosm_imem *ipc_imem, int channel_id)
{ … }
struct ipc_mem_channel *ipc_imem_channel_open(struct iosm_imem *ipc_imem,
int channel_id, u32 db_id)
{ … }
void ipc_imem_pm_suspend(struct iosm_imem *ipc_imem)
{ … }
void ipc_imem_pm_s2idle_sleep(struct iosm_imem *ipc_imem, bool sleep)
{ … }
void ipc_imem_pm_resume(struct iosm_imem *ipc_imem)
{ … }
void ipc_imem_channel_free(struct ipc_mem_channel *channel)
{ … }
int ipc_imem_channel_alloc(struct iosm_imem *ipc_imem, int index,
enum ipc_ctype ctype)
{ … }
void ipc_imem_channel_init(struct iosm_imem *ipc_imem, enum ipc_ctype ctype,
struct ipc_chnl_cfg chnl_cfg, u32 irq_moderation)
{ … }
void ipc_imem_channel_update(struct iosm_imem *ipc_imem, int id,
struct ipc_chnl_cfg chnl_cfg, u32 irq_moderation)
{ … }
static void ipc_imem_channel_reset(struct iosm_imem *ipc_imem)
{ … }
void ipc_imem_pipe_cleanup(struct iosm_imem *ipc_imem, struct ipc_pipe *pipe)
{ … }
static void ipc_imem_device_ipc_uninit(struct iosm_imem *ipc_imem)
{ … }
void ipc_imem_cleanup(struct iosm_imem *ipc_imem)
{ … }
static int ipc_imem_config(struct iosm_imem *ipc_imem)
{ … }
struct iosm_imem *ipc_imem_init(struct iosm_pcie *pcie, unsigned int device_id,
void __iomem *mmio, struct device *dev)
{ … }
void ipc_imem_irq_process(struct iosm_imem *ipc_imem, int irq)
{ … }
void ipc_imem_td_update_timer_suspend(struct iosm_imem *ipc_imem, bool suspend)
{ … }
static int ipc_imem_devlink_trigger_chip_info_cb(struct iosm_imem *ipc_imem,
int arg, void *msg,
size_t msgsize)
{ … }
int ipc_imem_devlink_trigger_chip_info(struct iosm_imem *ipc_imem)
{ … }