struct axon_ram_bank {
        struct of_device        *device;
        struct gendisk          *disk;
-       unsigned int            irq_correctable;
-       unsigned int            irq_uncorrectable;
+       unsigned int            irq_id;
        unsigned long           ph_addr;
        unsigned long           io_addr;
        unsigned long           size;
 
        BUG_ON(!bank);
 
-       if (irq == bank->irq_correctable) {
-               dev_err(&device->dev, "Correctable memory error occured\n");
-               bank->ecc_counter++;
-               return IRQ_HANDLED;
-       } else if (irq == bank->irq_uncorrectable) {
-               dev_err(&device->dev, "Uncorrectable memory error occured\n");
-               panic("Critical ECC error on %s", device->node->full_name);
-       }
-
-       return IRQ_NONE;
+       dev_err(&device->dev, "Correctable memory error occured\n");
+       bank->ecc_counter++;
+       return IRQ_HANDLED;
 }
 
 /**
        blk_queue_hardsect_size(bank->disk->queue, AXON_RAM_SECTOR_SIZE);
        add_disk(bank->disk);
 
-       bank->irq_correctable = irq_of_parse_and_map(device->node, 0);
-       bank->irq_uncorrectable = irq_of_parse_and_map(device->node, 1);
-       if ((bank->irq_correctable <= 0) || (bank->irq_uncorrectable <= 0)) {
+       bank->irq_id = irq_of_parse_and_map(device->node, 0);
+       if (bank->irq_id == NO_IRQ) {
                dev_err(&device->dev, "Cannot access ECC interrupt ID\n");
                rc = -EFAULT;
                goto failed;
        }
 
-       rc = request_irq(bank->irq_correctable, axon_ram_irq_handler,
-                       AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device);
-       if (rc != 0) {
-               dev_err(&device->dev, "Cannot register ECC interrupt handler\n");
-               bank->irq_correctable = bank->irq_uncorrectable = 0;
-               rc = -EFAULT;
-               goto failed;
-       }
-
-       rc = request_irq(bank->irq_uncorrectable, axon_ram_irq_handler,
+       rc = request_irq(bank->irq_id, axon_ram_irq_handler,
                        AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device);
        if (rc != 0) {
                dev_err(&device->dev, "Cannot register ECC interrupt handler\n");
-               bank->irq_uncorrectable = 0;
+               bank->irq_id = NO_IRQ;
                rc = -EFAULT;
                goto failed;
        }
 
 failed:
        if (bank != NULL) {
-               if (bank->irq_uncorrectable > 0)
-                       free_irq(bank->irq_uncorrectable, device);
-               if (bank->irq_correctable > 0)
-                       free_irq(bank->irq_correctable, device);
+               if (bank->irq_id != NO_IRQ)
+                       free_irq(bank->irq_id, device);
                if (bank->disk != NULL) {
                        if (bank->disk->queue != NULL)
                                blk_cleanup_queue(bank->disk->queue);
        BUG_ON(!bank || !bank->disk);
 
        device_remove_file(&device->dev, &dev_attr_ecc);
-       free_irq(bank->irq_uncorrectable, device);
-       free_irq(bank->irq_correctable, device);
+       free_irq(bank->irq_id, device);
        blk_cleanup_queue(bank->disk->queue);
        unregister_blkdev(bank->disk->major, bank->disk->disk_name);
        del_gendisk(bank->disk);