Loading drivers/platform/msm/gsi/gsi.c +6 −2 Original line number Diff line number Diff line Loading @@ -3652,6 +3652,7 @@ EXPORT_SYMBOL(gsi_query_channel_info); int gsi_is_channel_empty(unsigned long chan_hdl, bool *is_empty) { struct gsi_chan_ctx *ctx; struct gsi_evt_ctx *ev_ctx; spinlock_t *slock; unsigned long flags; uint64_t rp; Loading Loading @@ -3687,8 +3688,11 @@ int gsi_is_channel_empty(unsigned long chan_hdl, bool *is_empty) spin_lock_irqsave(slock, flags); if (ctx->props.dir == GSI_CHAN_DIR_FROM_GSI && ctx->evtr) { rp = gsi_readl(gsi_ctx->base + GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(ctx->evtr->id, ee)); ev_ctx = &gsi_ctx->evtr[ctx->evtr->id]; /* Read the event ring rp from DDR to avoid mismatch */ rp = ev_ctx->props.gsi_read_event_ring_rp(&ev_ctx->props, ev_ctx->id, ee); rp |= ctx->evtr->ring.rp & 0xFFFFFFFF00000000; ctx->evtr->ring.rp = rp; Loading Loading
drivers/platform/msm/gsi/gsi.c +6 −2 Original line number Diff line number Diff line Loading @@ -3652,6 +3652,7 @@ EXPORT_SYMBOL(gsi_query_channel_info); int gsi_is_channel_empty(unsigned long chan_hdl, bool *is_empty) { struct gsi_chan_ctx *ctx; struct gsi_evt_ctx *ev_ctx; spinlock_t *slock; unsigned long flags; uint64_t rp; Loading Loading @@ -3687,8 +3688,11 @@ int gsi_is_channel_empty(unsigned long chan_hdl, bool *is_empty) spin_lock_irqsave(slock, flags); if (ctx->props.dir == GSI_CHAN_DIR_FROM_GSI && ctx->evtr) { rp = gsi_readl(gsi_ctx->base + GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(ctx->evtr->id, ee)); ev_ctx = &gsi_ctx->evtr[ctx->evtr->id]; /* Read the event ring rp from DDR to avoid mismatch */ rp = ev_ctx->props.gsi_read_event_ring_rp(&ev_ctx->props, ev_ctx->id, ee); rp |= ctx->evtr->ring.rp & 0xFFFFFFFF00000000; ctx->evtr->ring.rp = rp; Loading