From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752744AbdFLSau (ORCPT ); Mon, 12 Jun 2017 14:30:50 -0400 Received: from mga11.intel.com ([192.55.52.93]:55083 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751594AbdFLSas (ORCPT ); Mon, 12 Jun 2017 14:30:48 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,334,1493708400"; d="scan'208";a="98571438" Reply-To: thor.thayer@linux.intel.com Subject: Re: [PATCH v2 2/3] EDAC: altera: simplify calculation of total memory To: Chris Packham , bp@alien8.de, linux-edac@vger.kernel.org Cc: mchehab@kernel.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org References: <20170606235500.22772-1-chris.packham@alliedtelesis.co.nz> <20170606235500.22772-3-chris.packham@alliedtelesis.co.nz> From: Thor Thayer Message-ID: Date: Mon, 12 Jun 2017 13:34:05 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170606235500.22772-3-chris.packham@alliedtelesis.co.nz> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/06/2017 06:54 PM, Chris Packham wrote: > Use of_address_to_resource() and resource_size() instead of manually > parsing the "reg" property from the "memory" node(s). > > Signed-off-by: Chris Packham > --- > Changes in v2: > - New > > drivers/edac/altera_edac.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c > index 7717b094fabb..f8b623352627 100644 > --- a/drivers/edac/altera_edac.c > +++ b/drivers/edac/altera_edac.c > @@ -214,24 +214,16 @@ static void altr_sdr_mc_create_debugfs_nodes(struct mem_ctl_info *mci) > static unsigned long get_total_mem(void) > { > struct device_node *np = NULL; > - const unsigned int *reg, *reg_end; > - int len, sw, aw; > - unsigned long start, size, total_mem = 0; > + struct resource res; > + int ret; > + unsigned long total_mem = 0; > > for_each_node_by_type(np, "memory") { > - 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); > + ret = of_address_to_resource(np, 0, &res); > + if (ret) > + continue; > + > + total_mem += resource_size(&res); > } > edac_dbg(0, "total_mem 0x%lx\n", total_mem); > return total_mem; > Nice change! Tested on Cyclone5 DevKit & Arria10 DevKit. Tested-by: Thor Thayer