Loading drivers/platform/msm/gsi/gsi.c +4 −32 Original line number Diff line number Diff line Loading @@ -92,9 +92,6 @@ static void __gsi_config_ieob_irq(int ee, uint32_t mask, uint32_t val) GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); gsi_writel((curr & ~mask) | (val & mask), gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); if (gsi_ctx->per.ver == GSI_VER_2_2) gsi_ctx->chan_ieob_mask = ((gsi_ctx->chan_ieob_mask & ~mask) | (val & mask)); } static void __gsi_config_glob_irq(int ee, uint32_t mask, uint32_t val) Loading Loading @@ -564,29 +561,10 @@ static void gsi_handle_ieob(int ee) unsigned long cntr; uint32_t msk; if (gsi_ctx->per.ver == GSI_VER_2_2) { /* Masking IEOB global interrupt*/ __gsi_config_type_irq(ee, 1 << GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_SHFT, 0); ch = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_OFFS(ee)); msk = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); if (gsi_ctx->chan_ieob_mask != msk) gsi_ctx->ieob_mask_miss_match_cnt++; /* In GSI 2.2 there is a limitation that can lead * to losing an interrupt because of wrong IEOB IRQ mask value. * For these versions an explicit considering mask value for * all the event channel. */ msk = 0xffff; } else { ch = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_OFFS(ee)); msk = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); } gsi_writel(ch & msk, gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(ee)); Loading Loading @@ -633,11 +611,6 @@ static void gsi_handle_ieob(int ee) spin_unlock_irqrestore(&ctx->ring.slock, flags); } } if (gsi_ctx->per.ver == GSI_VER_2_2) { /* Unmasking IEOB global interrupt*/ __gsi_config_type_irq(ee, 1 << GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_SHFT, ~0); } } static void gsi_handle_inter_ee_ch_ctrl(int ee) Loading Loading @@ -1127,7 +1100,6 @@ int gsi_register_device(struct gsi_per_props *props, unsigned long *dev_hdl) props->emulator_intcntrlr_client_isr; } gsi_ctx->chan_ieob_mask = 0; gsi_ctx->per = *props; gsi_ctx->per_registered = true; mutex_init(&gsi_ctx->mlock); Loading drivers/platform/msm/gsi/gsi.h +0 −2 Original line number Diff line number Diff line Loading @@ -220,8 +220,6 @@ struct gsi_ctx { u32 intcntrlr_mem_size; irq_handler_t intcntrlr_gsi_isr; irq_handler_t intcntrlr_client_isr; u32 chan_ieob_mask; u32 ieob_mask_miss_match_cnt; }; enum gsi_re_type { Loading Loading
drivers/platform/msm/gsi/gsi.c +4 −32 Original line number Diff line number Diff line Loading @@ -92,9 +92,6 @@ static void __gsi_config_ieob_irq(int ee, uint32_t mask, uint32_t val) GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); gsi_writel((curr & ~mask) | (val & mask), gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); if (gsi_ctx->per.ver == GSI_VER_2_2) gsi_ctx->chan_ieob_mask = ((gsi_ctx->chan_ieob_mask & ~mask) | (val & mask)); } static void __gsi_config_glob_irq(int ee, uint32_t mask, uint32_t val) Loading Loading @@ -564,29 +561,10 @@ static void gsi_handle_ieob(int ee) unsigned long cntr; uint32_t msk; if (gsi_ctx->per.ver == GSI_VER_2_2) { /* Masking IEOB global interrupt*/ __gsi_config_type_irq(ee, 1 << GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_SHFT, 0); ch = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_OFFS(ee)); msk = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); if (gsi_ctx->chan_ieob_mask != msk) gsi_ctx->ieob_mask_miss_match_cnt++; /* In GSI 2.2 there is a limitation that can lead * to losing an interrupt because of wrong IEOB IRQ mask value. * For these versions an explicit considering mask value for * all the event channel. */ msk = 0xffff; } else { ch = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_OFFS(ee)); msk = gsi_readl(gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(ee)); } gsi_writel(ch & msk, gsi_ctx->base + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(ee)); Loading Loading @@ -633,11 +611,6 @@ static void gsi_handle_ieob(int ee) spin_unlock_irqrestore(&ctx->ring.slock, flags); } } if (gsi_ctx->per.ver == GSI_VER_2_2) { /* Unmasking IEOB global interrupt*/ __gsi_config_type_irq(ee, 1 << GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_SHFT, ~0); } } static void gsi_handle_inter_ee_ch_ctrl(int ee) Loading Loading @@ -1127,7 +1100,6 @@ int gsi_register_device(struct gsi_per_props *props, unsigned long *dev_hdl) props->emulator_intcntrlr_client_isr; } gsi_ctx->chan_ieob_mask = 0; gsi_ctx->per = *props; gsi_ctx->per_registered = true; mutex_init(&gsi_ctx->mlock); Loading
drivers/platform/msm/gsi/gsi.h +0 −2 Original line number Diff line number Diff line Loading @@ -220,8 +220,6 @@ struct gsi_ctx { u32 intcntrlr_mem_size; irq_handler_t intcntrlr_gsi_isr; irq_handler_t intcntrlr_client_isr; u32 chan_ieob_mask; u32 ieob_mask_miss_match_cnt; }; enum gsi_re_type { Loading