#include <linux/ascii85.h>
#include "msm_gem.h"
#include "a6xx_gpu.h"
#include "a6xx_gmu.h"
#include "a6xx_gpu_state.h"
#include "a6xx_gmu.xml.h"
static const unsigned int *gen7_0_0_external_core_regs[] __always_unused;
static const unsigned int *gen7_2_0_external_core_regs[] __always_unused;
static const unsigned int *gen7_9_0_external_core_regs[] __always_unused;
static struct gen7_sptp_cluster_registers gen7_9_0_sptp_clusters[] __always_unused;
static const u32 gen7_9_0_cx_debugbus_blocks[] __always_unused;
#include "adreno_gen7_0_0_snapshot.h"
#include "adreno_gen7_2_0_snapshot.h"
#include "adreno_gen7_9_0_snapshot.h"
struct a6xx_gpu_state_obj { … };
struct a6xx_gpu_state { … };
static inline int CRASHDUMP_WRITE(u64 *in, u32 reg, u32 val)
{ … }
static inline int CRASHDUMP_READ(u64 *in, u32 reg, u32 dwords, u64 target)
{ … }
static inline int CRASHDUMP_FINI(u64 *in)
{ … }
struct a6xx_crashdumper { … };
struct a6xx_state_memobj { … };
static void *state_kcalloc(struct a6xx_gpu_state *a6xx_state, int nr, size_t objsize)
{ … }
static void *state_kmemdup(struct a6xx_gpu_state *a6xx_state, void *src,
size_t size)
{ … }
#define A6XX_CD_DATA_OFFSET …
#define A6XX_CD_DATA_SIZE …
static int a6xx_crashdumper_init(struct msm_gpu *gpu,
struct a6xx_crashdumper *dumper)
{ … }
static int a6xx_crashdumper_run(struct msm_gpu *gpu,
struct a6xx_crashdumper *dumper)
{ … }
static int debugbus_read(struct msm_gpu *gpu, u32 block, u32 offset,
u32 *data)
{ … }
#define cxdbg_write(ptr, offset, val) …
#define cxdbg_read(ptr, offset) …
static int cx_debugbus_read(void __iomem *cxdbg, u32 block, u32 offset,
u32 *data)
{ … }
static int vbif_debugbus_read(struct msm_gpu *gpu, u32 ctrl0, u32 ctrl1,
u32 reg, int count, u32 *data)
{ … }
#define AXI_ARB_BLOCKS …
#define XIN_AXI_BLOCKS …
#define XIN_CORE_BLOCKS …
#define VBIF_DEBUGBUS_BLOCK_SIZE …
static void a6xx_get_vbif_debugbus_block(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_gpu_state_obj *obj)
{ … }
static void a6xx_get_debugbus_block(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_debugbus_block *block,
struct a6xx_gpu_state_obj *obj)
{ … }
static void a6xx_get_cx_debugbus_block(void __iomem *cxdbg,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_debugbus_block *block,
struct a6xx_gpu_state_obj *obj)
{ … }
static void a6xx_get_debugbus_blocks(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
static void a7xx_get_debugbus_blocks(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
static void a6xx_get_debugbus(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
#define RANGE(reg, a) …
static void a6xx_get_dbgahb_cluster(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_dbgahb_cluster *dbgahb,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_dbgahb_cluster(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct gen7_sptp_cluster_registers *dbgahb,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_dbgahb_clusters(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_dbgahb_clusters(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_cluster(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_cluster *cluster,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_cluster(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct gen7_cluster_registers *cluster,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_clusters(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_clusters(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_shader_block(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_shader_block *block,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_shader_block(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct gen7_shader_block *block,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_shaders(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_shaders(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_crashdumper_hlsq_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_registers *regs,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_crashdumper_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_registers *regs,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_crashdumper_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct gen7_reg_list *regs,
struct a6xx_gpu_state_obj *obj,
struct a6xx_crashdumper *dumper)
{ … }
static void a6xx_get_ahb_gpu_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_registers *regs,
struct a6xx_gpu_state_obj *obj)
{ … }
static void a7xx_get_ahb_gpu_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const u32 *regs,
struct a6xx_gpu_state_obj *obj)
{ … }
static void a7xx_get_ahb_gpu_reglist(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct gen7_reg_list *regs,
struct a6xx_gpu_state_obj *obj)
{ … }
static void _a6xx_get_gmu_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_registers *regs,
struct a6xx_gpu_state_obj *obj,
bool rscc)
{ … }
static void a6xx_get_gmu_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
static struct msm_gpu_state_bo *a6xx_snapshot_gmu_bo(
struct a6xx_gpu_state *a6xx_state, struct a6xx_gmu_bo *bo)
{ … }
static void a6xx_snapshot_gmu_hfi_history(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
#define A6XX_REGLIST_SIZE …
#define A6XX_GBIF_REGLIST_SIZE …
static void a6xx_get_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
#define A7XX_PRE_CRASHDUMPER_SIZE …
#define A7XX_POST_CRASHDUMPER_SIZE …
static void a7xx_get_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
struct a6xx_crashdumper *dumper)
{ … }
static void a7xx_get_post_crashdumper_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
static u32 a6xx_get_cp_roq_size(struct msm_gpu *gpu)
{ … }
static u32 a7xx_get_cp_roq_size(struct msm_gpu *gpu)
{ … }
static void a6xx_get_indexed_regs(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state,
const struct a6xx_indexed_registers *indexed,
struct a6xx_gpu_state_obj *obj)
{ … }
static void a6xx_get_indexed_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
static void a7xx_get_indexed_registers(struct msm_gpu *gpu,
struct a6xx_gpu_state *a6xx_state)
{ … }
struct msm_gpu_state *a6xx_gpu_state_get(struct msm_gpu *gpu)
{ … }
static void a6xx_gpu_state_destroy(struct kref *kref)
{ … }
int a6xx_gpu_state_put(struct msm_gpu_state *state)
{ … }
static void a6xx_show_registers(const u32 *registers, u32 *data, size_t count,
struct drm_printer *p)
{ … }
static void a7xx_show_registers_indented(const u32 *registers, u32 *data,
struct drm_printer *p, unsigned indent)
{ … }
static void a7xx_show_registers(const u32 *registers, u32 *data, struct drm_printer *p)
{ … }
static void print_ascii85(struct drm_printer *p, size_t len, u32 *data)
{ … }
static void print_name(struct drm_printer *p, const char *fmt, const char *name)
{ … }
static void a6xx_show_shader(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a7xx_show_shader(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a6xx_show_cluster_data(const u32 *registers, int size, u32 *data,
struct drm_printer *p)
{ … }
static void a6xx_show_dbgahb_cluster(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a6xx_show_cluster(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a7xx_show_dbgahb_cluster(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a7xx_show_cluster(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a6xx_show_indexed_regs(struct a6xx_gpu_state_obj *obj,
struct drm_printer *p)
{ … }
static void a6xx_show_debugbus_block(const struct a6xx_debugbus_block *block,
u32 *data, struct drm_printer *p)
{ … }
static void a6xx_show_debugbus(struct a6xx_gpu_state *a6xx_state,
struct drm_printer *p)
{ … }
void a6xx_show(struct msm_gpu *gpu, struct msm_gpu_state *state,
struct drm_printer *p)
{ … }