#include "xe_gsc_proxy.h"
#include <linux/component.h>
#include <linux/delay.h>
#include <drm/drm_managed.h>
#include <drm/intel/i915_component.h>
#include <drm/intel/i915_gsc_proxy_mei_interface.h>
#include "abi/gsc_proxy_commands_abi.h"
#include "regs/xe_gsc_regs.h"
#include "xe_bo.h"
#include "xe_force_wake.h"
#include "xe_gsc.h"
#include "xe_gsc_submit.h"
#include "xe_gt.h"
#include "xe_gt_printk.h"
#include "xe_map.h"
#include "xe_mmio.h"
#include "xe_pm.h"
#define GSC_PROXY_INIT_TIMEOUT_MS …
#define PROXY_HDR_SIZE …
#define GSC_PROXY_BUFFER_SIZE …
#define GSC_PROXY_CHANNEL_SIZE …
static struct xe_gt *
gsc_to_gt(struct xe_gsc *gsc)
{ … }
static inline struct xe_device *kdev_to_xe(struct device *kdev)
{ … }
bool xe_gsc_proxy_init_done(struct xe_gsc *gsc)
{ … }
static void __gsc_proxy_irq_rmw(struct xe_gsc *gsc, u32 clr, u32 set)
{ … }
static void gsc_proxy_irq_clear(struct xe_gsc *gsc)
{ … }
static void gsc_proxy_irq_toggle(struct xe_gsc *gsc, bool enabled)
{ … }
static int proxy_send_to_csme(struct xe_gsc *gsc, u32 size)
{ … }
static int proxy_send_to_gsc(struct xe_gsc *gsc, u32 size)
{ … }
static int validate_proxy_header(struct xe_gsc_proxy_header *header,
u32 source, u32 dest, u32 max_size)
{ … }
#define proxy_header_wr(xe_, map_, offset_, field_, val_) …
#define proxy_header_rd(xe_, map_, offset_, field_) …
static u32 emit_proxy_header(struct xe_device *xe, struct iosys_map *map, u32 offset)
{ … }
static int proxy_query(struct xe_gsc *gsc)
{ … }
int xe_gsc_proxy_request_handler(struct xe_gsc *gsc)
{ … }
void xe_gsc_proxy_irq_handler(struct xe_gsc *gsc, u32 iir)
{ … }
static int xe_gsc_proxy_component_bind(struct device *xe_kdev,
struct device *mei_kdev, void *data)
{ … }
static void xe_gsc_proxy_component_unbind(struct device *xe_kdev,
struct device *mei_kdev, void *data)
{ … }
static const struct component_ops xe_gsc_proxy_component_ops = …;
static void proxy_channel_free(struct drm_device *drm, void *arg)
{ … }
static int proxy_channel_alloc(struct xe_gsc *gsc)
{ … }
int xe_gsc_proxy_init(struct xe_gsc *gsc)
{ … }
void xe_gsc_proxy_remove(struct xe_gsc *gsc)
{ … }
int xe_gsc_proxy_start(struct xe_gsc *gsc)
{ … }