The GPU hang when run two cubes together with one video playback.
According to the suggestion from AMD, we'd better not read register
when GPU active, especially for CP block.
Signed-off-by: Zhou, Jie <b30303@freescale.com>
unsigned int status;
// read the block's interrupt status bits
- device->ftbl.device_regread(device, block->status_reg, &status);
+ /* exclude CP block here to avoid hang in heavy loading with VPU+GPU */
+ if (block_id == GSL_INTR_BLOCK_YDX_CP) {
+ status = 0x80000000;
+ } else {
+ device->ftbl.device_regread(device, block->status_reg, &status);
+ }
// mask off any interrupts which are disabled
status &= device->intr.enabled[block->id];
// send the wptr to the hw
rb->device->ftbl.device_regwrite(rb->device, mmCP_RB_WPTR, rb->wptr);
- // force wptr register to be updated
- do
- {
- rb->device->ftbl.device_regread(rb->device, mmCP_RB_WPTR, &value);
- } while (value != rb->wptr);
-
rb->flags |= GSL_FLAGS_ACTIVE;
kgsl_log_write( KGSL_LOG_GROUP_COMMAND | KGSL_LOG_LEVEL_TRACE, "<-- kgsl_ringbuffer_submit.\n" );