From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754766AbbENDZv (ORCPT ); Wed, 13 May 2015 23:25:51 -0400 Received: from mail-bn1on0063.outbound.protection.outlook.com ([157.56.110.63]:12560 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751242AbbENDZr (ORCPT ); Wed, 13 May 2015 23:25:47 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; gmail.com; dkim=none (message not signed) header.d=none; Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none; Message-ID: <555415A9.8030408@opensource.altera.com> Date: Wed, 13 May 2015 22:25:29 -0500 From: Dinh Nguyen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: , , , , , , , , , , CC: , , , , , Subject: Re: [PATCH 1/4] edac, altera: Generalize driver to use DT Memory size References: <1431553787-27741-1-git-send-email-tthayer@opensource.altera.com> <1431553787-27741-2-git-send-email-tthayer@opensource.altera.com> In-Reply-To: <1431553787-27741-2-git-send-email-tthayer@opensource.altera.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [99.103.66.154] X-ClientProxiedBy: CY1PR14CA0033.namprd14.prod.outlook.com (25.163.13.171) To BN3PR03MB1366.namprd03.prod.outlook.com (25.163.34.152) X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1366;2:bARE41KDcrVSXdTyCgl66RE28uS26rFp+CEMEbYmWMVgkYa9me54i1rmt3NOsAhk;2:pKn9hL97m1kZVGYLO61gbs261+yz82LFrwnJVBy3ZPowIBd4GihwwilC6pwQ1TyEuKzKn/GeYSJw9JmwvvNl8EzO7+R+0vqrvPma1VNy0NDCWAD+jX+wECCsZRoCMVr3VVro4yQCWDcUiUF69u2+gg==;6:1C6JOiACYsEawOwD7Bm9RGyO/J+VjdHywHZHye13Vc73+C3m9VfgZGiRflUmWNfBjPV6hhZmURY0OHB6tgo6w47yowqh+qCUDSKM1tybn0GuUrARWOyLu8DL7ZJfAAiKgunCbIcg8wEHun01A90Xmg==;3:nPrp6jmC6Bb7J2yFwu0KBW2gbv6c+YOI6f6Pr9ONeL3vG01jhYccYOy4HjniK0ojgXJXQdoMp1VuJG+qumuQiOZ5HrsOs8bYWaOHiCJVaMxLUaKNulubt4HHSaJcpLKDyWYpx3MLiqvYUTFh3EWLckaCqTm9DZ213PEXZsGFd0wVSrD5JlRbpDBdnEjYoKDCJF8RwJXJc3rjmjEB902qqp1y67vIF2SAasDf/cZYb3u2urx2sXMef+Cjwf84NMnZ6ZjgDxPeDgH1eUac/aHbKYJ6LPISdW2K55u+Q9iLQwY= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1366;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1493; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BN3PR03MB1366;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1366;BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BN3PR03MB1493;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1493; X-Forefront-PRVS: 0576145E86 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(6009001)(51704005)(479174004)(24454002)(377454003)(23746002)(2950100001)(77096005)(62966003)(77156002)(83506001)(40100003)(50466002)(19580405001)(19580395003)(122386002)(80316001)(5001960100002)(5001770100001)(92566002)(189998001)(59896002)(99136001)(87976001)(2201001)(65816999)(87266999)(50986999)(54356999)(76176999)(47776003)(66066001)(65956001)(4001350100001)(86362001)(46102003)(33656002)(42186005)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR03MB1366;H:Dinhs-MacBook-Pro.local;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?Windows-1252?Q?1;BN3PR03MB1366;9:UlmZyaNraS0P4AGrF5UsVDqiJ0r63fA/6R0tDR?= =?Windows-1252?Q?i9cZRcjJdGZG4KUNKmbpF72IGtJ1t/8rDqn6D/1+He7bW6KhT0r9Bftn?= =?Windows-1252?Q?+jt87vAurHCkDmiNmRgtfOz1jhm8klOzd0D6sn7lXZHsjgX8SpE1y5Dz?= =?Windows-1252?Q?J85gEZxUrJkh4s+0Z8aWZnedI0zr7eiHntNCWVK2PAH4ZUsuAtGN0LMp?= =?Windows-1252?Q?6pTjM10cVMJsydpqKSp0y8IHn7/RS9JD2810Owa22ymQx9WPtzBXLbvh?= =?Windows-1252?Q?gRJ1CUw6LNYJRhUXpPJMV7MAR144Ygt6kw9a0ARXsElZLFM+JYItQvJl?= =?Windows-1252?Q?rwTgQUbVJnk1zB9VM9TLvCkuC0DVAKob6yBZfiu4YG/BvtKLtivZBlBv?= =?Windows-1252?Q?J+mrjo/c7VcXauQzlaupBmoEJ6MdDAaDOLVgxPVnLWtctEl/rCm21wkR?= =?Windows-1252?Q?e4MlDMG4e9Q/7FiRCeny5ywr11jjbTbjs8KiZQLiVfS9PgCz8vUz3XgD?= =?Windows-1252?Q?cPdrDvwvBeHDeXZO8UYsl9hzwS5AlVhKqgpq+a4KzdSS4KOH6HY8xpaB?= =?Windows-1252?Q?yrpBC8DXP0oBXBhhOPZMwK0qfMBghrWuY8XNiDBE0XlKnjX+rFzD7L6g?= =?Windows-1252?Q?hAfbNA+ZJZJ0mC0RHQLO+b6rZEqnxhkQ/lL0/d5J2ux2GzfQYLfmKQXn?= =?Windows-1252?Q?el8c/B/tZNPUGY4JZmJ5xOYekvlTftW2mH2ir+BYpqj6JwQ7T+/VzMtI?= =?Windows-1252?Q?zRNOYs8V5ktooTrl0auvFIvv6CMIEaJ4zF945X90UtvIy5togWMZY52U?= =?Windows-1252?Q?gY3di1a9XFTH5NKMUAB+8map9vWFhBiVnzDBWm3Sl1bb1JOcGBW85HBU?= =?Windows-1252?Q?KBM7Z/Zgav9xjyMXWPVhDEQROabTl9ZEqALXrAsoUbVQOLqJnajsYHO4?= =?Windows-1252?Q?73rmvOBGi2DxbLxNH321wH9S3CFQWmxs2VvQm3WCs/IDeEOkTAuDyeuo?= =?Windows-1252?Q?3nAbb+dEKVEEagXPxnJylyKXxO54adeH8uaA60dK7kGMDRw8omTcfXSY?= =?Windows-1252?Q?moHQoXLnvAXLt0wnK/ftb+Df+uB7Lf+Stp+CEyKtLvmTrXDHyep4QZcX?= =?Windows-1252?Q?bfnEG0Cm6tnwUxpShbVqw=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1366;3:ZNq+uwqMkf4aTDHf1zjs2Zo4frY6dU3IXzhdVdpkN8D5wshY9gyZhHiPfvNK0SuJsb3QpEEeOmOJk4BEvLK/hh/Qp2i2JzWSubNDFkNMPnpP0nvwAP3orOTe8nl9UVsPaVL/7xnxaQh5K6BmIRcgeQ==;10:5WMWxA57KsK+dYWFlR8U1cESFEMPTFBIGmQ8nbJzjLIgSZII1cU3mmeTDyM7lspUp90oN2MQDrLZGqvkXqVvsNPzhW0lD+oxdaYBTVJUQ34=;6:SjHt6veM9qMbViFsgojFFT0SzZLSxpzV/lUyz33Vpm9HqhAiFFCvK9bQTKapIzVUbUt+WcKWNqYUEVF89Jh2bcHo50ju0pXqKYdQr9VbFnrit8Aw1U0WIPWJ/tFWCg3PQQsGckCNe3Lnq0QHJxafZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1366 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11OLC004.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC004;1:xxnHbl3Tgaf4R3nzWqC389khqr3EyOJI1aLsApvTOZkUuvFFimxkBgbsENIEK5g8B4rcfeocCujV0Rdx7xEmCYSd9xiB+YZYb+Yj12D8lvSfEshsbhA2fVkffmLzjcccOdYJoqkncNWvXBTY3pGj+6MZhG2F4ml+0MF20w3DHuQbVO5oIRztD2VA/acwr15iw8Fe8rIyx4YAxeo3lNgi+udUWaYdmVazIPl1HM0zRmj0rOE6CdO5dyzlxuAilrOyij1wRTAZaHhDQDd20Y7/EZqnIK4zc1/A0F2hbEJI3DZuZ+RPYqzvHYZtzW+epiYh X-Forefront-Antispam-Report: CIP:66.35.236.236;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(339900001)(189002)(51704005)(479174004)(24454002)(199003)(377454003)(23746002)(106466001)(16796002)(2950100001)(77096005)(62966003)(77156002)(83506001)(40100003)(64126003)(50466002)(19580405001)(19580395003)(122386002)(80316001)(5001960100002)(5001770100001)(92566002)(189998001)(85426001)(59896002)(99136001)(87936001)(2201001)(65816999)(87266999)(50986999)(54356999)(76176999)(47776003)(66066001)(65956001)(65806001)(4001350100001)(81156007)(86362001)(46102003)(33656002)(105606002)(6806004)(7099028)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR03MB1493;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;MLV:ovrnspm;MX:1;A:0;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB1493;2:62WqdLhqtBI+KU9zfOKUtJJQc0VQtCPJaoGfC010YbdGxMkkAjDvge5DndRiQphK;2:6zmiJ6tRw55IT94x+v38nZ6mGn8hnJlVfloSJZ26/ClB4UnzImN9VXG/Kx1ay6gWRI4cbJsZdeovWc147V9xDIJlvM3SAA595613YiyZz9fP9B8u6O3Bm3RcEYr3V5ZsxOwuIySsxKhVAac6TRqOlFzF3mAp3qhvvBk2pRQ2YskI1v4TNJrOWluGqfQboy1wP+qPJyDCL7IoYVtGiyLXv3oPLStDeYoKwqItfwSm3I0=;6:4qA9MGjqSorbsx5LiWfrFXZvGSUu0o473cT+hgrqPjq1b45DLwOTFCCpBg2t5pU8RZYlfKQADAToCGR29FaU9iBlqM7DFfDMN2ITqVH8x0/BOzlzivRE52vQa1RLtjQWnD0SfqTNUEFCXvuDRO7Gqw==;3:NWrh44OYJVAOw8NGyPibkykjWy+1/XX+AjEknwTw05rq36RtG1w0kxDTRbMMHY7vHzilYSAbxGZAI/mkT84/UMj1Dk7LM+kmcunEg4/HtJyLeUFbX+offs8FQAvtLBsR1IB1132wxUlarAsQKyo/aRMWeEZ6SpeR/9Yoiht5remrGpCNCEl3FY7mblGfbWa95AGklnsOO04+wf0Dems8xsEGMRySm8cYncwDz+xBX4AbsOyEPGYM8GtKoCL0KBkmnAC8VBnDTGTzF4XMWMorOFaIQjj8/R58ydEG1rwSPE8= X-Forefront-PRVS: 0576145E86 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BN3PR03MB1493;9:kX+KSpLn+SRw39HgssM9SVUVnX2R5EYUcPyuLU?= =?Windows-1252?Q?P1/77SkfLN9xLb99qmeCwOKc3NLmzyNDCSFJBxxWFv/L/Zdxts3P8qY1?= =?Windows-1252?Q?JzWapG9ljGnWiOTKkY+xowOi43+tRXeNTQxmZBaASiEP6rSoNjLo1bgY?= =?Windows-1252?Q?CJQRJ21B82zEkMrO8yoQGXaxe92xuZ1gk2szRVltxm08cIp6WAJuWbl3?= =?Windows-1252?Q?/Hqsi3ecaQGQASjtuGdv+4B4paJyp6YTaP/q1vILZuoN6Q8ZBBwdJUWE?= =?Windows-1252?Q?6BAu1pM11xv+Hzu0VVQa5u3n69/bphhuT9/xPWpqFpcsBYYhP3oY525F?= =?Windows-1252?Q?neC5mIB5whs7Lv7575OOGsNU5hY/Ch9vL0lRS8HpaqfPBqdIRPiBjvyd?= =?Windows-1252?Q?L/WFz91aUL6CzaDfAFyDFOooSYBPja0Nb3IBCsP/nYJI7xnkZs6YeOqq?= =?Windows-1252?Q?vqAEe3+yOJODm/qy7QqyvkwPAJqAc1caZmFaMYtQ05iAUOY0rHFP+Pks?= =?Windows-1252?Q?97gBynJVd50eabFLuMilIqNRnatLRB6lpsUL548Lj693xfHlQNUsLq8b?= =?Windows-1252?Q?+qshfQB7kViR0vv3U0yT35LZL5EYtWpiGng+Qb/Kuyv7O0VSN3HZVqAh?= =?Windows-1252?Q?M9WhIItkiD3o39dXO0RPvshjqfgrVprabWxmejv6gBiiiTL7FL0A7qiw?= =?Windows-1252?Q?7TVEv/+yGLDUOzl9u4+MCTpfFjslaou+x6NCECEd/2/kU4phx0IwAWm2?= =?Windows-1252?Q?0OmrhVbeDTihKx2MZZRsTkgnL/TOaXTc8lNQmc4oe8gu4aElcoil7o5c?= =?Windows-1252?Q?520OvAULIg8/ONaA1ZkEfiSWfH4tnR49A5u9CpZmR+ZjMkx06v4GFk83?= =?Windows-1252?Q?jU9/Bl+EVOLs/77kedrC6Iu8P+Nn5SXUbJTdkkNbKPyKcywT8V44+HuF?= =?Windows-1252?Q?6Mls8AtUSG3S626iw3hlhA4lVor8jTJ4SJLGA8Zyj7KrX0sNv7+FBejd?= =?Windows-1252?Q?BBfInRnTcRM/QNMBek1Y9Jn4+YcYEilKi5gcZ/TXMkU2BIGeANQGp/aP?= =?Windows-1252?Q?2q/bsmorHJ4PzMto68jEMjX5AglvxshRY2ppxi1DFHtYajAArOUBQWfv?= =?Windows-1252?Q?PG6jIH1ZXdtaCYR8PkBZEJFMq3IeJ/PprRv+C4ZKx/sz1NS7DrhdC8lU?= =?Windows-1252?Q?LLv0ta87BMTdp72VNcBQcXLHRcyQeloBjIvP5r08JMkrhps6PSEqGt8l?= =?Windows-1252?Q?D+whJ/9skjTU9yVD4QozHHEe87lpthaMvNH3gYFAHaa+18cs7oWCAQ4t?= =?Windows-1252?Q?DgTnW0CIb+wm5kgABnuQRVEpaPSyzdaCnxxer6E8Fgbqls8nsfZdsiTv?= =?Windows-1252?Q?TEWSOH+LvL?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR03MB1493;3:/gcRacpl4uQVJplg3Ks0psC8YvdeKLTvj6Kw9eXcemjGesU39JzaYBwZ4wykrHRzv2tXgrd0ZgANdRp3zZ4rgU9pXtpFXigKqh8bMLwrGsWPSWPVZ4R3GdHR/fYhVwge4/vd1haIvQM02LoOJPf18g==;10:XOJa6LMl7+u1SnEJvUUSsKyK133e9V26SB/10Nf8N2/Pa0OiUSfNqXxTJnga6nelCx0YwQVJ27Y12iaL/UG9iIYMgHszAFZFhl11tGlJRGw=;6:S1WWxs40ZgXT+vGbhvqBD0NbAJ/0QYVjPSzeGBS2hMnAOp2Tw2PAswUPwEi12jZit0fLiAekrvMsKlmzZ5rd9iDwoeE5c36B4Cyncyn5ibT8u/KHs+uROFqEKpTQ869bwNebVB/27Rg5owZxbbXtKA== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2015 03:25:43.8003 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a;Ip=[66.35.236.236];Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1493 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/13/15 4:49 PM, tthayer@opensource.altera.com wrote: > From: Thor Thayer > > The Arria10 SOC uses a completely different SDRAM controller from the > earlier CycloneV and ArriaV SoCs. The memory size is calculated in > the bootloader and passed via the device tree. Using this device > tree size is more generic than using the register fields to > calculate the memory size for different SDRAM controllers. > > Signed-off-by: Thor Thayer > --- > drivers/edac/altera_edac.c | 53 ++++++++++++++++++++++---------------------- > 1 file changed, 26 insertions(+), 27 deletions(-) > > diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c > index 3c4929f..e18a205 100644 > --- a/drivers/edac/altera_edac.c > +++ b/drivers/edac/altera_edac.c > @@ -219,36 +219,35 @@ static void altr_sdr_mc_create_debugfs_nodes(struct mem_ctl_info *mci) > {} > #endif > > -/* Get total memory size in bytes */ > -static u32 altr_sdram_get_total_mem_size(struct regmap *mc_vbase) > +/* Get total memory size from Open Firmware DTB */ > +static unsigned long get_total_mem(void) > { > - u32 size, read_reg, row, bank, col, cs, width; > + struct device_node *np = NULL; > + const unsigned int *reg, *reg_end; > + int len, sw, aw; > + unsigned long start, size, total_mem; > > - if (regmap_read(mc_vbase, DRAMADDRW_OFST, &read_reg) < 0) > + np = of_find_node_by_type(NULL, "memory"); > + if (!np) > return 0; > > - if (regmap_read(mc_vbase, DRAMIFWIDTH_OFST, &width) < 0) > - return 0; > - > - col = (read_reg & DRAMADDRW_COLBIT_MASK) >> > - DRAMADDRW_COLBIT_SHIFT; > - row = (read_reg & DRAMADDRW_ROWBIT_MASK) >> > - DRAMADDRW_ROWBIT_SHIFT; > - bank = (read_reg & DRAMADDRW_BANKBIT_MASK) >> > - DRAMADDRW_BANKBIT_SHIFT; > - cs = (read_reg & DRAMADDRW_CSBIT_MASK) >> > - DRAMADDRW_CSBIT_SHIFT; > - > - /* Correct for ECC as its not addressible */ > - if (width == DRAMIFWIDTH_32B_ECC) > - width = 32; > - if (width == DRAMIFWIDTH_16B_ECC) > - width = 16; > - > - /* calculate the SDRAM size base on this info */ > - size = 1 << (row + bank + col); > - size = size * cs * (width / 8); > - return size; > + aw = of_n_addr_cells(np); > + sw = of_n_size_cells(np); > + reg = (const unsigned int *)of_get_property(np, "reg", &len); > + reg_end = reg + (len / sizeof(u32)); > + > + total_mem = 0; > + do { > + start = of_read_number(reg, aw); > + reg += aw; > + size = of_read_number(reg, sw); > + reg += sw; > + total_mem += size; > + } while (reg < reg_end); > + > + of_node_put(np); > + edac_printk(KERN_ERR, EDAC_MC, "total_mem 0x%lx\n", total_mem); Use edac_dbg() here. Dinh