Skip to content

Commit 20b420d

Browse files
committed
Merge tag 'irqchip-4.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent
Pull irqchip updates for 4.19, take #2 from Marc Zyngier: - bcm7038: compilation fix for !SMP - stm32: fix teardown on probe error - s3c24xx: fix compilation warning - renesas-irqc: r8a774a1 support - tango: chained irq setup simplification - gic-v3: allow wake-up sources
2 parents f19f5c4 + 4110b5c commit 20b420d

File tree

6 files changed

+26
-17
lines changed

6 files changed

+26
-17
lines changed

Documentation/devicetree/bindings/interrupt-controller/renesas,irqc.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Required properties:
1313
- "renesas,irqc-r8a7792" (R-Car V2H)
1414
- "renesas,irqc-r8a7793" (R-Car M2-N)
1515
- "renesas,irqc-r8a7794" (R-Car E2)
16+
- "renesas,intc-ex-r8a774a1" (RZ/G2M)
1617
- "renesas,intc-ex-r8a7795" (R-Car H3)
1718
- "renesas,intc-ex-r8a7796" (R-Car M3-W)
1819
- "renesas,intc-ex-r8a77965" (R-Car M3-N)

drivers/irqchip/irq-bcm7038-l1.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ static int bcm7038_l1_set_affinity(struct irq_data *d,
217217
return 0;
218218
}
219219

220+
#ifdef CONFIG_SMP
220221
static void bcm7038_l1_cpu_offline(struct irq_data *d)
221222
{
222223
struct cpumask *mask = irq_data_get_affinity_mask(d);
@@ -241,6 +242,7 @@ static void bcm7038_l1_cpu_offline(struct irq_data *d)
241242
}
242243
irq_set_affinity_locked(d, &new_affinity, false);
243244
}
245+
#endif
244246

245247
static int __init bcm7038_l1_init_one(struct device_node *dn,
246248
unsigned int idx,
@@ -293,7 +295,9 @@ static struct irq_chip bcm7038_l1_irq_chip = {
293295
.irq_mask = bcm7038_l1_mask,
294296
.irq_unmask = bcm7038_l1_unmask,
295297
.irq_set_affinity = bcm7038_l1_set_affinity,
298+
#ifdef CONFIG_SMP
296299
.irq_cpu_offline = bcm7038_l1_cpu_offline,
300+
#endif
297301
};
298302

299303
static int bcm7038_l1_map(struct irq_domain *d, unsigned int virq,

drivers/irqchip/irq-gic-v3.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,9 @@ static struct irq_chip gic_chip = {
861861
.irq_set_affinity = gic_set_affinity,
862862
.irq_get_irqchip_state = gic_irq_get_irqchip_state,
863863
.irq_set_irqchip_state = gic_irq_set_irqchip_state,
864-
.flags = IRQCHIP_SET_TYPE_MASKED,
864+
.flags = IRQCHIP_SET_TYPE_MASKED |
865+
IRQCHIP_SKIP_SET_WAKE |
866+
IRQCHIP_MASK_ON_SUSPEND,
865867
};
866868

867869
static struct irq_chip gic_eoimode1_chip = {
@@ -874,7 +876,9 @@ static struct irq_chip gic_eoimode1_chip = {
874876
.irq_get_irqchip_state = gic_irq_get_irqchip_state,
875877
.irq_set_irqchip_state = gic_irq_set_irqchip_state,
876878
.irq_set_vcpu_affinity = gic_irq_set_vcpu_affinity,
877-
.flags = IRQCHIP_SET_TYPE_MASKED,
879+
.flags = IRQCHIP_SET_TYPE_MASKED |
880+
IRQCHIP_SKIP_SET_WAKE |
881+
IRQCHIP_MASK_ON_SUSPEND,
878882
};
879883

880884
#define GIC_ID_NR (1U << GICD_TYPER_ID_BITS(gic_data.rdists.gicd_typer))

drivers/irqchip/irq-s3c24xx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ static int s3c_irqext0_type(struct irq_data *data, unsigned int type)
250250
void __iomem *gpcon_reg;
251251
unsigned long gpcon_offset, extint_offset;
252252

253-
if ((data->hwirq >= 0) && (data->hwirq <= 3)) {
253+
if (data->hwirq <= 3) {
254254
gpcon_reg = S3C2410_GPFCON;
255255
extint_reg = S3C24XX_EXTINT0;
256256
gpcon_offset = (data->hwirq) * 2;

drivers/irqchip/irq-stm32-exti.c

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -603,17 +603,24 @@ stm32_exti_host_data *stm32_exti_host_init(const struct stm32_exti_drv_data *dd,
603603
sizeof(struct stm32_exti_chip_data),
604604
GFP_KERNEL);
605605
if (!host_data->chips_data)
606-
return NULL;
606+
goto free_host_data;
607607

608608
host_data->base = of_iomap(node, 0);
609609
if (!host_data->base) {
610610
pr_err("%pOF: Unable to map registers\n", node);
611-
return NULL;
611+
goto free_chips_data;
612612
}
613613

614614
stm32_host_data = host_data;
615615

616616
return host_data;
617+
618+
free_chips_data:
619+
kfree(host_data->chips_data);
620+
free_host_data:
621+
kfree(host_data);
622+
623+
return NULL;
617624
}
618625

619626
static struct
@@ -665,10 +672,8 @@ static int __init stm32_exti_init(const struct stm32_exti_drv_data *drv_data,
665672
struct irq_domain *domain;
666673

667674
host_data = stm32_exti_host_init(drv_data, node);
668-
if (!host_data) {
669-
ret = -ENOMEM;
670-
goto out_free_mem;
671-
}
675+
if (!host_data)
676+
return -ENOMEM;
672677

673678
domain = irq_domain_add_linear(node, drv_data->bank_nr * IRQS_PER_BANK,
674679
&irq_exti_domain_ops, NULL);
@@ -725,7 +730,6 @@ static int __init stm32_exti_init(const struct stm32_exti_drv_data *drv_data,
725730
irq_domain_remove(domain);
726731
out_unmap:
727732
iounmap(host_data->base);
728-
out_free_mem:
729733
kfree(host_data->chips_data);
730734
kfree(host_data);
731735
return ret;
@@ -752,10 +756,8 @@ __init stm32_exti_hierarchy_init(const struct stm32_exti_drv_data *drv_data,
752756
}
753757

754758
host_data = stm32_exti_host_init(drv_data, node);
755-
if (!host_data) {
756-
ret = -ENOMEM;
757-
goto out_free_mem;
758-
}
759+
if (!host_data)
760+
return -ENOMEM;
759761

760762
for (i = 0; i < drv_data->bank_nr; i++)
761763
stm32_exti_chip_init(host_data, i, node);
@@ -777,7 +779,6 @@ __init stm32_exti_hierarchy_init(const struct stm32_exti_drv_data *drv_data,
777779

778780
out_unmap:
779781
iounmap(host_data->base);
780-
out_free_mem:
781782
kfree(host_data->chips_data);
782783
kfree(host_data);
783784
return ret;

drivers/irqchip/irq-tango.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ static int __init tangox_irq_init(void __iomem *base, struct resource *baseres,
205205

206206
tangox_irq_domain_init(dom);
207207

208-
irq_set_chained_handler(irq, tangox_irq_handler);
209-
irq_set_handler_data(irq, dom);
208+
irq_set_chained_handler_and_data(irq, tangox_irq_handler, dom);
210209

211210
return 0;
212211
}

0 commit comments

Comments
 (0)