On Tue, Nov 08, 2005 at 07:10:57PM -0800, Andrew Morton wrote: > Is everyone OK with this? > Looks fine to me, especially if it gets that set_irq_type() stuff out of some of the drivers.
> diff -puN arch/arm/kernel/irq.c~irq-type-flags arch/arm/kernel/irq.c
> --- devel/arch/arm/kernel/irq.c~irq-type-flags 2005-11-06
> 00:55:46.000000000 -0800
> +++ devel-akpm/arch/arm/kernel/irq.c 2005-11-06 00:55:46.000000000 -0800
> @@ -681,10 +681,16 @@ int setup_irq(unsigned int irq, struct i
> */
> desc = irq_desc + irq;
> spin_lock_irqsave(&irq_controller_lock, flags);
> +#define SA_TRIGGER (SA_TRIGGER_HIGH|SA_TRIGGER_LOW|\
> + SA_TRIGGER_RISING|SA_TRIGGER_FALLING)
> p = &desc->action;
> if ((old = *p) != NULL) {
> - /* Can't share interrupts unless both agree to */
> - if (!(old->flags & new->flags & SA_SHIRQ)) {
> + /*
> + * Can't share interrupts unless both agree to and are
> + * the same type.
> + */
> + if (!(old->flags & new->flags & SA_SHIRQ) ||
> + (~old->flags & new->flags) & SA_TRIGGER) {
> spin_unlock_irqrestore(&irq_controller_lock, flags);
> return -EBUSY;
> }
> diff -puN include/linux/signal.h~irq-type-flags include/linux/signal.h
> --- devel/include/linux/signal.h~irq-type-flags 2005-11-06
> 00:55:46.000000000 -0800
> +++ devel-akpm/include/linux/signal.h 2005-11-06 00:55:46.000000000 -0800
> @@ -18,6 +18,14 @@
> #define SA_PROBE SA_ONESHOT
> #define SA_SAMPLE_RANDOM SA_RESTART
> #define SA_SHIRQ 0x04000000
> +/*
> + * As above, these correspond to the __IRQT defines in asm-arm/irq.h
> + * to select the interrupt line behaviour.
> + */
> +#define SA_TRIGGER_HIGH 0x00000008
> +#define SA_TRIGGER_LOW 0x00000004
> +#define SA_TRIGGER_RISING 0x00000002
> +#define SA_TRIGGER_FALLING 0x00000001
>
> /*
> * Real Time signals may be queued.
> _
It probably makes sense to move SA_TRIGGER here as well, as it's going to
be a pretty common mask. Otherwise everyone that plans to make use of
this will likely end up duplicating it.
pgpClermkehYj.pgp
Description: PGP signature
