Message ID | 20170606235500.22772-3-chris.packham@alliedtelesis.co.nz (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
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 <chris.packham@alliedtelesis.co.nz> > --- > 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 <thor.thayer@linux.intel.com>
On Mon, Jun 12, 2017 at 01:34:05PM -0500, Thor Thayer wrote: > 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 <chris.packham@alliedtelesis.co.nz> > > --- ... > Nice change! Tested on Cyclone5 DevKit & Arria10 DevKit. > > Tested-by: Thor Thayer <thor.thayer@linux.intel.com> Applied, thanks.
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;
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 <chris.packham@alliedtelesis.co.nz> --- Changes in v2: - New drivers/edac/altera_edac.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-)