#include <dt-bindings/interrupt-controller/arm-gic.h>
 
-#define IRQS_PER_BANK 32
+#define IRQS_PER_BANK                  32
 
-#define HWSPNLCK_TIMEOUT       1000 /* usec */
+#define HWSPNLCK_TIMEOUT               1000 /* usec */
+
+#define EXTI_EnCIDCFGR(n)              (0x180 + (n) * 4)
+#define EXTI_HWCFGR1                   0x3f0
+
+/* Register: EXTI_EnCIDCFGR(n) */
+#define EXTI_CIDCFGR_CFEN_MASK         BIT(0)
+#define EXTI_CIDCFGR_CID_MASK          GENMASK(6, 4)
+#define EXTI_CIDCFGR_CID_SHIFT         4
+
+/* Register: EXTI_HWCFGR1 */
+#define EXTI_HWCFGR1_CIDWIDTH_MASK     GENMASK(27, 24)
+
+#define EXTI_CID1                      1
 
 struct stm32_exti_bank {
        u32 imr_ofst;
        .xlate = irq_domain_xlate_twocell,
 };
 
+static void stm32_exti_check_rif(struct stm32_exti_host_data *host_data)
+{
+       unsigned int bank, i, event;
+       u32 cid, cidcfgr, hwcfgr1;
+
+       /* quit on CID not supported */
+       hwcfgr1 = readl_relaxed(host_data->base + EXTI_HWCFGR1);
+       if ((hwcfgr1 & EXTI_HWCFGR1_CIDWIDTH_MASK) == 0)
+               return;
+
+       for (bank = 0; bank < host_data->drv_data->bank_nr; bank++) {
+               for (i = 0; i < IRQS_PER_BANK; i++) {
+                       event = bank * IRQS_PER_BANK + i;
+                       cidcfgr = readl_relaxed(host_data->base + EXTI_EnCIDCFGR(event));
+                       cid = (cidcfgr & EXTI_CIDCFGR_CID_MASK) >> EXTI_CIDCFGR_CID_SHIFT;
+                       if ((cidcfgr & EXTI_CIDCFGR_CFEN_MASK) && cid != EXTI_CID1)
+                               host_data->chips_data[bank].event_reserved |= BIT(i);
+               }
+       }
+}
+
 static void stm32_exti_remove_irq(void *data)
 {
        struct irq_domain *domain = data;
        for (i = 0; i < drv_data->bank_nr; i++)
                stm32_exti_chip_init(host_data, i, np);
 
+       stm32_exti_check_rif(host_data);
+
        parent_domain = irq_find_host(of_irq_find_parent(np));
        if (!parent_domain) {
                dev_err(dev, "GIC interrupt-parent not found\n");