Loading drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +20 −8 Original line number Diff line number Diff line Loading @@ -1078,21 +1078,33 @@ static u32 sde_hw_rotator_wait_done_regdma( spin_unlock_irqrestore(&rot->rotisr_lock, flags); } else { int cnt = 200; bool pending; do { udelay(500); status = SDE_ROTREG_READ(rot->mdss_base, ROTTOP_STATUS); last_isr = SDE_ROTREG_READ(rot->mdss_base, REGDMA_CSR_REGDMA_INT_STATUS); pending = sde_hw_rotator_pending_swts(rot, ctx, &swts); cnt--; } while ((cnt > 0) && (status & ROT_BUSY_BIT) && ((status & ROT_ERROR_BIT) == 0)); } while ((cnt > 0) && pending && ((last_isr & REGDMA_INT_ERR_MASK) == 0)); if (status & ROT_ERROR_BIT) SDEROT_ERR("Rotator error\n"); else if (status & ROT_BUSY_BIT) SDEROT_ERR("Rotator busy\n"); if (last_isr & REGDMA_INT_ERR_MASK) { SDEROT_ERR("Rotator error, ts:0x%X/0x%X status:%x\n", ctx->timestamp, swts, last_isr); sde_hw_rotator_dump_status(rot); status = ROT_ERROR_BIT; } else if (pending) { SDEROT_ERR("Rotator timeout, ts:0x%X/0x%X status:%x\n", ctx->timestamp, swts, last_isr); sde_hw_rotator_dump_status(rot); status = ROT_ERROR_BIT; } else { status = 0; } SDE_ROTREG_WRITE(rot->mdss_base, REGDMA_CSR_REGDMA_INT_CLEAR, 0xFFFF); last_isr); } sts = (status & ROT_ERROR_BIT) ? -ENODEV : 0; Loading Loading
drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +20 −8 Original line number Diff line number Diff line Loading @@ -1078,21 +1078,33 @@ static u32 sde_hw_rotator_wait_done_regdma( spin_unlock_irqrestore(&rot->rotisr_lock, flags); } else { int cnt = 200; bool pending; do { udelay(500); status = SDE_ROTREG_READ(rot->mdss_base, ROTTOP_STATUS); last_isr = SDE_ROTREG_READ(rot->mdss_base, REGDMA_CSR_REGDMA_INT_STATUS); pending = sde_hw_rotator_pending_swts(rot, ctx, &swts); cnt--; } while ((cnt > 0) && (status & ROT_BUSY_BIT) && ((status & ROT_ERROR_BIT) == 0)); } while ((cnt > 0) && pending && ((last_isr & REGDMA_INT_ERR_MASK) == 0)); if (status & ROT_ERROR_BIT) SDEROT_ERR("Rotator error\n"); else if (status & ROT_BUSY_BIT) SDEROT_ERR("Rotator busy\n"); if (last_isr & REGDMA_INT_ERR_MASK) { SDEROT_ERR("Rotator error, ts:0x%X/0x%X status:%x\n", ctx->timestamp, swts, last_isr); sde_hw_rotator_dump_status(rot); status = ROT_ERROR_BIT; } else if (pending) { SDEROT_ERR("Rotator timeout, ts:0x%X/0x%X status:%x\n", ctx->timestamp, swts, last_isr); sde_hw_rotator_dump_status(rot); status = ROT_ERROR_BIT; } else { status = 0; } SDE_ROTREG_WRITE(rot->mdss_base, REGDMA_CSR_REGDMA_INT_CLEAR, 0xFFFF); last_isr); } sts = (status & ROT_ERROR_BIT) ? -ENODEV : 0; Loading