Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff0abed4 authored by Chris Packham's avatar Chris Packham Committed by Borislav Petkov
Browse files

EDAC, altera: Simplify calculation of total memory



Use of_address_to_resource() and resource_size() instead of manually
parsing the "reg" property from the "memory" node(s).

Signed-off-by: default avatarChris Packham <chris.packham@alliedtelesis.co.nz>
Tested-by: default avatarThor Thayer <thor.thayer@linux.intel.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/20170606235500.22772-3-chris.packham@alliedtelesis.co.nz


Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
parent 133e4455
Loading
Loading
Loading
Loading
+8 −16
Original line number Original line Diff line number Diff line
@@ -214,24 +214,16 @@ static void altr_sdr_mc_create_debugfs_nodes(struct mem_ctl_info *mci)
static unsigned long get_total_mem(void)
static unsigned long get_total_mem(void)
{
{
	struct device_node *np = NULL;
	struct device_node *np = NULL;
	const unsigned int *reg, *reg_end;
	struct resource res;
	int len, sw, aw;
	int ret;
	unsigned long start, size, total_mem = 0;
	unsigned long total_mem = 0;


	for_each_node_by_type(np, "memory") {
	for_each_node_by_type(np, "memory") {
		aw = of_n_addr_cells(np);
		ret = of_address_to_resource(np, 0, &res);
		sw = of_n_size_cells(np);
		if (ret)
		reg = (const unsigned int *)of_get_property(np, "reg", &len);
			continue;
		reg_end = reg + (len / sizeof(u32));


		total_mem += resource_size(&res);
		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);
	}
	}
	edac_dbg(0, "total_mem 0x%lx\n", total_mem);
	edac_dbg(0, "total_mem 0x%lx\n", total_mem);
	return total_mem;
	return total_mem;