diff options
-rw-r--r-- | kernel/irq/autoprobe.c | 5 | ||||
-rw-r--r-- | kernel/irq/chip.c | 7 | ||||
-rw-r--r-- | kernel/irq/manage.c | 10 |
3 files changed, 15 insertions, 7 deletions
diff --git a/kernel/irq/autoprobe.c b/kernel/irq/autoprobe.c index 7a468254e533..505798f86c36 100644 --- a/kernel/irq/autoprobe.c +++ b/kernel/irq/autoprobe.c | |||
@@ -57,8 +57,9 @@ unsigned long probe_irq_on(void) | |||
57 | * Some chips need to know about probing in | 57 | * Some chips need to know about probing in |
58 | * progress: | 58 | * progress: |
59 | */ | 59 | */ |
60 | if (desc->irq_data.chip->set_type) | 60 | if (desc->irq_data.chip->irq_set_type) |
61 | desc->irq_data.chip->set_type(i, IRQ_TYPE_PROBE); | 61 | desc->irq_data.chip->irq_set_type(&desc->irq_data, |
62 | IRQ_TYPE_PROBE); | ||
62 | desc->irq_data.chip->irq_startup(&desc->irq_data); | 63 | desc->irq_data.chip->irq_startup(&desc->irq_data); |
63 | } | 64 | } |
64 | raw_spin_unlock_irq(&desc->lock); | 65 | raw_spin_unlock_irq(&desc->lock); |
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index df51792d9fd3..b7dd02a99c80 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -376,6 +376,11 @@ static int compat_irq_set_affinity(struct irq_data *data, | |||
376 | return data->chip->set_affinity(data->irq, dest); | 376 | return data->chip->set_affinity(data->irq, dest); |
377 | } | 377 | } |
378 | 378 | ||
379 | static int compat_irq_set_type(struct irq_data *data, unsigned int type) | ||
380 | { | ||
381 | return data->chip->set_type(data->irq, type); | ||
382 | } | ||
383 | |||
379 | static void compat_bus_lock(struct irq_data *data) | 384 | static void compat_bus_lock(struct irq_data *data) |
380 | { | 385 | { |
381 | data->chip->bus_lock(data->irq); | 386 | data->chip->bus_lock(data->irq); |
@@ -444,6 +449,8 @@ void irq_chip_set_defaults(struct irq_chip *chip) | |||
444 | chip->irq_eoi = compat_irq_eoi; | 449 | chip->irq_eoi = compat_irq_eoi; |
445 | if (chip->set_affinity) | 450 | if (chip->set_affinity) |
446 | chip->irq_set_affinity = compat_irq_set_affinity; | 451 | chip->irq_set_affinity = compat_irq_set_affinity; |
452 | if (chip->set_type) | ||
453 | chip->irq_set_type = compat_irq_set_type; | ||
447 | } | 454 | } |
448 | 455 | ||
449 | static inline void mask_ack_irq(struct irq_desc *desc) | 456 | static inline void mask_ack_irq(struct irq_desc *desc) |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 305a60ff756b..3618362b3d8d 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -430,12 +430,12 @@ void compat_irq_chip_set_default_handler(struct irq_desc *desc) | |||
430 | } | 430 | } |
431 | 431 | ||
432 | int __irq_set_trigger(struct irq_desc *desc, unsigned int irq, | 432 | int __irq_set_trigger(struct irq_desc *desc, unsigned int irq, |
433 | unsigned long flags) | 433 | unsigned long flags) |
434 | { | 434 | { |
435 | int ret; | 435 | int ret; |
436 | struct irq_chip *chip = desc->irq_data.chip; | 436 | struct irq_chip *chip = desc->irq_data.chip; |
437 | 437 | ||
438 | if (!chip || !chip->set_type) { | 438 | if (!chip || !chip->irq_set_type) { |
439 | /* | 439 | /* |
440 | * IRQF_TRIGGER_* but the PIC does not support multiple | 440 | * IRQF_TRIGGER_* but the PIC does not support multiple |
441 | * flow-types? | 441 | * flow-types? |
@@ -446,11 +446,11 @@ int __irq_set_trigger(struct irq_desc *desc, unsigned int irq, | |||
446 | } | 446 | } |
447 | 447 | ||
448 | /* caller masked out all except trigger mode flags */ | 448 | /* caller masked out all except trigger mode flags */ |
449 | ret = chip->set_type(irq, flags); | 449 | ret = chip->irq_set_type(&desc->irq_data, flags); |
450 | 450 | ||
451 | if (ret) | 451 | if (ret) |
452 | pr_err("setting trigger mode %d for irq %u failed (%pF)\n", | 452 | pr_err("setting trigger mode %lu for irq %u failed (%pF)\n", |
453 | (int)flags, irq, chip->set_type); | 453 | flags, irq, chip->irq_set_type); |
454 | else { | 454 | else { |
455 | if (flags & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) | 455 | if (flags & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) |
456 | flags |= IRQ_LEVEL; | 456 | flags |= IRQ_LEVEL; |