|
@@ -257,6 +257,7 @@ static int exynos_wkup_irq_set_type(struct irq_data *irqd, unsigned int type)
|
|
|
unsigned long reg_con = d->ctrl->weint_con + bank->eint_offset;
|
|
|
unsigned long shift = EXYNOS_EINT_CON_LEN * pin;
|
|
|
unsigned long con, trig_type;
|
|
|
+ unsigned int mask;
|
|
|
|
|
|
switch (type) {
|
|
|
case IRQ_TYPE_EDGE_RISING:
|
|
@@ -288,6 +289,16 @@ static int exynos_wkup_irq_set_type(struct irq_data *irqd, unsigned int type)
|
|
|
con &= ~(EXYNOS_EINT_CON_MASK << shift);
|
|
|
con |= trig_type << shift;
|
|
|
writel(con, d->virt_base + reg_con);
|
|
|
+
|
|
|
+ reg_con = bank->pctl_offset;
|
|
|
+ shift = pin * bank->func_width;
|
|
|
+ mask = (1 << bank->func_width) - 1;
|
|
|
+
|
|
|
+ con = readl(d->virt_base + reg_con);
|
|
|
+ con &= ~(mask << shift);
|
|
|
+ con |= EXYNOS_EINT_FUNC << shift;
|
|
|
+ writel(con, d->virt_base + reg_con);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|