From patchwork Sat May 21 10:31:10 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 96689 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [IPv6:::1]) by ozlabs.org (Postfix) with ESMTP id 841FCB74AE for ; Sat, 21 May 2011 20:31:16 +1000 (EST) Received: from mail-fx0-f51.google.com (mail-fx0-f51.google.com [209.85.161.51]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 4079FB71A5 for ; Sat, 21 May 2011 20:31:07 +1000 (EST) Received: by fxm5 with SMTP id 5so3514526fxm.38 for ; Sat, 21 May 2011 03:31:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:date:message-id:x-mailer; bh=UjPxaZyHWjZ84/+9AwldDjHk4HBL1GwGSyuyI1q6yFs=; b=GKAuA938xLm0gnff0zHRuMG6imYSS6HaRV0idoBA39L80KArq1E5CphIZza3125488 vWfXJ1UbVX2Chf7eXCfmv0PmA3I1P1RYuq0XGt1J8CfPH+ESxu9xnqTyKHU0T8li4Fex T4yS6QXHFqgIeJOtVR4SrBpnq5eXu7G4mWVlY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=bwaI+esDQRoj9TppwGTRgtG7p1xQtRuvgVFSMnPjVTs3GrFpFMBqRZR7B7MOe7fzNl BZAQnMqzL355ZFIqWhdDDgL1PtW0TlWdc9pMUdjuiNOHmw4KFuOOaK/quFCqIPz+sApy YBYJE4Ds08FagvqTEUYzOw1O6u4hPCexwMQJI= Received: by 10.223.40.85 with SMTP id j21mr531050fae.22.1305973863880; Sat, 21 May 2011 03:31:03 -0700 (PDT) Received: from doriath.ww600.siemens.net (92-100-166-160.dynamic.avangarddsl.ru [92.100.166.160]) by mx.google.com with ESMTPS id 22sm1690253fay.21.2011.05.21.03.31.02 (version=SSLv3 cipher=OTHER); Sat, 21 May 2011 03:31:03 -0700 (PDT) From: Dmitry Eremin-Solenikov To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 1/2] Maple: register CPC925 EDAC device on all boards with CPC925 Date: Sat, 21 May 2011 14:31:10 +0400 Message-Id: <1305973871-28244-1-git-send-email-dbaryshkov@gmail.com> X-Mailer: git-send-email 1.7.4.4 Cc: Harry Ciao , Paul Mackerras X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Currently Maple setup code creates cpc925_edac device only on Motorola ATCA-6101 blade. Make setup code check bridge revision and enable EDAC on all U3 bridges. Verified on Momentum MapleD (ppc970fx kit) board. Signed-off-by: Dmitry Eremin-Solenikov --- arch/powerpc/platforms/maple/setup.c | 41 +++++++++++++++------------------ 1 files changed, 19 insertions(+), 22 deletions(-) diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c index fe34c3d..2c48a91 100644 --- a/arch/powerpc/platforms/maple/setup.c +++ b/arch/powerpc/platforms/maple/setup.c @@ -338,35 +338,16 @@ define_machine(maple) { #ifdef CONFIG_EDAC /* * Register a platform device for CPC925 memory controller on - * Motorola ATCA-6101 blade. + * all boards with U3 (CPC925) bridge. */ -#define MAPLE_CPC925_MODEL "Motorola,ATCA-6101" static int __init maple_cpc925_edac_setup(void) { struct platform_device *pdev; struct device_node *np = NULL; struct resource r; - const unsigned char *model; int ret; - - np = of_find_node_by_path("/"); - if (!np) { - printk(KERN_ERR "%s: Unable to get root node\n", __func__); - return -ENODEV; - } - - model = (const unsigned char *)of_get_property(np, "model", NULL); - if (!model) { - printk(KERN_ERR "%s: Unabel to get model info\n", __func__); - of_node_put(np); - return -ENODEV; - } - - ret = strcmp(model, MAPLE_CPC925_MODEL); - of_node_put(np); - - if (ret != 0) - return 0; + volatile void __iomem *mem; + u32 rev; np = of_find_node_by_type(NULL, "memory-controller"); if (!np) { @@ -384,6 +365,22 @@ static int __init maple_cpc925_edac_setup(void) return -ENODEV; } + mem = ioremap(r.start, resource_size(&r)); + if (!mem) { + printk(KERN_ERR "%s: Unable to map memory-controller memory\n", + __func__); + return -ENOMEM; + } + + rev = __raw_readl(mem); + iounmap(mem); + + if ((rev & 0xf0) != 0x30) { /* U3 */ + printk(KERN_ERR "%s: Non-CPC925(U3) bridge revision: %02x\n", + __func__, rev); + return -ENODEV; + } + pdev = platform_device_register_simple("cpc925_edac", 0, &r, 1); if (IS_ERR(pdev)) return PTR_ERR(pdev);