| From 5a77f16dd47f75102d12d86a6ad7bb230b256077 Mon Sep 17 00:00:00 2001 |
| From: Thor Thayer <thor.thayer@linux.intel.com> |
| Date: Wed, 5 Apr 2017 13:01:02 -0500 |
| Subject: [PATCH 079/103] EDAC, altera: Fix peripheral warnings for Cyclone5 |
| |
| The peripherals' RAS functionality only exist on the Arria10 SoCFPGA. |
| The Cyclone5 initialization generates EDAC warnings when the peripherals |
| aren't found in the device tree. Fix by checking for Arria10 in the init |
| functions. |
| |
| Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com> |
| Cc: linux-edac <linux-edac@vger.kernel.org> |
| Link: http://lkml.kernel.org/r/1491415262-5018-1-git-send-email-thor.thayer@linux.intel.com |
| Signed-off-by: Borislav Petkov <bp@suse.de> |
| --- |
| drivers/edac/altera_edac.c | 22 ++++++++++++++++++---- |
| 1 file changed, 18 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/edac/altera_edac.c |
| +++ b/drivers/edac/altera_edac.c |
| @@ -1024,13 +1024,23 @@ out: |
| return ret; |
| } |
| |
| +static int socfpga_is_a10(void) |
| +{ |
| + return of_machine_is_compatible("altr,socfpga-arria10"); |
| +} |
| + |
| static int validate_parent_available(struct device_node *np); |
| static const struct of_device_id altr_edac_a10_device_of_match[]; |
| static int __init __maybe_unused altr_init_a10_ecc_device_type(char *compat) |
| { |
| int irq; |
| - struct device_node *child, *np = of_find_compatible_node(NULL, NULL, |
| - "altr,socfpga-a10-ecc-manager"); |
| + struct device_node *child, *np; |
| + |
| + if (!socfpga_is_a10()) |
| + return -ENODEV; |
| + |
| + np = of_find_compatible_node(NULL, NULL, |
| + "altr,socfpga-a10-ecc-manager"); |
| if (!np) { |
| edac_printk(KERN_ERR, EDAC_DEVICE, "ECC Manager not found\n"); |
| return -ENODEV; |
| @@ -1546,8 +1556,12 @@ static const struct edac_device_prv_data |
| static int __init socfpga_init_sdmmc_ecc(void) |
| { |
| int rc = -ENODEV; |
| - struct device_node *child = of_find_compatible_node(NULL, NULL, |
| - "altr,socfpga-sdmmc-ecc"); |
| + struct device_node *child; |
| + |
| + if (!socfpga_is_a10()) |
| + return -ENODEV; |
| + |
| + child = of_find_compatible_node(NULL, NULL, "altr,socfpga-sdmmc-ecc"); |
| if (!child) { |
| edac_printk(KERN_WARNING, EDAC_DEVICE, "SDMMC node not found\n"); |
| return -ENODEV; |