mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 20:33:58 -04:00
Merge "msm: kgsl: Add handler for GPC interrupt on A6xx GPU"
This commit is contained in:
commit
b6a8be3cf5
1 changed files with 24 additions and 1 deletions
|
|
@ -1522,6 +1522,29 @@ static void a6xx_cp_callback(struct adreno_device *adreno_dev, int bit)
|
|||
adreno_dispatcher_schedule(device);
|
||||
}
|
||||
|
||||
/*
|
||||
* a6xx_gpc_err_int_callback() - Isr for GPC error interrupts
|
||||
* @adreno_dev: Pointer to device
|
||||
* @bit: Interrupt bit
|
||||
*/
|
||||
static void a6xx_gpc_err_int_callback(struct adreno_device *adreno_dev, int bit)
|
||||
{
|
||||
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
|
||||
|
||||
/*
|
||||
* GPC error is typically the result of mistake SW programming.
|
||||
* Force GPU fault for this interrupt so that we can debug it
|
||||
* with help of register dump.
|
||||
*/
|
||||
|
||||
dev_crit(device->dev, "RBBM: GPC error\n");
|
||||
adreno_irqctrl(adreno_dev, 0);
|
||||
|
||||
/* Trigger a fault in the dispatcher - this will effect a restart */
|
||||
adreno_set_gpu_fault(adreno_dev, ADRENO_SOFT_FAULT);
|
||||
adreno_dispatcher_schedule(device);
|
||||
}
|
||||
|
||||
static struct adreno_irq_funcs a6xx_irq_funcs[32] = {
|
||||
ADRENO_IRQ_CALLBACK(NULL), /* 0 - RBBM_GPU_IDLE */
|
||||
ADRENO_IRQ_CALLBACK(a6xx_err_callback), /* 1 - RBBM_AHB_ERROR */
|
||||
|
|
@ -1531,7 +1554,7 @@ static struct adreno_irq_funcs a6xx_irq_funcs[32] = {
|
|||
ADRENO_IRQ_CALLBACK(NULL), /* 5 - UNUSED */
|
||||
/* 6 - RBBM_ATB_ASYNC_OVERFLOW */
|
||||
ADRENO_IRQ_CALLBACK(a6xx_err_callback),
|
||||
ADRENO_IRQ_CALLBACK(NULL), /* 7 - GPC_ERR */
|
||||
ADRENO_IRQ_CALLBACK(a6xx_gpc_err_int_callback), /* 7 - GPC_ERR */
|
||||
ADRENO_IRQ_CALLBACK(a6xx_preemption_callback),/* 8 - CP_SW */
|
||||
ADRENO_IRQ_CALLBACK(a6xx_cp_hw_err_callback), /* 9 - CP_HW_ERROR */
|
||||
ADRENO_IRQ_CALLBACK(NULL), /* 10 - CP_CCU_FLUSH_DEPTH_TS */
|
||||
|
|
|
|||
Loading…
Reference in a new issue