25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: machine_landisk.c,v 1.8 2007/04/13 16:07:26 debug Exp $ |
* $Id: machine_landisk.c,v 1.15 2007/04/22 03:57:38 debug Exp $ |
29 |
* |
* |
30 |
* I-O DATA LANDISK USL-5P. |
* I-O DATA LANDISK USL-5P. |
31 |
* |
* |
32 |
* This machine consists of: |
* This machine consists of: |
33 |
* |
* |
34 |
* o) An SH4 processor, which includes serial console etc, |
* o) An SH4 processor, which includes serial console etc, |
35 |
* o) an IDE controller at address 0x14000000, |
* o) 64 MB RAM (at 0x0c000000), |
36 |
|
* o) an IDE controller at address 0x14000000 (irq 10), |
37 |
|
* o) a RS5C313 real time clock, connected to the SH4 SCI port, |
38 |
|
* o) a PCI controller (PCIC), |
39 |
* o) and a minimal SH-IPL+G PROM emulation layer (required to make |
* o) and a minimal SH-IPL+G PROM emulation layer (required to make |
40 |
* OpenBSD/landisk boot). |
* OpenBSD/landisk boot). |
41 |
|
* |
42 |
|
* TODO: |
43 |
|
* Realtek NIC (irq 5), PCIIDE (irq 6), USB controllers, etc. |
44 |
*/ |
*/ |
45 |
|
|
46 |
#include <stdio.h> |
#include <stdio.h> |
58 |
#include "sh4_scireg.h" |
#include "sh4_scireg.h" |
59 |
|
|
60 |
|
|
61 |
|
/* This is not really implemented yet: (experimental) */ |
62 |
|
/* #define INCLUDE_LANDISK_NIC */ |
63 |
|
|
64 |
|
|
65 |
MACHINE_SETUP(landisk) |
MACHINE_SETUP(landisk) |
66 |
{ |
{ |
67 |
|
#ifdef INCLUDE_LANDISK_NIC |
68 |
|
struct pci_data *pcibus = |
69 |
|
machine->cpus[machine->bootstrap_cpu]->cd.sh.pcic_pcibus; |
70 |
|
#endif |
71 |
char tmpstr[300]; |
char tmpstr[300]; |
72 |
|
|
73 |
machine->machine_name = "Landisk USL-5P"; |
machine->machine_name = "Landisk USL-5P"; |
74 |
|
machine->stable = 1; |
75 |
|
|
76 |
/* 200 MHz SH4 CPU clock: */ |
/* 266.67 MHz SH4 CPU clock: */ |
77 |
if (machine->emulated_hz == 0) |
if (machine->emulated_hz == 0) |
78 |
machine->emulated_hz = 200000000; |
machine->emulated_hz = 266666666; |
79 |
|
|
80 |
/* 50 MHz SH4 PCLOCK: */ |
/* 33.33 MHz SH4 PCLOCK: */ |
81 |
machine->cpus[machine->bootstrap_cpu]->cd.sh.pclock = 50000000; |
machine->cpus[machine->bootstrap_cpu]->cd.sh.pclock = 33333333; |
82 |
|
|
83 |
|
/* Note: 64 MB RAM at 0x0c000000, not at 0x00000000. */ |
84 |
dev_ram_init(machine, 0x0c000000, 64 * 1048576, DEV_RAM_RAM, 0x0); |
dev_ram_init(machine, 0x0c000000, 64 * 1048576, DEV_RAM_RAM, 0x0); |
85 |
|
|
86 |
/* wdc0 at obio0 port 0x14000000-0x1400000f irq 10 */ |
/* wdc0 at obio0 port 0x14000000-0x1400000f irq 10 */ |
94 |
(uint64_t) SCI_DEVICE_BASE); |
(uint64_t) SCI_DEVICE_BASE); |
95 |
device_add(machine, tmpstr); |
device_add(machine, tmpstr); |
96 |
|
|
97 |
|
#ifdef INCLUDE_LANDISK_NIC |
98 |
|
/* Realtek PCI NIC: */ |
99 |
|
bus_pci_add(machine, pcibus, machine->memory, 0, 0, 0, "rtl8139c"); |
100 |
|
#endif |
101 |
|
|
102 |
if (!machine->prom_emulation) |
if (!machine->prom_emulation) |
103 |
return; |
return; |
104 |
|
|
112 |
* TODO: Make nicer. |
* TODO: Make nicer. |
113 |
*/ |
*/ |
114 |
cpu->cd.sh.r[4] = 0; |
cpu->cd.sh.r[4] = 0; |
115 |
cpu->cd.sh.r[5] = 0x8c000000 + 8 * 1048576; /* Note/TODO: |
cpu->cd.sh.r[5] = 0x8c000000 + 10 * 1048576; /* Note/TODO: |
116 |
Assuming hardcoded 8 MB kernel size! */ |
Assuming hardcoded 10 MB kernel size! */ |
117 |
|
|
118 |
sh_ipl_g_emul_init(machine); |
sh_ipl_g_emul_init(machine); |
119 |
} |
} |
121 |
|
|
122 |
MACHINE_DEFAULT_CPU(landisk) |
MACHINE_DEFAULT_CPU(landisk) |
123 |
{ |
{ |
124 |
/* Hitachi SH4 7751R, 200 MHz */ |
/* Hitachi SH4 7751R, 266.67 MHz */ |
125 |
machine->cpu_name = strdup("SH7751R"); |
machine->cpu_name = strdup("SH7751R"); |
126 |
} |
} |
127 |
|
|
138 |
{ |
{ |
139 |
MR_DEFAULT(landisk, "Landisk", ARCH_SH, MACHINE_LANDISK); |
MR_DEFAULT(landisk, "Landisk", ARCH_SH, MACHINE_LANDISK); |
140 |
me->set_default_ram = machine_default_ram_landisk; |
me->set_default_ram = machine_default_ram_landisk; |
141 |
|
|
142 |
machine_entry_add_alias(me, "landisk"); |
machine_entry_add_alias(me, "landisk"); |
143 |
|
machine_entry_add_alias(me, "usl-5p"); |
144 |
} |
} |
145 |
|
|