5 #define H8_3069F_ABWCR ((volatile uint8 *)0xfee020)
6 #define H8_3069F_ASTCR ((volatile uint8 *)0xfee021)
7 #define H8_3069F_RTCOR ((volatile uint8 *)0xfee02a)
8 #define H8_3069F_RTMCSR ((volatile uint8 *)0xfee028)
9 #define H8_3069F_DRCRB ((volatile uint8 *)0xfee027)
10 #define H8_3069F_DRCRA ((volatile uint8 *)0xfee026)
12 #define H8_3069F_P1DDR ((volatile uint8 *)0xfee000)
13 #define H8_3069F_P2DDR ((volatile uint8 *)0xfee001)
14 #define H8_3069F_P8DDR ((volatile uint8 *)0xfee007)
15 #define H8_3069F_PBDDR ((volatile uint8 *)0xfee00a)
17 #define H8_3069F_WCRH ((volatile uint8 *)0xfee022)
18 #define H8_3069F_WCRL ((volatile uint8 *)0xfee023)
22 volatile uint8 val8[4];
23 volatile uint16 val16[2];
24 volatile uint32 val32[1];
32 *H8_3069F_ABWCR = 0xff;
33 *H8_3069F_RTCOR = 0x03; /* ¥ê¥Õ¥ì¥Ã¥·¥å¼þ´ü¤òû¤á¤ËÀßÄê */
34 *H8_3069F_RTMCSR = 0x37;
35 *H8_3069F_DRCRB = 0x8f; /* ¥¦¥¨¥¤¥ÈÁÞÆþ */
36 *H8_3069F_DRCRA = 0x20;
38 *H8_3069F_P1DDR = 0xff;
39 *H8_3069F_P2DDR = 0x07;
40 *H8_3069F_P8DDR = 0xee;
41 *H8_3069F_PBDDR = 0x6c;
43 for (i = 0; i < 200; i++) {
44 for (j = 0; j < 200; j++) {
52 *H8_3069F_WCRH = 0xff;
53 *H8_3069F_WCRL = 0xff;
58 *H8_3069F_ASTCR = 0xff;
63 static int check_val(volatile val_t *p, volatile val_t *wval)
67 p->u.val8[0] = wval->u.val8[0]; p->u.val8[1] = wval->u.val8[1];
68 p->u.val8[2] = wval->u.val8[2]; p->u.val8[3] = wval->u.val8[3];
69 rval.u.val8[0] = p->u.val8[0]; rval.u.val8[1] = p->u.val8[1];
70 rval.u.val8[2] = p->u.val8[2]; rval.u.val8[3] = p->u.val8[3];
72 if (rval.u.val32[0] != wval->u.val32[0])
75 p->u.val16[0] = wval->u.val16[0]; p->u.val16[1] = wval->u.val16[1];
76 rval.u.val16[0] = p->u.val16[0]; rval.u.val16[1] = p->u.val16[1];
78 if (rval.u.val32[0] != wval->u.val32[0])
81 p->u.val32[0] = wval->u.val32[0];
82 rval.u.val32[0] = p->u.val32[0];
84 if (rval.u.val32[0] != wval->u.val32[0])
96 puts("DRAM checking...\n");
98 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++) {
99 putxval((unsigned long)p, 8);
102 val.u.val32[0] = (uint32)p;
103 if (check_val((val_t *)p, &val) < 0)
107 if (check_val((val_t *)p, &val) < 0)
110 val.u.val32[0] = 0xffffffffUL;
111 if (check_val((val_t *)p, &val) < 0)
114 puts("\x08\x08\x08\x08\x08\x08\x08\x08");
116 puts("\nall check OK.\n");
121 putxval((unsigned long)*p, 8);
126 static uint32 dram_check2_val0(uint32 *addr) { return 0x55555555UL; }
127 static uint32 dram_check2_val1(uint32 *addr) { return 0xaaaaaaaaUL; }
128 static uint32 dram_check2_val2(uint32 *addr) { return 0x00000000UL; }
129 static uint32 dram_check2_val3(uint32 *addr) { return 0xffffffffUL; }
130 static uint32 dram_check2_val4(uint32 *addr) { return (uint32)addr; }
131 static uint32 dram_check2_val5(uint32 *addr) { return ~(uint32)addr; }
137 uint32 (*getval[])(uint32 *) = {
147 for (i = 0; getval[i]; i++) {
149 puts("DRAM check pattern: ");
152 puts("\nDRAM setting...\n");
154 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++) {
156 if (!((uint32)p & 0xfff)) {
157 putxval((unsigned long)p, 8);
158 puts("\x08\x08\x08\x08\x08\x08\x08\x08");
162 puts("\nDRAM checking...\n");
164 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++) {
165 if (*p != getval[i](p)) {
167 putxval((unsigned long)p, 8);
169 putxval((unsigned long)*p, 8);
173 if (!((uint32)p & 0xfff)) {
174 putxval((unsigned long)p, 8);
175 puts("\x08\x08\x08\x08\x08\x08\x08\x08");
184 puts("\nall check OK.\n");
194 puts("DRAM clearing...\n");
196 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++)
199 puts("DRAM cleared.\n");