|
@@ -27,6 +27,9 @@
|
|
|
#define MDP_LTM_INTR_EN_OFF 0x50
|
|
|
#define MDP_LTM_INTR_STATUS_OFF 0x54
|
|
|
#define MDP_LTM_INTR_CLEAR_OFF 0x58
|
|
|
+#define MDP_WB_INTR_EN_OFF 0x18C
|
|
|
+#define MDP_WB_INTR_STATUS_OFF 0x190
|
|
|
+#define MDP_WB_INTR_CLEAR_OFF 0x194
|
|
|
|
|
|
/**
|
|
|
* WB interrupt status bit definitions
|
|
@@ -193,6 +196,11 @@
|
|
|
#define SDE_INTR_LTM_STATS_DONE BIT(0)
|
|
|
#define SDE_INTR_LTM_STATS_WB_PB BIT(5)
|
|
|
|
|
|
+/**
|
|
|
+ * WB interrupt status bit definitions
|
|
|
+ */
|
|
|
+#define SDE_INTR_WB_PROG_LINE BIT(0)
|
|
|
+
|
|
|
/**
|
|
|
* struct sde_intr_reg - array of SDE register sets
|
|
|
* @clr_off: offset to CLEAR reg
|
|
@@ -425,6 +433,10 @@ static struct sde_irq_type sde_irq_ltm_map[] = {
|
|
|
{ SDE_IRQ_TYPE_LTM_STATS_WB_PB, -1, SDE_INTR_LTM_STATS_WB_PB, -1},
|
|
|
};
|
|
|
|
|
|
+static struct sde_irq_type sde_irq_wb_map[] = {
|
|
|
+ { SDE_IRQ_TYPE_WB_PROG_LINE, -1, SDE_INTR_WB_PROG_LINE, -1},
|
|
|
+};
|
|
|
+
|
|
|
static int sde_hw_intr_irqidx_lookup(struct sde_hw_intr *intr,
|
|
|
enum sde_intr_type intr_type, u32 instance_idx)
|
|
|
{
|
|
@@ -867,6 +879,12 @@ static int _set_sde_irq_tbl_offset(struct sde_intr_reg *sde_irq,
|
|
|
sde_irq->en_off = base_offset + MDP_LTM_INTR_EN_OFF;
|
|
|
sde_irq->status_off = base_offset + MDP_LTM_INTR_STATUS_OFF;
|
|
|
break;
|
|
|
+ case SDE_INTR_HWBLK_WB:
|
|
|
+ sde_irq->clr_off = base_offset + MDP_WB_INTR_CLEAR_OFF;
|
|
|
+ sde_irq->en_off = base_offset + MDP_WB_INTR_EN_OFF;
|
|
|
+ sde_irq->status_off = base_offset + MDP_WB_INTR_STATUS_OFF;
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
pr_err("unrecognized intr blk type %d\n",
|
|
|
item->type);
|
|
@@ -956,6 +974,9 @@ static inline u32 _get_irq_map_size(struct sde_intr_irq_offsets *item)
|
|
|
case SDE_INTR_HWBLK_LTM:
|
|
|
ret = ARRAY_SIZE(sde_irq_ltm_map);
|
|
|
break;
|
|
|
+ case SDE_INTR_HWBLK_WB:
|
|
|
+ ret = ARRAY_SIZE(sde_irq_wb_map);
|
|
|
+ break;
|
|
|
default:
|
|
|
pr_err("invalid type: %d\n", item->type);
|
|
|
}
|
|
@@ -1006,6 +1027,9 @@ static inline struct sde_irq_type *_get_irq_map_addr(
|
|
|
case SDE_INTR_HWBLK_LTM:
|
|
|
ret = sde_irq_ltm_map;
|
|
|
break;
|
|
|
+ case SDE_INTR_HWBLK_WB:
|
|
|
+ ret = sde_irq_wb_map;
|
|
|
+ break;
|
|
|
default:
|
|
|
pr_err("invalid type: %d\n", item->type);
|
|
|
}
|