aboutsummaryrefslogtreecommitdiff
path: root/hw/r2d.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-05 20:24:35 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-05 20:24:35 +0000
commitffd39257018269ee9cf1e39c531a6c546daaa408 (patch)
tree449c13bfc0909d92e7d59db85ce15556d7058512 /hw/r2d.c
parent5985eceeaa45d35c4a447c164627a1aa5e23319a (diff)
downloadqemu-ffd39257018269ee9cf1e39c531a6c546daaa408.zip
qemu-ffd39257018269ee9cf1e39c531a6c546daaa408.tar.gz
qemu-ffd39257018269ee9cf1e39c531a6c546daaa408.tar.bz2
SM501 emulation for R2D-SH4
This patch adds minimum emulation of SM501 multifunction device, whose main feature is 2D graphics. It is one of the peripheral of R2D, the SH4 evaluation board. We can see TUX printed on the QEMU console. Signed-off-by: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5632 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/r2d.c')
-rw-r--r--hw/r2d.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/hw/r2d.c b/hw/r2d.c
index 855aa41..8534793 100644
--- a/hw/r2d.c
+++ b/hw/r2d.c
@@ -25,12 +25,15 @@
#include "hw.h"
#include "sh.h"
+#include "devices.h"
#include "sysemu.h"
#include "boards.h"
#define SDRAM_BASE 0x0c000000 /* Physical location of SDRAM: Area 3 */
#define SDRAM_SIZE 0x04000000
+#define SM501_VRAM_SIZE 0x800000
+
#define PA_POWOFF 0x30
#define PA_VERREG 0x32
#define PA_OUTPORT 0x36
@@ -133,6 +136,7 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size,
{
CPUState *env;
struct SH7750State *s;
+ ram_addr_t sdram_addr, sm501_vga_ram_addr;
if (!cpu_model)
cpu_model = "SH7751R";
@@ -144,10 +148,14 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size,
}
/* Allocate memory space */
- cpu_register_physical_memory(SDRAM_BASE, SDRAM_SIZE, 0);
+ sdram_addr = qemu_ram_alloc(SDRAM_SIZE);
+ cpu_register_physical_memory(SDRAM_BASE, SDRAM_SIZE, sdram_addr);
/* Register peripherals */
r2d_fpga_init(0x04000000);
s = sh7750_init(env);
+ sm501_vga_ram_addr = qemu_ram_alloc(SM501_VRAM_SIZE);
+ sm501_init(ds, 0x10000000, sm501_vga_ram_addr, SM501_VRAM_SIZE,
+ serial_hds[2]);
/* Todo: register on board registers */
{
int kernel_size;
@@ -167,5 +175,5 @@ QEMUMachine r2d_machine = {
.name = "r2d",
.desc = "r2d-plus board",
.init = r2d_init,
- .ram_require = SDRAM_SIZE | RAMSIZE_FIXED,
+ .ram_require = (SDRAM_SIZE + SM501_VRAM_SIZE) | RAMSIZE_FIXED,
};