diff options
-rw-r--r-- | arch/arm/kernel/irq.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-omap1/serial.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-pxa/corgi.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-pxa/poodle.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-pxa/spitz.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/usb-simtec.c | 6 | ||||
-rw-r--r-- | drivers/i2c/chips/tps65010.c | 11 | ||||
-rw-r--r-- | drivers/input/keyboard/corgikbd.c | 6 | ||||
-rw-r--r-- | drivers/input/keyboard/spitzkbd.c | 27 | ||||
-rw-r--r-- | drivers/mfd/ucb1x00-core.c | 5 | ||||
-rw-r--r-- | drivers/net/smc91x.c | 5 | ||||
-rw-r--r-- | drivers/net/smc91x.h | 18 | ||||
-rw-r--r-- | include/asm-arm/irq.h | 12 | ||||
-rw-r--r-- | include/linux/signal.h | 13 |
14 files changed, 80 insertions, 61 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 869c466e6258..b5645c4462cf 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -684,8 +684,12 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
684 | spin_lock_irqsave(&irq_controller_lock, flags); | 684 | spin_lock_irqsave(&irq_controller_lock, flags); |
685 | p = &desc->action; | 685 | p = &desc->action; |
686 | if ((old = *p) != NULL) { | 686 | if ((old = *p) != NULL) { |
687 | /* Can't share interrupts unless both agree to */ | 687 | /* |
688 | if (!(old->flags & new->flags & SA_SHIRQ)) { | 688 | * Can't share interrupts unless both agree to and are |
689 | * the same type. | ||
690 | */ | ||
691 | if (!(old->flags & new->flags & SA_SHIRQ) || | ||
692 | (~old->flags & new->flags) & SA_TRIGGER_MASK) { | ||
689 | spin_unlock_irqrestore(&irq_controller_lock, flags); | 693 | spin_unlock_irqrestore(&irq_controller_lock, flags); |
690 | return -EBUSY; | 694 | return -EBUSY; |
691 | } | 695 | } |
@@ -705,6 +709,12 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
705 | desc->running = 0; | 709 | desc->running = 0; |
706 | desc->pending = 0; | 710 | desc->pending = 0; |
707 | desc->disable_depth = 1; | 711 | desc->disable_depth = 1; |
712 | |||
713 | if (new->flags & SA_TRIGGER_MASK) { | ||
714 | unsigned int type = new->flags & SA_TRIGGER_MASK; | ||
715 | desc->chip->set_type(irq, type); | ||
716 | } | ||
717 | |||
708 | if (!desc->noautoenable) { | 718 | if (!desc->noautoenable) { |
709 | desc->disable_depth = 0; | 719 | desc->disable_depth = 0; |
710 | desc->chip->unmask(irq); | 720 | desc->chip->unmask(irq); |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index fcfb81d13cfe..7a68f098a025 100644 --- a/arch/arm/mach-omap1/serial.c +++ b/arch/arm/mach-omap1/serial.c | |||
@@ -252,9 +252,8 @@ static void __init omap_serial_set_port_wakeup(int gpio_nr) | |||
252 | return; | 252 | return; |
253 | } | 253 | } |
254 | omap_set_gpio_direction(gpio_nr, 1); | 254 | omap_set_gpio_direction(gpio_nr, 1); |
255 | set_irq_type(OMAP_GPIO_IRQ(gpio_nr), IRQT_RISING); | ||
256 | ret = request_irq(OMAP_GPIO_IRQ(gpio_nr), &omap_serial_wake_interrupt, | 255 | ret = request_irq(OMAP_GPIO_IRQ(gpio_nr), &omap_serial_wake_interrupt, |
257 | 0, "serial wakeup", NULL); | 256 | SA_TRIGGER_RISING, "serial wakeup", NULL); |
258 | if (ret) { | 257 | if (ret) { |
259 | omap_free_gpio(gpio_nr); | 258 | omap_free_gpio(gpio_nr); |
260 | printk(KERN_ERR "No interrupt for UART wake GPIO: %i\n", | 259 | printk(KERN_ERR "No interrupt for UART wake GPIO: %i\n", |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 100fb31b5156..5a7b873f29b3 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -213,15 +213,14 @@ static int corgi_mci_init(struct device *dev, irqreturn_t (*corgi_detect_int)(in | |||
213 | 213 | ||
214 | corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250); | 214 | corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250); |
215 | 215 | ||
216 | err = request_irq(CORGI_IRQ_GPIO_nSD_DETECT, corgi_detect_int, SA_INTERRUPT, | 216 | err = request_irq(CORGI_IRQ_GPIO_nSD_DETECT, corgi_detect_int, |
217 | "MMC card detect", data); | 217 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
218 | "MMC card detect", data); | ||
218 | if (err) { | 219 | if (err) { |
219 | printk(KERN_ERR "corgi_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); | 220 | printk(KERN_ERR "corgi_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); |
220 | return -1; | 221 | return -1; |
221 | } | 222 | } |
222 | 223 | ||
223 | set_irq_type(CORGI_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE); | ||
224 | |||
225 | return 0; | 224 | return 0; |
226 | } | 225 | } |
227 | 226 | ||
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index eef3de26ad37..663c95005985 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -146,15 +146,14 @@ static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)( | |||
146 | 146 | ||
147 | poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250); | 147 | poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250); |
148 | 148 | ||
149 | err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int, SA_INTERRUPT, | 149 | err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int, |
150 | "MMC card detect", data); | 150 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
151 | "MMC card detect", data); | ||
151 | if (err) { | 152 | if (err) { |
152 | printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); | 153 | printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); |
153 | return -1; | 154 | return -1; |
154 | } | 155 | } |
155 | 156 | ||
156 | set_irq_type(POODLE_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE); | ||
157 | |||
158 | return 0; | 157 | return 0; |
159 | } | 158 | } |
160 | 159 | ||
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index f2007db0cda5..a9eacc06555f 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -296,15 +296,14 @@ static int spitz_mci_init(struct device *dev, irqreturn_t (*spitz_detect_int)(in | |||
296 | 296 | ||
297 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); | 297 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); |
298 | 298 | ||
299 | err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, SA_INTERRUPT, | 299 | err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, |
300 | "MMC card detect", data); | 300 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
301 | "MMC card detect", data); | ||
301 | if (err) { | 302 | if (err) { |
302 | printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); | 303 | printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); |
303 | return -1; | 304 | return -1; |
304 | } | 305 | } |
305 | 306 | ||
306 | set_irq_type(SPITZ_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE); | ||
307 | |||
308 | return 0; | 307 | return 0; |
309 | } | 308 | } |
310 | 309 | ||
diff --git a/arch/arm/mach-s3c2410/usb-simtec.c b/arch/arm/mach-s3c2410/usb-simtec.c index 5098b50158a3..495f8c6ffcb6 100644 --- a/arch/arm/mach-s3c2410/usb-simtec.c +++ b/arch/arm/mach-s3c2410/usb-simtec.c | |||
@@ -84,13 +84,13 @@ static void usb_simtec_enableoc(struct s3c2410_hcd_info *info, int on) | |||
84 | int ret; | 84 | int ret; |
85 | 85 | ||
86 | if (on) { | 86 | if (on) { |
87 | ret = request_irq(IRQ_USBOC, usb_simtec_ocirq, SA_INTERRUPT, | 87 | ret = request_irq(IRQ_USBOC, usb_simtec_ocirq, |
88 | SA_INTERRUPT | SA_TRIGGER_RISING | | ||
89 | SA_TRIGGER_FALLING, | ||
88 | "USB Over-current", info); | 90 | "USB Over-current", info); |
89 | if (ret != 0) { | 91 | if (ret != 0) { |
90 | printk(KERN_ERR "failed to request usb oc irq\n"); | 92 | printk(KERN_ERR "failed to request usb oc irq\n"); |
91 | } | 93 | } |
92 | |||
93 | set_irq_type(IRQ_USBOC, IRQT_BOTHEDGE); | ||
94 | } else { | 94 | } else { |
95 | free_irq(IRQ_USBOC, info); | 95 | free_irq(IRQ_USBOC, info); |
96 | } | 96 | } |
diff --git a/drivers/i2c/chips/tps65010.c b/drivers/i2c/chips/tps65010.c index e70b3db69edd..1af3dfbb8086 100644 --- a/drivers/i2c/chips/tps65010.c +++ b/drivers/i2c/chips/tps65010.c | |||
@@ -494,6 +494,7 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
494 | { | 494 | { |
495 | struct tps65010 *tps; | 495 | struct tps65010 *tps; |
496 | int status; | 496 | int status; |
497 | unsigned long irqflags; | ||
497 | 498 | ||
498 | if (the_tps) { | 499 | if (the_tps) { |
499 | dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME); | 500 | dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME); |
@@ -520,13 +521,14 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
520 | } | 521 | } |
521 | 522 | ||
522 | #ifdef CONFIG_ARM | 523 | #ifdef CONFIG_ARM |
524 | irqflags = SA_SAMPLE_RANDOM | SA_TRIGGER_LOW; | ||
523 | if (machine_is_omap_h2()) { | 525 | if (machine_is_omap_h2()) { |
524 | tps->model = TPS65010; | 526 | tps->model = TPS65010; |
525 | omap_cfg_reg(W4_GPIO58); | 527 | omap_cfg_reg(W4_GPIO58); |
526 | tps->irq = OMAP_GPIO_IRQ(58); | 528 | tps->irq = OMAP_GPIO_IRQ(58); |
527 | omap_request_gpio(58); | 529 | omap_request_gpio(58); |
528 | omap_set_gpio_direction(58, 1); | 530 | omap_set_gpio_direction(58, 1); |
529 | set_irq_type(tps->irq, IRQT_FALLING); | 531 | irqflags |= SA_TRIGGER_FALLING; |
530 | } | 532 | } |
531 | if (machine_is_omap_osk()) { | 533 | if (machine_is_omap_osk()) { |
532 | tps->model = TPS65010; | 534 | tps->model = TPS65010; |
@@ -534,7 +536,7 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
534 | tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)); | 536 | tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)); |
535 | omap_request_gpio(OMAP_MPUIO(1)); | 537 | omap_request_gpio(OMAP_MPUIO(1)); |
536 | omap_set_gpio_direction(OMAP_MPUIO(1), 1); | 538 | omap_set_gpio_direction(OMAP_MPUIO(1), 1); |
537 | set_irq_type(tps->irq, IRQT_FALLING); | 539 | irqflags |= SA_TRIGGER_FALLING; |
538 | } | 540 | } |
539 | if (machine_is_omap_h3()) { | 541 | if (machine_is_omap_h3()) { |
540 | tps->model = TPS65013; | 542 | tps->model = TPS65013; |
@@ -542,13 +544,12 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
542 | // FIXME set up this board's IRQ ... | 544 | // FIXME set up this board's IRQ ... |
543 | } | 545 | } |
544 | #else | 546 | #else |
545 | #define set_irq_type(num,trigger) do{}while(0) | 547 | irqflags = SA_SAMPLE_RANDOM; |
546 | #endif | 548 | #endif |
547 | 549 | ||
548 | if (tps->irq > 0) { | 550 | if (tps->irq > 0) { |
549 | set_irq_type(tps->irq, IRQT_LOW); | ||
550 | status = request_irq(tps->irq, tps65010_irq, | 551 | status = request_irq(tps->irq, tps65010_irq, |
551 | SA_SAMPLE_RANDOM, DRIVER_NAME, tps); | 552 | irqflags, DRIVER_NAME, tps); |
552 | if (status < 0) { | 553 | if (status < 0) { |
553 | dev_dbg(&tps->client.dev, "can't get IRQ %d, err %d\n", | 554 | dev_dbg(&tps->client.dev, "can't get IRQ %d, err %d\n", |
554 | tps->irq, status); | 555 | tps->irq, status); |
diff --git a/drivers/input/keyboard/corgikbd.c b/drivers/input/keyboard/corgikbd.c index 64672d491222..e301ee4ca264 100644 --- a/drivers/input/keyboard/corgikbd.c +++ b/drivers/input/keyboard/corgikbd.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/jiffies.h> | 19 | #include <linux/jiffies.h> |
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/slab.h> | 21 | #include <linux/slab.h> |
22 | #include <asm/irq.h> | ||
23 | 22 | ||
24 | #include <asm/arch/corgi.h> | 23 | #include <asm/arch/corgi.h> |
25 | #include <asm/arch/hardware.h> | 24 | #include <asm/arch/hardware.h> |
@@ -343,10 +342,9 @@ static int __init corgikbd_probe(struct platform_device *pdev) | |||
343 | for (i = 0; i < CORGI_KEY_SENSE_NUM; i++) { | 342 | for (i = 0; i < CORGI_KEY_SENSE_NUM; i++) { |
344 | pxa_gpio_mode(CORGI_GPIO_KEY_SENSE(i) | GPIO_IN); | 343 | pxa_gpio_mode(CORGI_GPIO_KEY_SENSE(i) | GPIO_IN); |
345 | if (request_irq(CORGI_IRQ_GPIO_KEY_SENSE(i), corgikbd_interrupt, | 344 | if (request_irq(CORGI_IRQ_GPIO_KEY_SENSE(i), corgikbd_interrupt, |
346 | SA_INTERRUPT, "corgikbd", corgikbd)) | 345 | SA_INTERRUPT | SA_TRIGGER_RISING, |
346 | "corgikbd", corgikbd)) | ||
347 | printk(KERN_WARNING "corgikbd: Can't get IRQ: %d!\n", i); | 347 | printk(KERN_WARNING "corgikbd: Can't get IRQ: %d!\n", i); |
348 | else | ||
349 | set_irq_type(CORGI_IRQ_GPIO_KEY_SENSE(i),IRQT_RISING); | ||
350 | } | 348 | } |
351 | 349 | ||
352 | /* Set Strobe lines as outputs - set high */ | 350 | /* Set Strobe lines as outputs - set high */ |
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c index 6a15fe3bc527..83999d583122 100644 --- a/drivers/input/keyboard/spitzkbd.c +++ b/drivers/input/keyboard/spitzkbd.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/jiffies.h> | 19 | #include <linux/jiffies.h> |
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/slab.h> | 21 | #include <linux/slab.h> |
22 | #include <asm/irq.h> | ||
23 | 22 | ||
24 | #include <asm/arch/spitz.h> | 23 | #include <asm/arch/spitz.h> |
25 | #include <asm/arch/hardware.h> | 24 | #include <asm/arch/hardware.h> |
@@ -407,10 +406,9 @@ static int __init spitzkbd_probe(struct platform_device *dev) | |||
407 | for (i = 0; i < SPITZ_KEY_SENSE_NUM; i++) { | 406 | for (i = 0; i < SPITZ_KEY_SENSE_NUM; i++) { |
408 | pxa_gpio_mode(spitz_senses[i] | GPIO_IN); | 407 | pxa_gpio_mode(spitz_senses[i] | GPIO_IN); |
409 | if (request_irq(IRQ_GPIO(spitz_senses[i]), spitzkbd_interrupt, | 408 | if (request_irq(IRQ_GPIO(spitz_senses[i]), spitzkbd_interrupt, |
410 | SA_INTERRUPT, "Spitzkbd Sense", spitzkbd)) | 409 | SA_INTERRUPT|SA_TRIGGER_RISING, |
410 | "Spitzkbd Sense", spitzkbd)) | ||
411 | printk(KERN_WARNING "spitzkbd: Can't get Sense IRQ: %d!\n", i); | 411 | printk(KERN_WARNING "spitzkbd: Can't get Sense IRQ: %d!\n", i); |
412 | else | ||
413 | set_irq_type(IRQ_GPIO(spitz_senses[i]),IRQT_RISING); | ||
414 | } | 412 | } |
415 | 413 | ||
416 | /* Set Strobe lines as outputs - set high */ | 414 | /* Set Strobe lines as outputs - set high */ |
@@ -422,15 +420,18 @@ static int __init spitzkbd_probe(struct platform_device *dev) | |||
422 | pxa_gpio_mode(SPITZ_GPIO_SWA | GPIO_IN); | 420 | pxa_gpio_mode(SPITZ_GPIO_SWA | GPIO_IN); |
423 | pxa_gpio_mode(SPITZ_GPIO_SWB | GPIO_IN); | 421 | pxa_gpio_mode(SPITZ_GPIO_SWB | GPIO_IN); |
424 | 422 | ||
425 | request_irq(SPITZ_IRQ_GPIO_SYNC, spitzkbd_interrupt, SA_INTERRUPT, "Spitzkbd Sync", spitzkbd); | 423 | request_irq(SPITZ_IRQ_GPIO_SYNC, spitzkbd_interrupt, |
426 | request_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd_interrupt, SA_INTERRUPT, "Spitzkbd PwrOn", spitzkbd); | 424 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
427 | request_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd_hinge_isr, SA_INTERRUPT, "Spitzkbd SWA", spitzkbd); | 425 | "Spitzkbd Sync", spitzkbd); |
428 | request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr, SA_INTERRUPT, "Spitzkbd SWB", spitzkbd); | 426 | request_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd_interrupt, |
429 | 427 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, | |
430 | set_irq_type(SPITZ_IRQ_GPIO_SYNC, IRQT_BOTHEDGE); | 428 | "Spitzkbd PwrOn", spitzkbd); |
431 | set_irq_type(SPITZ_IRQ_GPIO_ON_KEY, IRQT_BOTHEDGE); | 429 | request_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd_hinge_isr, |
432 | set_irq_type(SPITZ_IRQ_GPIO_SWA, IRQT_BOTHEDGE); | 430 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
433 | set_irq_type(SPITZ_IRQ_GPIO_SWB, IRQT_BOTHEDGE); | 431 | "Spitzkbd SWA", spitzkbd); |
432 | request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr, | ||
433 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, | ||
434 | "Spitzkbd SWB", spitzkbd); | ||
434 | 435 | ||
435 | printk(KERN_INFO "input: Spitz Keyboard Registered\n"); | 436 | printk(KERN_INFO "input: Spitz Keyboard Registered\n"); |
436 | 437 | ||
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c index e335d54c4659..b42e0fbab59b 100644 --- a/drivers/mfd/ucb1x00-core.c +++ b/drivers/mfd/ucb1x00-core.c | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #include <asm/dma.h> | 28 | #include <asm/dma.h> |
29 | #include <asm/hardware.h> | 29 | #include <asm/hardware.h> |
30 | #include <asm/irq.h> | ||
31 | 30 | ||
32 | #include "ucb1x00.h" | 31 | #include "ucb1x00.h" |
33 | 32 | ||
@@ -507,14 +506,14 @@ static int ucb1x00_probe(struct mcp *mcp) | |||
507 | goto err_free; | 506 | goto err_free; |
508 | } | 507 | } |
509 | 508 | ||
510 | ret = request_irq(ucb->irq, ucb1x00_irq, 0, "UCB1x00", ucb); | 509 | ret = request_irq(ucb->irq, ucb1x00_irq, SA_TRIGGER_RISING, |
510 | "UCB1x00", ucb); | ||
511 | if (ret) { | 511 | if (ret) { |
512 | printk(KERN_ERR "ucb1x00: unable to grab irq%d: %d\n", | 512 | printk(KERN_ERR "ucb1x00: unable to grab irq%d: %d\n", |
513 | ucb->irq, ret); | 513 | ucb->irq, ret); |
514 | goto err_free; | 514 | goto err_free; |
515 | } | 515 | } |
516 | 516 | ||
517 | set_irq_type(ucb->irq, IRQT_RISING); | ||
518 | mcp_set_drvdata(mcp, ucb); | 517 | mcp_set_drvdata(mcp, ucb); |
519 | 518 | ||
520 | ret = class_device_register(&ucb->cdev); | 519 | ret = class_device_register(&ucb->cdev); |
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index 28bf2e69eb5e..7ec08127c9d6 100644 --- a/drivers/net/smc91x.c +++ b/drivers/net/smc91x.c | |||
@@ -88,7 +88,6 @@ static const char version[] = | |||
88 | #include <linux/skbuff.h> | 88 | #include <linux/skbuff.h> |
89 | 89 | ||
90 | #include <asm/io.h> | 90 | #include <asm/io.h> |
91 | #include <asm/irq.h> | ||
92 | 91 | ||
93 | #include "smc91x.h" | 92 | #include "smc91x.h" |
94 | 93 | ||
@@ -2007,12 +2006,10 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr) | |||
2007 | } | 2006 | } |
2008 | 2007 | ||
2009 | /* Grab the IRQ */ | 2008 | /* Grab the IRQ */ |
2010 | retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev); | 2009 | retval = request_irq(dev->irq, &smc_interrupt, SMC_IRQ_FLAGS, dev->name, dev); |
2011 | if (retval) | 2010 | if (retval) |
2012 | goto err_out; | 2011 | goto err_out; |
2013 | 2012 | ||
2014 | set_irq_type(dev->irq, SMC_IRQ_TRIGGER_TYPE); | ||
2015 | |||
2016 | #ifdef SMC_USE_PXA_DMA | 2013 | #ifdef SMC_USE_PXA_DMA |
2017 | { | 2014 | { |
2018 | int dma = pxa_request_dma(dev->name, DMA_PRIO_LOW, | 2015 | int dma = pxa_request_dma(dev->name, DMA_PRIO_LOW, |
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h index 5c2824be4ee6..e0efd1964e72 100644 --- a/drivers/net/smc91x.h +++ b/drivers/net/smc91x.h | |||
@@ -90,7 +90,7 @@ | |||
90 | __l--; \ | 90 | __l--; \ |
91 | } \ | 91 | } \ |
92 | } while (0) | 92 | } while (0) |
93 | #define set_irq_type(irq, type) | 93 | #define SMC_IRQ_FLAGS (0) |
94 | 94 | ||
95 | #elif defined(CONFIG_SA1100_PLEB) | 95 | #elif defined(CONFIG_SA1100_PLEB) |
96 | /* We can only do 16-bit reads and writes in the static memory space. */ | 96 | /* We can only do 16-bit reads and writes in the static memory space. */ |
@@ -109,7 +109,7 @@ | |||
109 | #define SMC_outw(v, a, r) writew(v, (a) + (r)) | 109 | #define SMC_outw(v, a, r) writew(v, (a) + (r)) |
110 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) | 110 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) |
111 | 111 | ||
112 | #define set_irq_type(irq, type) do {} while (0) | 112 | #define SMC_IRQ_FLAGS (0) |
113 | 113 | ||
114 | #elif defined(CONFIG_SA1100_ASSABET) | 114 | #elif defined(CONFIG_SA1100_ASSABET) |
115 | 115 | ||
@@ -185,11 +185,11 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
185 | #include <asm/mach-types.h> | 185 | #include <asm/mach-types.h> |
186 | #include <asm/arch/cpu.h> | 186 | #include <asm/arch/cpu.h> |
187 | 187 | ||
188 | #define SMC_IRQ_TRIGGER_TYPE (( \ | 188 | #define SMC_IRQ_FLAGS (( \ |
189 | machine_is_omap_h2() \ | 189 | machine_is_omap_h2() \ |
190 | || machine_is_omap_h3() \ | 190 | || machine_is_omap_h3() \ |
191 | || (machine_is_omap_innovator() && !cpu_is_omap1510()) \ | 191 | || (machine_is_omap_innovator() && !cpu_is_omap1510()) \ |
192 | ) ? IRQT_FALLING : IRQT_RISING) | 192 | ) ? SA_TRIGGER_FALLING : SA_TRIGGER_RISING) |
193 | 193 | ||
194 | 194 | ||
195 | #elif defined(CONFIG_SH_SH4202_MICRODEV) | 195 | #elif defined(CONFIG_SH_SH4202_MICRODEV) |
@@ -209,7 +209,7 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
209 | #define SMC_insw(a, r, p, l) insw((a) + (r) - 0xa0000000, p, l) | 209 | #define SMC_insw(a, r, p, l) insw((a) + (r) - 0xa0000000, p, l) |
210 | #define SMC_outsw(a, r, p, l) outsw((a) + (r) - 0xa0000000, p, l) | 210 | #define SMC_outsw(a, r, p, l) outsw((a) + (r) - 0xa0000000, p, l) |
211 | 211 | ||
212 | #define set_irq_type(irq, type) do {} while(0) | 212 | #define SMC_IRQ_FLAGS (0) |
213 | 213 | ||
214 | #elif defined(CONFIG_ISA) | 214 | #elif defined(CONFIG_ISA) |
215 | 215 | ||
@@ -237,7 +237,7 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
237 | #define SMC_insw(a, r, p, l) insw(((u32)a) + (r), p, l) | 237 | #define SMC_insw(a, r, p, l) insw(((u32)a) + (r), p, l) |
238 | #define SMC_outsw(a, r, p, l) outsw(((u32)a) + (r), p, l) | 238 | #define SMC_outsw(a, r, p, l) outsw(((u32)a) + (r), p, l) |
239 | 239 | ||
240 | #define set_irq_type(irq, type) do {} while(0) | 240 | #define SMC_IRQ_FLAGS (0) |
241 | 241 | ||
242 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX | 242 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX |
243 | #define RPC_LSB_DEFAULT RPC_LED_100_10 | 243 | #define RPC_LSB_DEFAULT RPC_LED_100_10 |
@@ -319,7 +319,7 @@ static inline void SMC_outsw (unsigned long a, int r, unsigned char* p, int l) | |||
319 | au_writew(*_p++ , _a); \ | 319 | au_writew(*_p++ , _a); \ |
320 | } while(0) | 320 | } while(0) |
321 | 321 | ||
322 | #define set_irq_type(irq, type) do {} while (0) | 322 | #define SMC_IRQ_FLAGS (0) |
323 | 323 | ||
324 | #else | 324 | #else |
325 | 325 | ||
@@ -342,8 +342,8 @@ static inline void SMC_outsw (unsigned long a, int r, unsigned char* p, int l) | |||
342 | 342 | ||
343 | #endif | 343 | #endif |
344 | 344 | ||
345 | #ifndef SMC_IRQ_TRIGGER_TYPE | 345 | #ifndef SMC_IRQ_FLAGS |
346 | #define SMC_IRQ_TRIGGER_TYPE IRQT_RISING | 346 | #define SMC_IRQ_FLAGS SA_TRIGGER_RISING |
347 | #endif | 347 | #endif |
348 | 348 | ||
349 | #ifdef SMC_USE_PXA_DMA | 349 | #ifdef SMC_USE_PXA_DMA |
diff --git a/include/asm-arm/irq.h b/include/asm-arm/irq.h index 59975ee43cf1..7772432d3fd7 100644 --- a/include/asm-arm/irq.h +++ b/include/asm-arm/irq.h | |||
@@ -25,10 +25,14 @@ extern void disable_irq_nosync(unsigned int); | |||
25 | extern void disable_irq(unsigned int); | 25 | extern void disable_irq(unsigned int); |
26 | extern void enable_irq(unsigned int); | 26 | extern void enable_irq(unsigned int); |
27 | 27 | ||
28 | #define __IRQT_FALEDGE (1 << 0) | 28 | /* |
29 | #define __IRQT_RISEDGE (1 << 1) | 29 | * These correspond with the SA_TRIGGER_* defines, and therefore the |
30 | #define __IRQT_LOWLVL (1 << 2) | 30 | * IRQRESOURCE_IRQ_* defines. |
31 | #define __IRQT_HIGHLVL (1 << 3) | 31 | */ |
32 | #define __IRQT_RISEDGE (1 << 0) | ||
33 | #define __IRQT_FALEDGE (1 << 1) | ||
34 | #define __IRQT_HIGHLVL (1 << 2) | ||
35 | #define __IRQT_LOWLVL (1 << 3) | ||
32 | 36 | ||
33 | #define IRQT_NOEDGE (0) | 37 | #define IRQT_NOEDGE (0) |
34 | #define IRQT_RISING (__IRQT_RISEDGE) | 38 | #define IRQT_RISING (__IRQT_RISEDGE) |
diff --git a/include/linux/signal.h b/include/linux/signal.h index 5dd5f02c5c5f..ea9eff16c4b7 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
@@ -18,6 +18,19 @@ | |||
18 | #define SA_PROBE SA_ONESHOT | 18 | #define SA_PROBE SA_ONESHOT |
19 | #define SA_SAMPLE_RANDOM SA_RESTART | 19 | #define SA_SAMPLE_RANDOM SA_RESTART |
20 | #define SA_SHIRQ 0x04000000 | 20 | #define SA_SHIRQ 0x04000000 |
21 | /* | ||
22 | * As above, these correspond to the IORESOURCE_IRQ_* defines in | ||
23 | * linux/ioport.h to select the interrupt line behaviour. When | ||
24 | * requesting an interrupt without specifying a SA_TRIGGER, the | ||
25 | * setting should be assumed to be "as already configured", which | ||
26 | * may be as per machine or firmware initialisation. | ||
27 | */ | ||
28 | #define SA_TRIGGER_LOW 0x00000008 | ||
29 | #define SA_TRIGGER_HIGH 0x00000004 | ||
30 | #define SA_TRIGGER_FALLING 0x00000002 | ||
31 | #define SA_TRIGGER_RISING 0x00000001 | ||
32 | #define SA_TRIGGER_MASK (SA_TRIGGER_HIGH|SA_TRIGGER_LOW|\ | ||
33 | SA_TRIGGER_RISING|SA_TRIGGER_FALLING) | ||
21 | 34 | ||
22 | /* | 35 | /* |
23 | * Real Time signals may be queued. | 36 | * Real Time signals may be queued. |