printk("mfm: detected %d hard drive%s\n", mfm_drives,
                                mfm_drives == 1 ? "" : "s");
-       ret = request_irq(mfm_irq, mfm_interrupt_handler, SA_INTERRUPT, "MFM harddisk", NULL);
+       ret = request_irq(mfm_irq, mfm_interrupt_handler, IRQF_DISABLED, "MFM harddisk", NULL);
        if (ret) {
                printk("mfm: unable to get IRQ%d\n", mfm_irq);
                goto out4;
 
 
        acpi_irq_handler = handler;
        acpi_irq_context = context;
-       if (request_irq(irq, acpi_irq, SA_SHIRQ, "acpi", acpi_irq)) {
+       if (request_irq(irq, acpi_irq, IRQF_SHARED, "acpi", acpi_irq)) {
                printk(KERN_ERR PREFIX "SCI (IRQ%d) allocation failed\n", irq);
                return AE_NOT_ACQUIRED;
        }
 
        setup_pci_dev(pci_dev);
 
        // grab (but share) IRQ and install handler
-       err = request_irq(irq, interrupt_handler, SA_SHIRQ, DEV_LABEL, dev);
+       err = request_irq(irq, interrupt_handler, IRQF_SHARED, DEV_LABEL, dev);
        if (err < 0) {
                PRINTK (KERN_ERR, "request IRQ failed!");
                goto out_reset;
 
 
        DPRINTK(">eni_start\n");
        eni_dev = ENI_DEV(dev);
-       if (request_irq(eni_dev->irq,&eni_int,SA_SHIRQ,DEV_LABEL,dev)) {
+       if (request_irq(eni_dev->irq,&eni_int,IRQF_SHARED,DEV_LABEL,dev)) {
                printk(KERN_ERR DEV_LABEL "(itf %d): IRQ%d is already in use\n",
                    dev->number,eni_dev->irq);
                error = -EAGAIN;
 
                init_q (dev, &dev->rx_rq[i], RXB_RQ(i), RXRQ_NENTRIES, 1);
 
        dev->irq = pci_dev->irq;
-       if (request_irq (dev->irq, fs_irq, SA_SHIRQ, "firestream", dev)) {
+       if (request_irq (dev->irq, fs_irq, IRQF_SHARED, "firestream", dev)) {
                printk (KERN_WARNING "couldn't get irq %d for firestream.\n", pci_dev->irq);
                /* XXX undo all previous stuff... */
                return 1;
 
 static int __devinit
 fore200e_irq_request(struct fore200e* fore200e)
 {
-    if (request_irq(fore200e->irq, fore200e_interrupt, SA_SHIRQ, fore200e->name, fore200e->atm_dev) < 0) {
+    if (request_irq(fore200e->irq, fore200e_interrupt, IRQF_SHARED, fore200e->name, fore200e->atm_dev) < 0) {
 
        printk(FORE200E "unable to reserve IRQ %s for device %s\n",
               fore200e_irq_itoa(fore200e->irq), fore200e->name);
 
        he_writel(he_dev, 0x0, GRP_54_MAP);
        he_writel(he_dev, 0x0, GRP_76_MAP);
 
-       if (request_irq(he_dev->pci_dev->irq, he_irq_handler, SA_INTERRUPT|SA_SHIRQ, DEV_LABEL, he_dev)) {
+       if (request_irq(he_dev->pci_dev->irq, he_irq_handler, IRQF_DISABLED|IRQF_SHARED, DEV_LABEL, he_dev)) {
                hprintk("irq %d already in use\n", he_dev->pci_dev->irq);
                return -EINVAL;
        }   
 
        irq = pci_dev->irq;
        if (request_irq(irq,
                        interrupt_handler,
-                       SA_SHIRQ, /* irqflags guess */
+                       IRQF_SHARED, /* irqflags guess */
                        DEV_LABEL, /* name guess */
                        dev)) {
                PRINTD(DBG_WARN, "request IRQ failed!");
 
                writel(SAR_STAT_TMROF, SAR_REG_STAT);
        }
        IPRINTK("%s: Request IRQ ... ", card->name);
-       if (request_irq(pcidev->irq, idt77252_interrupt, SA_INTERRUPT|SA_SHIRQ,
+       if (request_irq(pcidev->irq, idt77252_interrupt, IRQF_DISABLED|IRQF_SHARED,
                        card->name, card) != 0) {
                printk("%s: can't allocate IRQ.\n", card->name);
                deinit_card(card);
 
        u32 ctrl_reg;  
        IF_EVENT(printk(">ia_start\n");)  
        iadev = INPH_IA_DEV(dev);  
-        if (request_irq(iadev->irq, &ia_int, SA_SHIRQ, DEV_LABEL, dev)) {  
+        if (request_irq(iadev->irq, &ia_int, IRQF_SHARED, DEV_LABEL, dev)) {
                 printk(KERN_ERR DEV_LABEL "(itf %d): IRQ%d is already in use\n",  
                     dev->number, iadev->irq);  
                error = -EAGAIN;
 
        conf2_write(lanai);
        reg_write(lanai, TX_FIFO_DEPTH, TxDepth_Reg);
        reg_write(lanai, 0, CBR_ICG_Reg);       /* CBR defaults to no limit */
-       if ((result = request_irq(lanai->pci->irq, lanai_int, SA_SHIRQ,
+       if ((result = request_irq(lanai->pci->irq, lanai_int, IRQF_SHARED,
            DEV_LABEL, lanai)) != 0) {
                printk(KERN_ERR DEV_LABEL ": can't allocate interrupt\n");
                goto error_vcctable;
 
    if (mac[i] == NULL)
       nicstar_init_eprom(card->membase);
 
-   if (request_irq(pcidev->irq, &ns_irq_handler, SA_INTERRUPT | SA_SHIRQ, "nicstar", card) != 0)
+   if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0)
    {
       printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
       error = 9;
 
        zatm_dev->rx_map = zatm_dev->tx_map = NULL;
        for (i = 0; i < NR_MBX; i++)
                zatm_dev->mbx_start[i] = 0;
-       error = request_irq(zatm_dev->irq, zatm_int, SA_SHIRQ, DEV_LABEL, dev);
+       error = request_irq(zatm_dev->irq, zatm_int, IRQF_SHARED, DEV_LABEL, dev);
        if (error < 0) {
                printk(KERN_ERR DEV_LABEL "(itf %d): IRQ%d is already in use\n",
                    dev->number,zatm_dev->irq);
 
 
        if (cdu31a_irq > 0) {
                if (request_irq
-                   (cdu31a_irq, cdu31a_interrupt, SA_INTERRUPT,
+                   (cdu31a_irq, cdu31a_interrupt, IRQF_DISABLED,
                     "cdu31a", NULL)) {
                        printk(KERN_WARNING PFX "Unable to grab IRQ%d for "
                                        "the CDU31A driver\n", cdu31a_irq);
 
        }
 
        xtrace(INIT, "init() subscribe irq and i/o\n");
-       if (request_irq(stuffp->irq, mcdx_intr, SA_INTERRUPT, "mcdx", stuffp)) {
+       if (request_irq(stuffp->irq, mcdx_intr, IRQF_DISABLED, "mcdx", stuffp)) {
                release_region(stuffp->wreg_data, MCDX_IO_SIZE);
                xwarn("%s=0x%03x,%d: Init failed. Can't get irq (%d).\n",
                      MCDX, stuffp->wreg_data, stuffp->irq, stuffp->irq);
 
        }
        if (sony535_irq_used > 0) {
            if (request_irq(sony535_irq_used, cdu535_interrupt,
-                                               SA_INTERRUPT, CDU535_HANDLE, NULL)) {
+                                               IRQF_DISABLED, CDU535_HANDLE, NULL)) {
                        printk("Unable to grab IRQ%d for the " CDU535_MESSAGE_NAME
                                        " driver; polling instead.\n", sony535_irq_used);
                        sony535_irq_used = 0;
 
                device->msi = 0;
        }
 #endif
-       err = request_irq(pdev->irq, &ioat_do_interrupt, SA_SHIRQ, "ioat",
+       err = request_irq(pdev->irq, &ioat_do_interrupt, IRQF_SHARED, "ioat",
                device);
        if (err)
                goto err_irq;
 
        
        irq = sdev->irqs[0];
 
-       if (request_irq (irq, soc_intr, SA_SHIRQ, "SOC", (void *)s)) {
+       if (request_irq (irq, soc_intr, IRQF_SHARED, "SOC", (void *)s)) {
                soc_printk ("Cannot order irq %d to go\n", irq);
                socs = s->next;
                return;
 
        
        irq = sdev->irqs[0];
 
-       if (request_irq (irq, socal_intr, SA_SHIRQ, "SOCAL", (void *)s)) {
+       if (request_irq (irq, socal_intr, IRQF_SHARED, "SOCAL", (void *)s)) {
                socal_printk ("Cannot order irq %d to go\n", irq);
                socals = s->next;
                return;
 
 
        if (i2c->irq != 0)
                if ((result = request_irq(i2c->irq, mpc_i2c_isr,
-                                         SA_SHIRQ, "i2c-mpc", i2c)) < 0) {
+                                         IRQF_SHARED, "i2c-mpc", i2c)) < 0) {
                        printk(KERN_ERR
                               "i2c-mpc - failed to attach interrupt\n");
                        goto fail_irq;
 
 #endif
 
        pxa_set_cken(CKEN14_I2C, 1);
-       ret = request_irq(IRQ_I2C, i2c_pxa_handler, SA_INTERRUPT,
+       ret = request_irq(IRQ_I2C, i2c_pxa_handler, IRQF_DISABLED,
                          "pxa2xx-i2c", i2c);
        if (ret)
                goto out;
 
                goto out;
        }
 
-       ret = request_irq(res->start, s3c24xx_i2c_irq, SA_INTERRUPT,
+       ret = request_irq(res->start, s3c24xx_i2c_irq, IRQF_DISABLED,
                          pdev->name, i2c);
 
        if (ret != 0) {
 
 
        if (otg_dev)
                status = request_irq(otg_dev->resource[1].start, omap_otg_irq,
-                               SA_INTERRUPT, DRIVER_NAME, isp);
+                               IRQF_DISABLED, DRIVER_NAME, isp);
        else
                status = -ENODEV;
 
        }
 
        status = request_irq(isp->irq, isp1301_irq,
-                       SA_SAMPLE_RANDOM, DRIVER_NAME, isp);
+                       IRQF_SAMPLE_RANDOM, DRIVER_NAME, isp);
        if (status < 0) {
                dev_dbg(&i2c->dev, "can't get IRQ %d, err %d\n",
                                isp->irq, status);
 
        }
 
 #ifdef CONFIG_ARM
-       irqflags = SA_SAMPLE_RANDOM | SA_TRIGGER_LOW;
+       irqflags = IRQF_SAMPLE_RANDOM | IRQF_TRIGGER_LOW;
        if (machine_is_omap_h2()) {
                tps->model = TPS65010;
                omap_cfg_reg(W4_GPIO58);
                tps->irq = OMAP_GPIO_IRQ(58);
                omap_request_gpio(58);
                omap_set_gpio_direction(58, 1);
-               irqflags |= SA_TRIGGER_FALLING;
+               irqflags |= IRQF_TRIGGER_FALLING;
        }
        if (machine_is_omap_osk()) {
                tps->model = TPS65010;
                tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1));
                omap_request_gpio(OMAP_MPUIO(1));
                omap_set_gpio_direction(OMAP_MPUIO(1), 1);
-               irqflags |= SA_TRIGGER_FALLING;
+               irqflags |= IRQF_TRIGGER_FALLING;
        }
        if (machine_is_omap_h3()) {
                tps->model = TPS65013;
                // FIXME set up this board's IRQ ...
        }
 #else
-       irqflags = SA_SAMPLE_RANDOM;
+       irqflags = IRQF_SAMPLE_RANDOM;
 #endif
 
        if (tps->irq > 0) {
 
                              "continuing anyway\n");
 
        /*
-        * set up our interrupt handler; SA_SHIRQ probably not needed,
+        * set up our interrupt handler; IRQF_SHARED probably not needed,
         * since MSI interrupts shouldn't be shared but won't  hurt for now.
         * check 0 irq after we return from chip-specific bus setup, since
         * that can affect this due to setup
                ipath_dev_err(dd, "irq is 0, BIOS error?  Interrupts won't "
                              "work\n");
        else {
-               ret = request_irq(pdev->irq, ipath_intr, SA_SHIRQ,
+               ret = request_irq(pdev->irq, ipath_intr, IRQF_SHARED,
                                  IPATH_DRV_NAME, dd);
                if (ret) {
                        ipath_dev_err(dd, "Couldn't setup irq handler, "
 
                                  mthca_is_memfree(dev) ?
                                  mthca_arbel_interrupt :
                                  mthca_tavor_interrupt,
-                                 SA_SHIRQ, DRV_NAME, dev);
+                                 IRQF_SHARED, DRV_NAME, dev);
                if (err)
                        goto err_out_cmd;
                dev->eq_table.have_irq = 1;
 
        for (i = 0; i < CORGI_KEY_SENSE_NUM; i++) {
                pxa_gpio_mode(CORGI_GPIO_KEY_SENSE(i) | GPIO_IN);
                if (request_irq(CORGI_IRQ_GPIO_KEY_SENSE(i), corgikbd_interrupt,
-                               SA_INTERRUPT | SA_TRIGGER_RISING,
+                               IRQF_DISABLED | IRQF_TRIGGER_RISING,
                                "corgikbd", corgikbd))
                        printk(KERN_WARNING "corgikbd: Can't get IRQ: %d!\n", i);
        }
 
        for (i = 0; i < SPITZ_KEY_SENSE_NUM; i++) {
                pxa_gpio_mode(spitz_senses[i] | GPIO_IN);
                if (request_irq(IRQ_GPIO(spitz_senses[i]), spitzkbd_interrupt,
-                               SA_INTERRUPT|SA_TRIGGER_RISING,
+                               IRQF_DISABLED|IRQF_TRIGGER_RISING,
                                "Spitzkbd Sense", spitzkbd))
                        printk(KERN_WARNING "spitzkbd: Can't get Sense IRQ: %d!\n", i);
        }
        pxa_gpio_mode(SPITZ_GPIO_SWB | GPIO_IN);
 
        request_irq(SPITZ_IRQ_GPIO_SYNC, spitzkbd_interrupt,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd Sync", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd_interrupt,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd PwrOn", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd_hinge_isr,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd SWA", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd SWB", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd HP", spitzkbd);
 
        printk(KERN_INFO "input: Spitz Keyboard Registered\n");
 
        input_dev->event = ixp4xx_spkr_event;
 
        err = request_irq(IRQ_IXP4XX_TIMER2, &ixp4xx_spkr_interrupt,
-                         SA_INTERRUPT | SA_TIMER, "ixp4xx-beeper", (void *) dev->id);
+                         IRQF_DISABLED | IRQF_TIMER, "ixp4xx-beeper", (void *) dev->id);
        if (err)
                goto err_free_device;
 
 
        rpcmouse_lastx = (short) iomd_readl(IOMD_MOUSEX);
        rpcmouse_lasty = (short) iomd_readl(IOMD_MOUSEY);
 
-       if (request_irq(IRQ_VSYNCPULSE, rpcmouse_irq, SA_SHIRQ, "rpcmouse", rpcmouse_dev)) {
+       if (request_irq(IRQ_VSYNCPULSE, rpcmouse_irq, IRQF_SHARED, "rpcmouse", rpcmouse_dev)) {
                printk(KERN_ERR "rpcmouse: unable to allocate VSYNC interrupt\n");
                input_free_device(rpcmouse_dev);
                return -EBUSY;
 
        serio->dev.parent       = &dev->dev;
 
        ret = -EBUSY;
-       if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port))
+       if (request_irq(dev->irq, gscps2_interrupt, IRQF_SHARED, ps2port->port->name, ps2port))
                goto fail_miserably;
 
        if (ps2port->id != GSC_ID_KEYBOARD && ps2port->id != GSC_ID_MOUSE) {
 
                        return 0;
 
        if (request_irq(port->irq, i8042_interrupt,
-                       SA_SHIRQ, "i8042", i8042_request_irq_cookie)) {
+                       IRQF_SHARED, "i8042", i8042_request_irq_cookie)) {
                printk(KERN_ERR "i8042.c: Can't get irq %d for %s, unregistering the port.\n", port->irq, port->name);
                goto irq_fail;
        }
  */
 
        if (request_irq(i8042_ports[I8042_AUX_PORT_NO].irq, i8042_interrupt,
-                       SA_SHIRQ, "i8042", &i8042_check_aux_cookie))
+                       IRQF_SHARED, "i8042", &i8042_check_aux_cookie))
                 return -1;
        free_irq(i8042_ports[I8042_AUX_PORT_NO].irq, &i8042_check_aux_cookie);
 
 
        outb(PS2_CTRL_ENABLE, ps2if->base);
        pcips2_flush_input(ps2if);
 
-       ret = request_irq(ps2if->dev->irq, pcips2_interrupt, SA_SHIRQ,
+       ret = request_irq(ps2if->dev->irq, pcips2_interrupt, IRQF_SHARED,
                          "pcips2", ps2if);
        if (ret == 0)
                val = PS2_CTRL_ENABLE | PS2_CTRL_RXIRQ;
 
 
        ts->last_msg = m;
 
-       if (request_irq(spi->irq, ads7846_irq, SA_TRIGGER_FALLING,
+       if (request_irq(spi->irq, ads7846_irq, IRQF_TRIGGER_FALLING,
                        spi->dev.driver->name, ts)) {
                dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq);
                err = -EBUSY;
 
        corgi_ssp_ads7846_putget((5u << ADSCTRL_ADR_SH) | ADSCTRL_STS);
        mdelay(5);
 
-       if (request_irq(corgi_ts->irq_gpio, ts_interrupt, SA_INTERRUPT, "ts", corgi_ts)) {
+       if (request_irq(corgi_ts->irq_gpio, ts_interrupt, IRQF_DISABLED, "ts", corgi_ts)) {
                err = -EBUSY;
                goto fail;
        }
 
        set_GPIO_IRQ_edge(GPIO_BITSY_NPOWER_BUTTON, GPIO_RISING_EDGE);
 
        if (request_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, action_button_handler,
-                       SA_SHIRQ | SA_INTERRUPT, "h3600_action", &ts->dev)) {
+                       IRQF_SHARED | IRQF_DISABLED, "h3600_action", &ts->dev)) {
                printk(KERN_ERR "h3600ts.c: Could not allocate Action Button IRQ!\n");
                err = -EBUSY;
                goto fail2;
        }
 
        if (request_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, npower_button_handler,
-                       SA_SHIRQ | SA_INTERRUPT, "h3600_suspend", &ts->dev)) {
+                       IRQF_SHARED | IRQF_DISABLED, "h3600_suspend", &ts->dev)) {
                printk(KERN_ERR "h3600ts.c: Could not allocate Power Button IRQ!\n");
                err = -EBUSY;
                goto fail3;
 
        input_register_device(hp680_ts_dev);
 
        if (request_irq(HP680_TS_IRQ, hp680_ts_interrupt,
-                       SA_INTERRUPT, MODNAME, 0) < 0) {
+                       IRQF_DISABLED, MODNAME, 0) < 0) {
                printk(KERN_ERR "hp680_touchscreen.c: Can't allocate irq %d\n",
                       HP680_TS_IRQ);
                input_unregister_device(hp680_ts_dev);
 
 
        if (smu->db_irq != NO_IRQ) {
                if (request_irq(smu->db_irq, smu_db_intr,
-                               SA_SHIRQ, "SMU doorbell", smu) < 0) {
+                               IRQF_SHARED, "SMU doorbell", smu) < 0) {
                        printk(KERN_WARNING "SMU: can't "
                               "request interrupt %d\n",
                               smu->db_irq);
 
        if (smu->msg_irq != NO_IRQ) {
                if (request_irq(smu->msg_irq, smu_msg_intr,
-                               SA_SHIRQ, "SMU message", smu) < 0) {
+                               IRQF_SHARED, "SMU message", smu) < 0) {
                        printk(KERN_WARNING "SMU: can't "
                               "request interrupt %d\n",
                               smu->msg_irq);
 
                                printk(MYIOC_s_INFO_FMT "PCI-MSI enabled\n",
                                        ioc->name);
                        rc = request_irq(ioc->pcidev->irq, mpt_interrupt,
-                                       SA_SHIRQ, ioc->name, ioc);
+                                       IRQF_SHARED, ioc->name, ioc);
                        if (rc < 0) {
                                printk(MYIOC_s_ERR_FMT "Unable to allocate "
                                        "interrupt %d!\n", ioc->name,
 
        writel(0xffffffff, c->irq_mask);
 
        if (pdev->irq) {
-               rc = request_irq(pdev->irq, i2o_pci_interrupt, SA_SHIRQ,
+               rc = request_irq(pdev->irq, i2o_pci_interrupt, IRQF_SHARED,
                                 c->name, c);
                if (rc < 0) {
                        printk(KERN_ERR "%s: unable to allocate interrupt %d."
 
                goto err_free;
        }
 
-       ret = request_irq(ucb->irq, ucb1x00_irq, SA_TRIGGER_RISING,
+       ret = request_irq(ucb->irq, ucb1x00_irq, IRQF_TRIGGER_RISING,
                          "UCB1x00", ucb);
        if (ret) {
                printk(KERN_ERR "ucb1x00: unable to grab irq%d: %d\n",
 
                goto error_ioremap;
        }
 
-       result = request_irq(sp->irq, ibmasm_interrupt_handler, SA_SHIRQ, sp->devname, (void*)sp);
+       result = request_irq(sp->irq, ibmasm_interrupt_handler, IRQF_SHARED, sp->devname, (void*)sp);
        if (result) {
                dev_err(sp->dev, "Failed to register interrupt handler\n");
                goto error_request_irq;
 
        /*
         * Allocate the MCI interrupt
         */
-       ret = request_irq(AT91_ID_MCI, at91_mci_irq, SA_SHIRQ, DRIVER_NAME, host);
+       ret = request_irq(AT91_ID_MCI, at91_mci_irq, IRQF_SHARED, DRIVER_NAME, host);
        if (ret) {
                printk(KERN_ERR "Failed to request MCI interrupt\n");
                clk_disable(mci_clk);
 
        int i, ret = 0;
 
        /* THe interrupt is shared among all controllers */
-       ret = request_irq(AU1100_SD_IRQ, au1xmmc_irq, SA_INTERRUPT, "MMC", 0);
+       ret = request_irq(AU1100_SD_IRQ, au1xmmc_irq, IRQF_DISABLED, "MMC", 0);
 
        if (ret) {
                printk(DRIVER_NAME "ERROR: Couldn't get int %d: %d\n",
 
        writel(0, host->base + MMCIMASK1);
        writel(0xfff, host->base + MMCICLEAR);
 
-       ret = request_irq(dev->irq[0], mmci_irq, SA_SHIRQ, DRIVER_NAME " (cmd)", host);
+       ret = request_irq(dev->irq[0], mmci_irq, IRQF_SHARED, DRIVER_NAME " (cmd)", host);
        if (ret)
                goto unmap;
 
-       ret = request_irq(dev->irq[1], mmci_pio_irq, SA_SHIRQ, DRIVER_NAME " (pio)", host);
+       ret = request_irq(dev->irq[1], mmci_pio_irq, IRQF_SHARED, DRIVER_NAME " (pio)", host);
        if (ret)
                goto irq0_free;
 
 
 
                omap_set_gpio_direction(host->switch_pin, 1);
                ret = request_irq(OMAP_GPIO_IRQ(host->switch_pin),
-                                 mmc_omap_switch_irq, SA_TRIGGER_RISING, DRIVER_NAME, host);
+                                 mmc_omap_switch_irq, IRQF_TRIGGER_RISING, DRIVER_NAME, host);
                if (ret) {
                        dev_warn(mmc_dev(host->mmc), "Unable to get IRQ for MMC cover switch\n");
                        omap_free_gpio(host->switch_pin);
 
 
        setup_timer(&host->timer, sdhci_timeout_timer, (long)host);
 
-       ret = request_irq(host->irq, sdhci_irq, SA_SHIRQ,
+       ret = request_irq(host->irq, sdhci_irq, IRQF_SHARED,
                host->slot_descr, host);
        if (ret)
                goto unmap;
 
         * Allocate interrupt.
         */
 
-       ret = request_irq(irq, wbsd_irq, SA_SHIRQ, DRIVER_NAME, host);
+       ret = request_irq(irq, wbsd_irq, IRQF_SHARED, DRIVER_NAME, host);
        if (ret)
                return ret;
 
 
        if (irq >= 0) {
                /* request irq */
                ret = request_irq(irq, parport_ax88796_interrupt,
-                                 SA_TRIGGER_FALLING, pdev->name, pp);
+                                 IRQF_TRIGGER_FALLING, pdev->name, pp);
 
                if (ret < 0)
                        goto exit_port;
 
 
                if (p->irq != PARPORT_IRQ_NONE) {
                        if (use_cnt++ == 0)
-                               if (request_irq(IRQ_AMIGA_PORTS, mfc3_interrupt, SA_SHIRQ, p->name, &pp_mfc3_ops))
+                               if (request_irq(IRQ_AMIGA_PORTS, mfc3_interrupt, IRQF_SHARED, p->name, &pp_mfc3_ops))
                                        goto out_irq;
                }
 
 
        p->size = size;
 
        if ((err = request_irq(p->irq, parport_sunbpp_interrupt,
-                              SA_SHIRQ, p->name, p)) != 0) {
+                              IRQF_SHARED, p->name, p)) != 0) {
                goto out_put_port;
        }
 
 
 
        /* must be a GPIO; ergo must trigger on both edges */
        status = request_irq(board->det_pin, at91_cf_irq,
-                       SA_SAMPLE_RANDOM, driver_name, cf);
+                       IRQF_SAMPLE_RANDOM, driver_name, cf);
        if (status < 0)
                goto fail0;
        device_init_wakeup(&pdev->dev, 1);
         */
        if (board->irq_pin) {
                status = request_irq(board->irq_pin, at91_cf_irq,
-                               SA_SHIRQ, driver_name, cf);
+                               IRQF_SHARED, driver_name, cf);
                if (status < 0)
                        goto fail0a;
                cf->socket.pci_irq = board->irq_pin;
 
        
        hd64465_register_irq_demux(sp->irq, hs_irq_demux, sp);
        
-       if ((err = request_irq(sp->irq, hs_interrupt, SA_INTERRUPT, MODNAME, sp)) < 0)
+       if ((err = request_irq(sp->irq, hs_interrupt, IRQF_DISABLED, MODNAME, sp)) < 0)
            return err;
        if (request_mem_region(sp->mem_base, sp->mem_length, MODNAME) == 0) {
            sp->mem_base = 0;
 
 
        /* Register the interrupt handler */
        dprintk(KERN_DEBUG "Requesting interrupt %i \n",dev->irq);
-       if ((ret = request_irq(dev->irq, i82092aa_interrupt, SA_SHIRQ, "i82092aa", i82092aa_interrupt))) {
+       if ((ret = request_irq(dev->irq, i82092aa_interrupt, IRQF_SHARED, "i82092aa", i82092aa_interrupt))) {
                printk(KERN_ERR "i82092aa: Failed to register IRQ %d, aborting\n", dev->irq);
                goto err_out_free_res;
        }
 
 static u_int __init test_irq(u_short sock, int irq)
 {
     debug(2, "  testing ISA irq %d\n", irq);
-    if (request_irq(irq, i365_count_irq, SA_PROBEIRQ, "scan",
+    if (request_irq(irq, i365_count_irq, IRQF_PROBE_SHARED, "scan",
                        i365_count_irq) != 0)
        return 1;
     irq_hits = 0; irq_sock = sock;
     } else {
        /* Fallback: just find interrupts that aren't in use */
        for (i = 0; i < 16; i++)
-           if ((mask0 & (1 << i)) && (_check_irq(i, SA_PROBEIRQ) == 0))
+           if ((mask0 & (1 << i)) && (_check_irq(i, IRQF_PROBE_SHARED) == 0))
                mask1 |= (1 << i);
        printk("default");
        /* If scan failed, default to polled status */
        u_int cs_mask = mask & ((cs_irq) ? (1<<cs_irq) : ~(1<<12));
        for (cs_irq = 15; cs_irq > 0; cs_irq--)
            if ((cs_mask & (1 << cs_irq)) &&
-               (_check_irq(cs_irq, SA_PROBEIRQ) == 0))
+               (_check_irq(cs_irq, IRQF_PROBE_SHARED) == 0))
                break;
        if (cs_irq) {
            grab_irq = 1;
 
        dev_set_drvdata(dev, cf);
 
        /* this primarily just shuts up irq handling noise */
-       status = request_irq(irq, omap_cf_irq, SA_SHIRQ,
+       status = request_irq(irq, omap_cf_irq, IRQF_SHARED,
                        driver_name, cf);
        if (status < 0)
                goto fail0;
 
        /* Decide what type of interrupt we are registering */
        type = 0;
        if (s->functions > 1)           /* All of this ought to be handled higher up */
-               type = SA_SHIRQ;
+               type = IRQF_SHARED;
        if (req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)
-               type = SA_SHIRQ;
+               type = IRQF_SHARED;
 
 #ifdef CONFIG_PCMCIA_PROBE
        if (s->irq.AssignedIRQ != 0) {
        if (ret && !s->irq.AssignedIRQ) {
                if (!s->pci_irq)
                        return ret;
-               type = SA_SHIRQ;
+               type = IRQF_SHARED;
                irq = s->pci_irq;
        }
 
        }
 
        /* Make sure the fact the request type was overridden is passed back */
-       if (type == SA_SHIRQ && !(req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)) {
+       if (type == IRQF_SHARED && !(req->Attributes & IRQ_TYPE_DYNAMIC_SHARING)) {
                req->Attributes |= IRQ_TYPE_DYNAMIC_SHARING;
                printk(KERN_WARNING "pcmcia: request for exclusive IRQ could not be fulfilled.\n");
                printk(KERN_WARNING "pcmcia: the driver needs updating to supported shared IRQ lines.\n");
 
        pci_set_drvdata(dev, socket);
        if (irq_mode == 1) {
                /* Register the interrupt handler */
-               if ((ret = request_irq(dev->irq, pd6729_interrupt, SA_SHIRQ,
+               if ((ret = request_irq(dev->irq, pd6729_interrupt, IRQF_SHARED,
                                                        "pd6729", socket))) {
                        printk(KERN_ERR "pd6729: Failed to register irq %d, "
                                                        "aborting\n", dev->irq);
 
                if (irqs[i].sock != skt->nr)
                        continue;
                res = request_irq(irqs[i].irq, soc_common_pcmcia_interrupt,
-                                 SA_INTERRUPT, irqs[i].str, skt);
+                                 IRQF_DISABLED, irqs[i].str, skt);
                if (res)
                        break;
                set_irq_type(irqs[i].irq, IRQT_NOEDGE);
 
 
        retval = vrc4171_add_sockets();
        if (retval == 0)
-               retval = request_irq(vrc4171_irq, pccard_interrupt, SA_SHIRQ,
+               retval = request_irq(vrc4171_irq, pccard_interrupt, IRQF_SHARED,
                                     vrc4171_card_name, vrc4171_sockets);
 
        if (retval < 0) {
 
                return -ENOMEM;
        }
 
-       if (request_irq(dev->irq, cardu_interrupt, SA_SHIRQ, socket->name, socket) < 0) {
+       if (request_irq(dev->irq, cardu_interrupt, IRQF_SHARED, socket->name, socket) < 0) {
                pcmcia_unregister_socket(socket->pcmcia_socket);
                socket->pcmcia_socket = NULL;
                iounmap(socket->base);
 
 
        socket->probe_status = 0;
 
-       if (request_irq(socket->cb_irq, yenta_probe_handler, SA_SHIRQ, "yenta", socket)) {
+       if (request_irq(socket->cb_irq, yenta_probe_handler, IRQF_SHARED, "yenta", socket)) {
                printk(KERN_WARNING "Yenta: request_irq() in yenta_probe_cb_irq() failed!\n");
                return -1;
        }
 
        /* We must finish initialization here */
 
-       if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, SA_SHIRQ, "yenta", socket)) {
+       if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
                /* No IRQ or request_irq failed. Poll */
                socket->cb_irq = 0; /* But zero is a valid IRQ number. */
                init_timer(&socket->poll_timer);
 
         * device is active because it itself may be in use */
        if(!dev->active) {
                if (request_irq(*irq, pnp_test_handler,
-                               SA_INTERRUPT|SA_PROBEIRQ, "pnp", NULL))
+                               IRQF_DISABLED|IRQF_PROBE_SHARED, "pnp", NULL))
                        return 0;
                free_irq(*irq, NULL);
        }
 
                                        AT91_RTC_CALEV);
 
        ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
-                               SA_SHIRQ, "at91_rtc", pdev);
+                               IRQF_SHARED, "at91_rtc", pdev);
        if (ret) {
                printk(KERN_ERR "at91_rtc: IRQ %d already in use.\n",
                                AT91_ID_SYS);
 
 
        if (pdata->irq >= 0) {
                writeb(0, ioaddr + RTC_INTERRUPTS);
-               if (request_irq(pdata->irq, ds1553_rtc_interrupt, SA_SHIRQ,
+               if (request_irq(pdata->irq, ds1553_rtc_interrupt, IRQF_SHARED,
                                pdev->name, pdev) < 0) {
                        dev_warn(&pdev->dev, "interrupt not available.\n");
                        pdata->irq = -1;
 
                goto out_no_remap;
        }
 
-       if (request_irq(adev->irq[0], pl031_interrupt, SA_INTERRUPT,
+       if (request_irq(adev->irq[0], pl031_interrupt, IRQF_DISABLED,
                        "rtc-pl031", ldata->rtc)) {
                ret = -EIO;
                goto out_no_irq;
 
 {
        int ret;
 
-       ret = request_irq(IRQ_RTC1Hz, sa1100_rtc_interrupt, SA_INTERRUPT,
+       ret = request_irq(IRQ_RTC1Hz, sa1100_rtc_interrupt, IRQF_DISABLED,
                                "rtc 1Hz", dev);
        if (ret) {
                dev_err(dev, "IRQ %d already in use.\n", IRQ_RTC1Hz);
                goto fail_ui;
        }
-       ret = request_irq(IRQ_RTCAlrm, sa1100_rtc_interrupt, SA_INTERRUPT,
+       ret = request_irq(IRQ_RTCAlrm, sa1100_rtc_interrupt, IRQF_DISABLED,
                                "rtc Alrm", dev);
        if (ret) {
                dev_err(dev, "IRQ %d already in use.\n", IRQ_RTCAlrm);
                goto fail_ai;
        }
-       ret = request_irq(IRQ_OST1, timer1_interrupt, SA_INTERRUPT,
+       ret = request_irq(IRQ_OST1, timer1_interrupt, IRQF_DISABLED,
                                "rtc timer", dev);
        if (ret) {
                dev_err(dev, "IRQ %d already in use.\n", IRQ_OST1);
 
        spin_unlock_irq(&rtc_lock);
 
        irq = ELAPSEDTIME_IRQ;
-       retval = request_irq(irq, elapsedtime_interrupt, SA_INTERRUPT,
+       retval = request_irq(irq, elapsedtime_interrupt, IRQF_DISABLED,
                             "elapsed_time", pdev);
        if (retval == 0) {
                irq = RTCLONG1_IRQ;
-               retval = request_irq(irq, rtclong1_interrupt, SA_INTERRUPT,
+               retval = request_irq(irq, rtclong1_interrupt, IRQF_DISABLED,
                                     "rtclong1", pdev);
        }
 
 
                                printk("intr pri %d\n", grrr);
 #endif
                                if ((bp->irq=irqs[bn]) && valid_irq(bp->irq) &&
-                                   !request_irq(bp->irq|0x30, aurora_interrupt, SA_SHIRQ, "sio16", bp)) {
+                                   !request_irq(bp->irq|0x30, aurora_interrupt, IRQF_SHARED, "sio16", bp)) {
                                        free_irq(bp->irq|0x30, bp);
                                } else
                                if ((bp->irq=prom_getint(sdev->prom_node, "bintr")) && valid_irq(bp->irq) &&
-                                   !request_irq(bp->irq|0x30, aurora_interrupt, SA_SHIRQ, "sio16", bp)) {
+                                   !request_irq(bp->irq|0x30, aurora_interrupt, IRQF_SHARED, "sio16", bp)) {
                                        free_irq(bp->irq|0x30, bp);
                                } else
                                if ((bp->irq=prom_getint(sdev->prom_node, "intr")) && valid_irq(bp->irq) &&
-                                   !request_irq(bp->irq|0x30, aurora_interrupt, SA_SHIRQ, "sio16", bp)) {
+                                   !request_irq(bp->irq|0x30, aurora_interrupt, IRQF_SHARED, "sio16", bp)) {
                                        free_irq(bp->irq|0x30, bp);
                                } else
                                for(grrr=0;grrr<TYPE_1_IRQS;grrr++) {
-                                       if ((bp->irq=type_1_irq[grrr])&&!request_irq(bp->irq|0x30, aurora_interrupt, SA_SHIRQ, "sio16", bp)) {
+                                       if ((bp->irq=type_1_irq[grrr])&&!request_irq(bp->irq|0x30, aurora_interrupt, IRQF_SHARED, "sio16", bp)) {
                                                free_irq(bp->irq|0x30, bp);
                                                break;
                                        } else {
 #ifdef AURORA_ALLIRQ
        int i;
        for (i = 0; i < AURORA_ALLIRQ; i++) {
-               error = request_irq(allirq[i]|0x30, aurora_interrupt, SA_SHIRQ,
+               error = request_irq(allirq[i]|0x30, aurora_interrupt, IRQF_SHARED,
                                    "sio16", bp);
                if (error)
                        printk(KERN_ERR "IRQ%d request error %d\n",
                               allirq[i], error);
        }
 #else
-       error = request_irq(bp->irq|0x30, aurora_interrupt, SA_SHIRQ,
+       error = request_irq(bp->irq|0x30, aurora_interrupt, IRQF_SHARED,
                            "sio16", bp);
        if (error) {
                printk(KERN_ERR "IRQ request error %d\n", error);
 
        bp->waiting = 0;
        init_waitqueue_head(&bp->wq);
        if (request_irq(edev->irqs[0], bbc_i2c_interrupt,
-                       SA_SHIRQ, "bbc_i2c", bp))
+                       IRQF_SHARED, "bbc_i2c", bp))
                goto fail;
 
        bp->index = index;
 
        {       
                if (request_irq(wd_dev.irq, 
                                                &wd_interrupt, 
-                                               SA_SHIRQ,
+                                               IRQF_SHARED,
                                                WD_OBPNAME,
                                                (void *)wd_dev.regs)) {
                        printk("%s: Cannot register IRQ %d\n", 
 
                writel(~0, &idd->vma->eisr);
 
                idd->dual_irq = 1;
-               if (!request_irq(pdev->irq, ioc3_intr_eth, SA_SHIRQ,
+               if (!request_irq(pdev->irq, ioc3_intr_eth, IRQF_SHARED,
                                 "ioc3-eth", (void *)idd)) {
                        idd->irq_eth = pdev->irq;
                } else {
                               "%s : request_irq fails for IRQ 0x%x\n ",
                               __FUNCTION__, pdev->irq);
                }
-               if (!request_irq(pdev->irq+2, ioc3_intr_io, SA_SHIRQ,
+               if (!request_irq(pdev->irq+2, ioc3_intr_io, IRQF_SHARED,
                                 "ioc3-io", (void *)idd)) {
                        idd->irq_io = pdev->irq+2;
                } else {
                               __FUNCTION__, pdev->irq+2);
                }
        } else {
-               if (!request_irq(pdev->irq, ioc3_intr_io, SA_SHIRQ,
+               if (!request_irq(pdev->irq, ioc3_intr_io, IRQF_SHARED,
                                 "ioc3", (void *)idd)) {
                        idd->irq_io = pdev->irq;
                } else {
 
                zs_soft[channel].clk_divisor = 16;
                zs_soft[channel].zs_baud = get_zsbaud(&zs_soft[channel]);
 
-               if (request_irq(zs_soft[channel].irq, rs_interrupt, SA_SHIRQ,
+               if (request_irq(zs_soft[channel].irq, rs_interrupt, IRQF_SHARED,
                                "scc", &zs_soft[channel]))
                        printk(KERN_ERR "decserial: can't get irq %d\n",
                               zs_soft[channel].irq);