|
@@ -573,26 +573,14 @@ static int sunxi_pinctrl_irq_set_type(struct irq_data *d,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void sunxi_pinctrl_irq_mask_ack(struct irq_data *d)
|
|
|
|
|
|
+static void sunxi_pinctrl_irq_ack(struct irq_data *d)
|
|
{
|
|
{
|
|
struct sunxi_pinctrl *pctl = irq_data_get_irq_chip_data(d);
|
|
struct sunxi_pinctrl *pctl = irq_data_get_irq_chip_data(d);
|
|
- u32 ctrl_reg = sunxi_irq_ctrl_reg(d->hwirq);
|
|
|
|
- u8 ctrl_idx = sunxi_irq_ctrl_offset(d->hwirq);
|
|
|
|
u32 status_reg = sunxi_irq_status_reg(d->hwirq);
|
|
u32 status_reg = sunxi_irq_status_reg(d->hwirq);
|
|
u8 status_idx = sunxi_irq_status_offset(d->hwirq);
|
|
u8 status_idx = sunxi_irq_status_offset(d->hwirq);
|
|
- unsigned long flags;
|
|
|
|
- u32 val;
|
|
|
|
-
|
|
|
|
- spin_lock_irqsave(&pctl->lock, flags);
|
|
|
|
-
|
|
|
|
- /* Mask the IRQ */
|
|
|
|
- val = readl(pctl->membase + ctrl_reg);
|
|
|
|
- writel(val & ~(1 << ctrl_idx), pctl->membase + ctrl_reg);
|
|
|
|
|
|
|
|
/* Clear the IRQ */
|
|
/* Clear the IRQ */
|
|
writel(1 << status_idx, pctl->membase + status_reg);
|
|
writel(1 << status_idx, pctl->membase + status_reg);
|
|
-
|
|
|
|
- spin_unlock_irqrestore(&pctl->lock, flags);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void sunxi_pinctrl_irq_mask(struct irq_data *d)
|
|
static void sunxi_pinctrl_irq_mask(struct irq_data *d)
|
|
@@ -638,8 +626,8 @@ static void sunxi_pinctrl_irq_unmask(struct irq_data *d)
|
|
}
|
|
}
|
|
|
|
|
|
static struct irq_chip sunxi_pinctrl_irq_chip = {
|
|
static struct irq_chip sunxi_pinctrl_irq_chip = {
|
|
|
|
+ .irq_ack = sunxi_pinctrl_irq_ack,
|
|
.irq_mask = sunxi_pinctrl_irq_mask,
|
|
.irq_mask = sunxi_pinctrl_irq_mask,
|
|
- .irq_mask_ack = sunxi_pinctrl_irq_mask_ack,
|
|
|
|
.irq_unmask = sunxi_pinctrl_irq_unmask,
|
|
.irq_unmask = sunxi_pinctrl_irq_unmask,
|
|
.irq_set_type = sunxi_pinctrl_irq_set_type,
|
|
.irq_set_type = sunxi_pinctrl_irq_set_type,
|
|
};
|
|
};
|