|
1 /* |
|
2 * SHIX 2.0 board description |
|
3 * |
|
4 * Copyright (c) 2005 Samuel Tardieu |
|
5 * |
|
6 * Permission is hereby granted, free of charge, to any person obtaining a copy |
|
7 * of this software and associated documentation files (the "Software"), to deal |
|
8 * in the Software without restriction, including without limitation the rights |
|
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
10 * copies of the Software, and to permit persons to whom the Software is |
|
11 * furnished to do so, subject to the following conditions: |
|
12 * |
|
13 * The above copyright notice and this permission notice shall be included in |
|
14 * all copies or substantial portions of the Software. |
|
15 * |
|
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
|
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|
22 * THE SOFTWARE. |
|
23 */ |
|
24 /* |
|
25 Shix 2.0 board by Alexis Polti, described at |
|
26 http://perso.enst.fr/~polti/realisations/shix20/ |
|
27 |
|
28 More information in target-sh4/README.sh4 |
|
29 */ |
|
30 #include "hw.h" |
|
31 #include "sh.h" |
|
32 #include "sysemu.h" |
|
33 #include "boards.h" |
|
34 |
|
35 #define BIOS_FILENAME "shix_bios.bin" |
|
36 #define BIOS_ADDRESS 0xA0000000 |
|
37 |
|
38 void irq_info(void) |
|
39 { |
|
40 /* XXXXX */ |
|
41 } |
|
42 |
|
43 void pic_info(void) |
|
44 { |
|
45 /* XXXXX */ |
|
46 } |
|
47 |
|
48 void vga_update_display(void) |
|
49 { |
|
50 /* XXXXX */ |
|
51 } |
|
52 |
|
53 void vga_invalidate_display(void) |
|
54 { |
|
55 /* XXXXX */ |
|
56 } |
|
57 |
|
58 void vga_screen_dump(const char *filename) |
|
59 { |
|
60 /* XXXXX */ |
|
61 } |
|
62 |
|
63 static void shix_init(ram_addr_t ram_size, int vga_ram_size, |
|
64 const char *boot_device, DisplayState * ds, |
|
65 const char *kernel_filename, const char *kernel_cmdline, |
|
66 const char *initrd_filename, const char *cpu_model) |
|
67 { |
|
68 int ret; |
|
69 CPUState *env; |
|
70 struct SH7750State *s; |
|
71 |
|
72 if (!cpu_model) |
|
73 cpu_model = "any"; |
|
74 |
|
75 printf("Initializing CPU\n"); |
|
76 env = cpu_init(cpu_model); |
|
77 |
|
78 /* Allocate memory space */ |
|
79 printf("Allocating ROM\n"); |
|
80 cpu_register_physical_memory(0x00000000, 0x00004000, IO_MEM_ROM); |
|
81 printf("Allocating SDRAM 1\n"); |
|
82 cpu_register_physical_memory(0x08000000, 0x01000000, 0x00004000); |
|
83 printf("Allocating SDRAM 2\n"); |
|
84 cpu_register_physical_memory(0x0c000000, 0x01000000, 0x01004000); |
|
85 |
|
86 /* Load BIOS in 0 (and access it through P2, 0xA0000000) */ |
|
87 if (bios_name == NULL) |
|
88 bios_name = BIOS_FILENAME; |
|
89 printf("%s: load BIOS '%s'\n", __func__, bios_name); |
|
90 ret = load_image(bios_name, phys_ram_base); |
|
91 if (ret < 0) { /* Check bios size */ |
|
92 fprintf(stderr, "ret=%d\n", ret); |
|
93 fprintf(stderr, "qemu: could not load SHIX bios '%s'\n", |
|
94 bios_name); |
|
95 exit(1); |
|
96 } |
|
97 |
|
98 /* Register peripherals */ |
|
99 s = sh7750_init(env); |
|
100 /* XXXXX Check success */ |
|
101 tc58128_init(s, "shix_linux_nand.bin", NULL); |
|
102 fprintf(stderr, "initialization terminated\n"); |
|
103 } |
|
104 |
|
105 QEMUMachine shix_machine = { |
|
106 .name = "shix", |
|
107 .desc = "shix card", |
|
108 .init = shix_init, |
|
109 .ram_require = (0x00004000 + 0x01000000 + 0x01000000) | RAMSIZE_FIXED, |
|
110 }; |