summary refs log tree commit diff stats
path: root/include/hw/misc/aspeed_sdmc.h
diff options
context:
space:
mode:
authorCédric Le Goater <clg@kaod.org>2016-09-06 19:52:17 +0100
committerPeter Maydell <peter.maydell@linaro.org>2016-09-06 19:52:17 +0100
commitc2da8a8b90faf0b77417e08fa942af1ff0f7cdc3 (patch)
tree2258604fba53b490d84133d84efec72e555be6da /include/hw/misc/aspeed_sdmc.h
parent2926375cffce464fde6b4dabaed1e133d549af39 (diff)
downloadfocaccia-qemu-c2da8a8b90faf0b77417e08fa942af1ff0f7cdc3.tar.gz
focaccia-qemu-c2da8a8b90faf0b77417e08fa942af1ff0f7cdc3.zip
ast2400: add a memory controller device model
The uboot in the previous release of the SDK was using a hardcoded
value for memory size. This is not true anymore, the value is now
retrieved from the memory controller.

Below is a model for this device, only supporting unlock and
configuration. Without it, we endup running a guest with 64MB, which
is a bit low nowdays. It uses a 'silicon-rev' property and ram_size to
build a default value. Some bits should be linked to SCU strapping
registers but it seems a bit complex to add for the current need.

The model is ready for the AST2500 SOC.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/misc/aspeed_sdmc.h')
-rw-r--r--include/hw/misc/aspeed_sdmc.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/hw/misc/aspeed_sdmc.h b/include/hw/misc/aspeed_sdmc.h
new file mode 100644
index 0000000000..7e081f6d2b
--- /dev/null
+++ b/include/hw/misc/aspeed_sdmc.h
@@ -0,0 +1,31 @@
+/*
+ * ASPEED SDRAM Memory Controller
+ *
+ * Copyright (C) 2016 IBM Corp.
+ *
+ * This code is licensed under the GPL version 2 or later. See the
+ * COPYING file in the top-level directory.
+ */
+#ifndef ASPEED_SDMC_H
+#define ASPEED_SDMC_H
+
+#include "hw/sysbus.h"
+
+#define TYPE_ASPEED_SDMC "aspeed.sdmc"
+#define ASPEED_SDMC(obj) OBJECT_CHECK(AspeedSDMCState, (obj), TYPE_ASPEED_SDMC)
+
+#define ASPEED_SDMC_NR_REGS (0x8 >> 2)
+
+typedef struct AspeedSDMCState {
+    /*< private >*/
+    SysBusDevice parent_obj;
+
+    /*< public >*/
+    MemoryRegion iomem;
+
+    uint32_t regs[ASPEED_SDMC_NR_REGS];
+    uint32_t silicon_rev;
+
+} AspeedSDMCState;
+
+#endif /* ASPEED_SDMC_H */