EDAC/altera: Add Stratix10 SDMMC support
authorThor Thayer <thor.thayer@linux.intel.com>
Tue, 23 Apr 2019 14:36:36 +0000 (09:36 -0500)
committerTony Luck <tony.luck@intel.com>
Thu, 20 Jun 2019 18:44:36 +0000 (11:44 -0700)
Add SDMMC support for Stratix10 which has IRQ differences from Arria10.
Update comment accordingly.

Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: devicetree@vger.kernel.org
Cc: dinguyen@kernel.org
Cc: James Morse <james.morse@arm.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Cc: mark.rutland@arm.com
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: robh+dt@kernel.org
Link: https://lkml.kernel.org/r/1556030197-24534-4-git-send-email-thor.thayer@linux.intel.com
drivers/edac/altera_edac.c

index b7bc8f0..c2e693e 100644 (file)
@@ -1583,8 +1583,12 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
        dci->mod_name = ecc_name;
        dci->dev_name = ecc_name;
 
-       /* Update the IRQs for PortB */
+       /* Update the PortB IRQs - A10 has 4, S10 has 2, Index accordingly */
+#ifdef CONFIG_ARCH_STRATIX10
+       altdev->sb_irq = irq_of_parse_and_map(np, 1);
+#else
        altdev->sb_irq = irq_of_parse_and_map(np, 2);
+#endif
        if (!altdev->sb_irq) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "Error PortB SBIRQ alloc\n");
                rc = -ENODEV;
@@ -1599,6 +1603,15 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
                goto err_release_group_1;
        }
 
+#ifdef CONFIG_ARCH_STRATIX10
+       /* Use IRQ to determine SError origin instead of assigning IRQ */
+       rc = of_property_read_u32_index(np, "interrupts", 1, &altdev->db_irq);
+       if (rc) {
+               edac_printk(KERN_ERR, EDAC_DEVICE,
+                           "Error PortB DBIRQ alloc\n");
+               goto err_release_group_1;
+       }
+#else
        altdev->db_irq = irq_of_parse_and_map(np, 3);
        if (!altdev->db_irq) {
                edac_printk(KERN_ERR, EDAC_DEVICE, "Error PortB DBIRQ alloc\n");
@@ -1613,6 +1626,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
                edac_printk(KERN_ERR, EDAC_DEVICE, "PortB DBERR IRQ error\n");
                goto err_release_group_1;
        }
+#endif
 
        rc = edac_device_add_device(dci);
        if (rc) {