#ifndef __PANTHOR_MCU_H__
#define __PANTHOR_MCU_H__
#include <linux/types.h>
struct panthor_device;
struct panthor_kernel_bo;
#define MAX_CSGS …
#define MAX_CS_PER_CSG …
struct panthor_fw_ringbuf_input_iface { … };
struct panthor_fw_ringbuf_output_iface { … };
struct panthor_fw_cs_control_iface { … };
struct panthor_fw_cs_input_iface { … };
struct panthor_fw_cs_output_iface { … };
struct panthor_fw_csg_control_iface { … };
struct panthor_fw_csg_input_iface { … };
struct panthor_fw_csg_output_iface { … };
struct panthor_fw_global_control_iface { … };
struct panthor_fw_global_input_iface { … };
enum panthor_fw_halt_status { … };
struct panthor_fw_global_output_iface { … };
struct panthor_fw_cs_iface { … };
struct panthor_fw_csg_iface { … };
struct panthor_fw_global_iface { … };
#define panthor_fw_toggle_reqs(__iface, __in_reg, __out_reg, __mask) …
#define panthor_fw_update_reqs(__iface, __in_reg, __val, __mask) …
struct panthor_fw_global_iface *
panthor_fw_get_glb_iface(struct panthor_device *ptdev);
struct panthor_fw_csg_iface *
panthor_fw_get_csg_iface(struct panthor_device *ptdev, u32 csg_slot);
struct panthor_fw_cs_iface *
panthor_fw_get_cs_iface(struct panthor_device *ptdev, u32 csg_slot, u32 cs_slot);
int panthor_fw_csg_wait_acks(struct panthor_device *ptdev, u32 csg_id, u32 req_mask,
u32 *acked, u32 timeout_ms);
int panthor_fw_glb_wait_acks(struct panthor_device *ptdev, u32 req_mask, u32 *acked,
u32 timeout_ms);
void panthor_fw_ring_csg_doorbells(struct panthor_device *ptdev, u32 csg_slot);
struct panthor_kernel_bo *
panthor_fw_alloc_queue_iface_mem(struct panthor_device *ptdev,
struct panthor_fw_ringbuf_input_iface **input,
const struct panthor_fw_ringbuf_output_iface **output,
u32 *input_fw_va, u32 *output_fw_va);
struct panthor_kernel_bo *
panthor_fw_alloc_suspend_buf_mem(struct panthor_device *ptdev, size_t size);
struct panthor_vm *panthor_fw_vm(struct panthor_device *ptdev);
void panthor_fw_pre_reset(struct panthor_device *ptdev, bool on_hang);
int panthor_fw_post_reset(struct panthor_device *ptdev);
static inline void panthor_fw_suspend(struct panthor_device *ptdev)
{ … }
static inline int panthor_fw_resume(struct panthor_device *ptdev)
{ … }
int panthor_fw_init(struct panthor_device *ptdev);
void panthor_fw_unplug(struct panthor_device *ptdev);
#endif