ldev->caps.pad_max_freq_hz = 90000000;
                if (ldev->caps.hw_version == HWVER_10200)
                        ldev->caps.pad_max_freq_hz = 65000000;
+               ldev->caps.nb_irq = 2;
                break;
        case HWVER_20101:
                ldev->caps.reg_ofs = REG_OFS_4;
                ldev->caps.pix_fmt_hw = ltdc_pix_fmt_a1;
                ldev->caps.non_alpha_only_l1 = false;
                ldev->caps.pad_max_freq_hz = 150000000;
+               ldev->caps.nb_irq = 4;
                break;
        default:
                return -ENODEV;
        reg_clear(ldev->regs, LTDC_IER,
                  IER_LIE | IER_RRIE | IER_FUIE | IER_TERRIE);
 
-       for (i = 0; i < MAX_IRQ; i++) {
+       ret = ltdc_get_caps(ddev);
+       if (ret) {
+               DRM_ERROR("hardware identifier (0x%08x) not supported!\n",
+                         ldev->caps.hw_version);
+               goto err;
+       }
+
+       DRM_DEBUG_DRIVER("ltdc hw version 0x%08x\n", ldev->caps.hw_version);
+
+       for (i = 0; i < ldev->caps.nb_irq; i++) {
                irq = platform_get_irq(pdev, i);
-               if (irq == -EPROBE_DEFER)
+               if (irq < 0) {
+                       ret = irq;
                        goto err;
-
-               if (irq < 0)
-                       continue;
+               }
 
                ret = devm_request_threaded_irq(dev, irq, ltdc_irq,
                                                ltdc_irq_thread, IRQF_ONESHOT,
                }
        }
 
-
-       ret = ltdc_get_caps(ddev);
-       if (ret) {
-               DRM_ERROR("hardware identifier (0x%08x) not supported!\n",
-                         ldev->caps.hw_version);
-               goto err;
-       }
-
-       DRM_DEBUG_DRIVER("ltdc hw version 0x%08x\n", ldev->caps.hw_version);
-
        /* Add endpoints panels or bridges if any */
        for (i = 0; i < MAX_ENDPOINTS; i++) {
                if (panel[i]) {