76 lines
2.4 KiB
C
76 lines
2.4 KiB
C
|
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU General Public License version 2 and
|
||
|
* only version 2 as published by the Free Software Foundation.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef _ADRENO_A5XX_H_
|
||
|
#define _ADRENO_A5XX_H_
|
||
|
|
||
|
#define A5XX_CP_CTXRECORD_MAGIC_REF 0x27C4BAFCUL
|
||
|
/* Size of each CP preemption record */
|
||
|
#define A5XX_CP_CTXRECORD_SIZE_IN_BYTES 0x100000
|
||
|
/* Size of the preemption counter block (in bytes) */
|
||
|
#define A5XX_CP_CTXRECORD_PREEMPTION_COUNTER_SIZE (16 * 4)
|
||
|
|
||
|
/**
|
||
|
* struct a5xx_cp_preemption_record - CP context record for
|
||
|
* preemption.
|
||
|
* @magic: (00) Value at this offset must be equal to
|
||
|
* A5XX_CP_CTXRECORD_MAGIC_REF.
|
||
|
* @info: (04) Type of record. Written non-zero (usually) by CP.
|
||
|
* we must set to zero for all ringbuffers.
|
||
|
* @data: (08) DATA field in SET_RENDER_MODE or checkpoint packets.
|
||
|
* Written by CP when switching out. Not used on switch-in.
|
||
|
* we must initialize to zero.
|
||
|
* @cntl: (12) RB_CNTL, saved and restored by CP.
|
||
|
* @rptr: (16) RB_RPTR, saved and restored by CP.
|
||
|
* @wptr: (20) RB_WPTR, saved and restored by CP.
|
||
|
* @rptr_addr: (24) RB_RPTR_ADDR_LO|HI saved and restored.
|
||
|
* rbase: (32) RB_BASE_LO|HI saved and restored.
|
||
|
* counter: (40) Pointer to preemption counter
|
||
|
*/
|
||
|
struct a5xx_cp_preemption_record {
|
||
|
uint32_t magic;
|
||
|
uint32_t info;
|
||
|
uint32_t data;
|
||
|
uint32_t cntl;
|
||
|
uint32_t rptr;
|
||
|
uint32_t wptr;
|
||
|
uint64_t rptr_addr;
|
||
|
uint64_t rbase;
|
||
|
uint64_t counter;
|
||
|
};
|
||
|
|
||
|
#define A5XX_CP_SMMU_INFO_MAGIC_REF 0x3618CDA3UL
|
||
|
|
||
|
/**
|
||
|
* struct a5xx_cp_smmu_info - CP preemption SMMU info.
|
||
|
* @magic: (00) The value at this offset must be equal to
|
||
|
* A5XX_CP_SMMU_INFO_MAGIC_REF.
|
||
|
* @_pad4: (04) Reserved/padding
|
||
|
* @ttbr0: (08) Base address of the page table for the
|
||
|
* incoming context.
|
||
|
* @context_idr: (16) Context Identification Register value.
|
||
|
*/
|
||
|
struct a5xx_cp_smmu_info {
|
||
|
uint32_t magic;
|
||
|
uint32_t _pad4;
|
||
|
uint64_t ttbr0;
|
||
|
uint32_t asid;
|
||
|
uint32_t context_idr;
|
||
|
};
|
||
|
|
||
|
void a5xx_snapshot(struct adreno_device *adreno_dev,
|
||
|
struct kgsl_snapshot *snapshot);
|
||
|
unsigned int a5xx_num_registers(void);
|
||
|
|
||
|
#endif
|