[PATCH linux dev-4.7 v2] ARM: dts: aspeed: Reserve RAM on P9 machines

Joel Stanley joel at jms.id.au
Fri Feb 24 16:33:57 AEDT 2017


This flash_memory region reserved memory region is used by the host<->bmc
mailbox daemon.

This patch initially had a vga_memory region for the host processor's
framebuffer when using the Aspeed as a PCI graphics device. However this
is not required as u-boot modifies the /memory node of the device tree
to report the total RAM size minus the strapped VGA framebuffer. This is
16MB of the current system.

These numbers were generated as follows:

 $ genmem.py --ram-base 0x80000000 --ram 1G --flash 64M

And for Romulus and Witherspoon:

 $ genmem.py --ram-base 0x80000000 --ram 512M --flash 64M

With this script:

def convert_one(s):
    suffixes = [
                ('K', 1024),
                ('M', (1024*1024)),
                ('G', (1024*1024*1024)),
                ('T', (1024*1024*1024*1024)),
                ('th', 1000),
                ('mi', (1000*1000)),
                ('bi', (1000*1000*1000)),
                ('tri', (1000*1000*1000*1000))
               ]

    s = s.strip()

    factor = 1
    for suffix, mul in suffixes:
        if s.endswith(suffix) or s.endswith(suffix.lower()):
            factor = mul
            s = s[:-len(suffix)]
            break

    val = None

    if s.startswith('0b'):
        val = convert_binary(s)
    elif s.startswith('0x'):
        val = int(s, 16)
    else:
        for c in 'abcdefABCDEF':
            if c in s:
                val = int(s, 16)
                break

    if val is None:
        val = int(s)

    val *= factor

    return val

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--ram-base')
parser.add_argument('--ram')
parser.add_argument('--flash')
parser.add_argument('--vga')

args = parser.parse_args()
base = convert_one(args.ram_base)
size = convert_one(args.ram)
flash_size = convert_one(args.flash)
vga_size = 0
if args.vga:
    vga_size = convert_one(args.vga)

vga_base = base + size - vga_size
flash_base = base + size - vga_size - flash_size

if flash_base % flash_size != 0:
    print("Error: flash base address not a multiple of window. Rounding down")
    flash_base -= flash_base % flash_size

print("memory {\r\n\treg = <0x%08x 0x%08x>;\r\n}" % (base, size))
if vga_size > 0:
    print("vga_memory {\r\n\tno-map;\r\n\treg = <0x%08x 0x%08x>;\r\n}" % (vga_base, vga_base))
print("flash_memory {\r\n\tno-map;\r\n\treg = <0x%08x 0x%08x>;\r\n}" % (flash_base, flash_size))

Signed-off-by: Joel Stanley <joel at jms.id.au>
---
v2 drops the the reserved region for VGA as we don't need it

 arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts     | 11 +++++++++++
 arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts |  4 ++--
 arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts       |  4 ++--
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
index 5ba7b62aee83..93fbd7b8c490 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
@@ -20,6 +20,17 @@
 		reg = <0x80000000 0x20000000>;
 	};
 
+	reserved-memory {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		flash_memory: region at 98000000 {
+			no-map;
+			reg = <0x98000000 0x04000000>; /* 64M */
+		};
+	};
+
 	fsi-master {
 		compatible = "ibm,fsi-master", "ibm,fsi-master-gpio";
 
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
index e15bd256c0fd..0769507f1126 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
@@ -25,9 +25,9 @@
 		#size-cells = <1>;
 		ranges;
 
-		flash_memory: region at 94000000 {
+		flash_memory: region at 98000000 {
 			no-map;
-			reg = <0x94000000 0x04000000>; /* 64M */
+			reg = <0x98000000 0x04000000>; /* 64M */
 		};
 	};
 
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
index d9f63d7752dd..c2af9ffa89bf 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
@@ -25,9 +25,9 @@
 		#size-cells = <1>;
 		ranges;
 
-		flash_memory: region at 94000000 {
+		flash_memory: region at bc000000 {
 			no-map;
-			reg = <0x94000000 0x04000000>; /* 64M */
+			reg = <0xbc000000 0x04000000>; /* 64M */
 		};
 	};
 
-- 
2.11.0



More information about the openbmc mailing list