Skip to content

Commit bd654fb

Browse files
ndreysMarc Zyngier
authored andcommitted
irqchip/irq-imx-gpcv2: Share reg offset calculation code
Move identical offset calculation code into a small helper function and make use of it in the rest of the code. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: cphealy@gmail.com Cc: l.stach@pengutronix.de Cc: Leonard Crestez <leonard.crestez@nxp.com> Cc: "A.s. Dong" <aisheng.dong@nxp.com> Cc: Richard Zhu <hongxing.zhu@nxp.com> Cc: linux-imx@nxp.com Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
1 parent b87442b commit bd654fb

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

drivers/irqchip/irq-imx-gpcv2.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ struct gpcv2_irqchip_data {
2828

2929
static struct gpcv2_irqchip_data *imx_gpcv2_instance;
3030

31+
static void __iomem *gpcv2_idx_to_reg(struct gpcv2_irqchip_data *cd, int i)
32+
{
33+
return cd->gpc_base + cd->cpu2wakeup + i * 4;
34+
}
35+
3136
static int gpcv2_wakeup_source_save(void)
3237
{
3338
struct gpcv2_irqchip_data *cd;
@@ -39,7 +44,7 @@ static int gpcv2_wakeup_source_save(void)
3944
return 0;
4045

4146
for (i = 0; i < IMR_NUM; i++) {
42-
reg = cd->gpc_base + cd->cpu2wakeup + i * 4;
47+
reg = gpcv2_idx_to_reg(cd, i);
4348
cd->saved_irq_mask[i] = readl_relaxed(reg);
4449
writel_relaxed(cd->wakeup_sources[i], reg);
4550
}
@@ -50,17 +55,14 @@ static int gpcv2_wakeup_source_save(void)
5055
static void gpcv2_wakeup_source_restore(void)
5156
{
5257
struct gpcv2_irqchip_data *cd;
53-
void __iomem *reg;
5458
int i;
5559

5660
cd = imx_gpcv2_instance;
5761
if (!cd)
5862
return;
5963

60-
for (i = 0; i < IMR_NUM; i++) {
61-
reg = cd->gpc_base + cd->cpu2wakeup + i * 4;
62-
writel_relaxed(cd->saved_irq_mask[i], reg);
63-
}
64+
for (i = 0; i < IMR_NUM; i++)
65+
writel_relaxed(cd->saved_irq_mask[i], gpcv2_idx_to_reg(cd, i));
6466
}
6567

6668
static struct syscore_ops imx_gpcv2_syscore_ops = {
@@ -97,7 +99,7 @@ static void imx_gpcv2_irq_unmask(struct irq_data *d)
9799
u32 val;
98100

99101
raw_spin_lock(&cd->rlock);
100-
reg = cd->gpc_base + cd->cpu2wakeup + d->hwirq / 32 * 4;
102+
reg = gpcv2_idx_to_reg(cd, d->hwirq / 32);
101103
val = readl_relaxed(reg);
102104
val &= ~(1 << d->hwirq % 32);
103105
writel_relaxed(val, reg);
@@ -113,7 +115,7 @@ static void imx_gpcv2_irq_mask(struct irq_data *d)
113115
u32 val;
114116

115117
raw_spin_lock(&cd->rlock);
116-
reg = cd->gpc_base + cd->cpu2wakeup + d->hwirq / 32 * 4;
118+
reg = gpcv2_idx_to_reg(cd, d->hwirq / 32);
117119
val = readl_relaxed(reg);
118120
val |= 1 << (d->hwirq % 32);
119121
writel_relaxed(val, reg);

0 commit comments

Comments
 (0)