75 #define RDRAM_0_START 0x00000000
76 #define RDRAM_0_END 0x001FFFFF
77 #define RDRAM_1_START 0x00200000
78 #define RDRAM_1_END 0x003FFFFF
80 #define RDRAM_START RDRAM_0_START
81 #define RDRAM_END RDRAM_1_END
87 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
88 #define IS_RDRAM(x) ((unsigned)(x) >= RDRAM_START && \
89 (unsigned)(x) < RDRAM_END)
96 #define RDRAM_BASE_REG 0x03F00000
98 #define RDRAM_CONFIG_REG (RDRAM_BASE_REG+0x00)
99 #define RDRAM_DEVICE_TYPE_REG (RDRAM_BASE_REG+0x00)
100 #define RDRAM_DEVICE_ID_REG (RDRAM_BASE_REG+0x04)
101 #define RDRAM_DELAY_REG (RDRAM_BASE_REG+0x08)
102 #define RDRAM_MODE_REG (RDRAM_BASE_REG+0x0c)
103 #define RDRAM_REF_INTERVAL_REG (RDRAM_BASE_REG+0x10)
104 #define RDRAM_REF_ROW_REG (RDRAM_BASE_REG+0x14)
105 #define RDRAM_RAS_INTERVAL_REG (RDRAM_BASE_REG+0x18)
106 #define RDRAM_MIN_INTERVAL_REG (RDRAM_BASE_REG+0x1c)
107 #define RDRAM_ADDR_SELECT_REG (RDRAM_BASE_REG+0x20)
108 #define RDRAM_DEVICE_MANUF_REG (RDRAM_BASE_REG+0x24)
110 #define RDRAM_0_DEVICE_ID 0
111 #define RDRAM_1_DEVICE_ID 1
113 #define RDRAM_RESET_MODE 0
114 #define RDRAM_ACTIVE_MODE 1
115 #define RDRAM_STANDBY_MODE 2
117 #define RDRAM_LENGTH (2*512*2048)
118 #define RDRAM_0_BASE_ADDRESS (RDRAM_0_DEVICE_ID*RDRAM_LENGTH)
119 #define RDRAM_1_BASE_ADDRESS (RDRAM_1_DEVICE_ID*RDRAM_LENGTH)
121 #define RDRAM_0_CONFIG 0x00000
122 #define RDRAM_1_CONFIG 0x00400
123 #define RDRAM_GLOBAL_CONFIG 0x80000
137 #define PIF_ROM_START 0x1FC00000
138 #define PIF_ROM_END 0x1FC007BF
139 #define PIF_RAM_START 0x1FC007C0
140 #define PIF_RAM_END 0x1FC007FF
149 #define CHNL_ERR_NORESP 0x80
150 #define CHNL_ERR_OVERRUN 0x40
151 #define CHNL_ERR_FRAME 0x80
152 #define CHNL_ERR_COLLISION 0x40
154 #define CHNL_ERR_MASK 0xC0
160 #define DEVICE_TYPE_CART 0
161 #define DEVICE_TYPE_BULK 1
162 #define DEVICE_TYPE_64DD 2
163 #define DEVICE_TYPE_SRAM 3
168 #define SP_DMEM_START 0x04000000
169 #define SP_DMEM_END 0x04000FFF
170 #define SP_IMEM_START 0x04001000
171 #define SP_IMEM_END 0x04001FFF
177 #define SP_BASE_REG 0x04040000
180 #define SP_MEM_ADDR_REG (SP_BASE_REG+0x00)
183 #define SP_DRAM_ADDR_REG (SP_BASE_REG+0x04)
187 #define SP_RD_LEN_REG (SP_BASE_REG+0x08)
191 #define SP_WR_LEN_REG (SP_BASE_REG+0x0C)
194 #define SP_STATUS_REG (SP_BASE_REG+0x10)
197 #define SP_DMA_FULL_REG (SP_BASE_REG+0x14)
200 #define SP_DMA_BUSY_REG (SP_BASE_REG+0x18)
204 #define SP_SEMAPHORE_REG (SP_BASE_REG+0x1C)
207 #define SP_PC_REG 0x04080000
210 #define SP_DMA_DMEM 0x0000
211 #define SP_DMA_IMEM 0x1000
216 #define SP_CLR_HALT 0x00001
217 #define SP_SET_HALT 0x00002
218 #define SP_CLR_BROKE 0x00004
219 #define SP_CLR_INTR 0x00008
220 #define SP_SET_INTR 0x00010
221 #define SP_CLR_SSTEP 0x00020
222 #define SP_SET_SSTEP 0x00040
223 #define SP_CLR_INTR_BREAK 0x00080
224 #define SP_SET_INTR_BREAK 0x00100
225 #define SP_CLR_SIG0 0x00200
226 #define SP_SET_SIG0 0x00400
227 #define SP_CLR_SIG1 0x00800
228 #define SP_SET_SIG1 0x01000
229 #define SP_CLR_SIG2 0x02000
230 #define SP_SET_SIG2 0x04000
231 #define SP_CLR_SIG3 0x08000
232 #define SP_SET_SIG3 0x10000
233 #define SP_CLR_SIG4 0x20000
234 #define SP_SET_SIG4 0x40000
235 #define SP_CLR_SIG5 0x80000
236 #define SP_SET_SIG5 0x100000
237 #define SP_CLR_SIG6 0x200000
238 #define SP_SET_SIG6 0x400000
239 #define SP_CLR_SIG7 0x800000
240 #define SP_SET_SIG7 0x1000000
245 #define SP_STATUS_HALT 0x001
246 #define SP_STATUS_BROKE 0x002
247 #define SP_STATUS_DMA_BUSY 0x004
248 #define SP_STATUS_DMA_FULL 0x008
249 #define SP_STATUS_IO_FULL 0x010
250 #define SP_STATUS_SSTEP 0x020
251 #define SP_STATUS_INTR_BREAK 0x040
252 #define SP_STATUS_SIG0 0x080
253 #define SP_STATUS_SIG1 0x100
254 #define SP_STATUS_SIG2 0x200
255 #define SP_STATUS_SIG3 0x400
256 #define SP_STATUS_SIG4 0x800
257 #define SP_STATUS_SIG5 0x1000
258 #define SP_STATUS_SIG6 0x2000
259 #define SP_STATUS_SIG7 0x4000
264 #define SP_CLR_YIELD SP_CLR_SIG0
265 #define SP_SET_YIELD SP_SET_SIG0
266 #define SP_STATUS_YIELD SP_STATUS_SIG0
267 #define SP_CLR_YIELDED SP_CLR_SIG1
268 #define SP_SET_YIELDED SP_SET_SIG1
269 #define SP_STATUS_YIELDED SP_STATUS_SIG1
270 #define SP_CLR_TASKDONE SP_CLR_SIG2
271 #define SP_SET_TASKDONE SP_SET_SIG2
272 #define SP_STATUS_TASKDONE SP_STATUS_SIG2
273 #define SP_CLR_RSPSIGNAL SP_CLR_SIG3
274 #define SP_SET_RSPSIGNAL SP_SET_SIG3
275 #define SP_STATUS_RSPSIGNAL SP_STATUS_SIG3
276 #define SP_CLR_CPUSIGNAL SP_CLR_SIG4
277 #define SP_SET_CPUSIGNAL SP_SET_SIG4
278 #define SP_STATUS_CPUSIGNAL SP_STATUS_SIG4
281 #define SP_IBIST_REG 0x04080004
286 #define SP_IBIST_CHECK 0x01
287 #define SP_IBIST_GO 0x02
288 #define SP_IBIST_CLEAR 0x04
296 #define SP_IBIST_DONE 0x04
297 #define SP_IBIST_FAILED 0x78
303 #define DPC_BASE_REG 0x04100000
306 #define DPC_START_REG (DPC_BASE_REG+0x00)
309 #define DPC_END_REG (DPC_BASE_REG+0x04)
312 #define DPC_CURRENT_REG (DPC_BASE_REG+0x08)
315 #define DPC_STATUS_REG (DPC_BASE_REG+0x0C)
318 #define DPC_CLOCK_REG (DPC_BASE_REG+0x10)
321 #define DPC_BUFBUSY_REG (DPC_BASE_REG+0x14)
324 #define DPC_PIPEBUSY_REG (DPC_BASE_REG+0x18)
327 #define DPC_TMEM_REG (DPC_BASE_REG+0x1C)
332 #define DPC_CLR_XBUS_DMEM_DMA 0x0001
333 #define DPC_SET_XBUS_DMEM_DMA 0x0002
334 #define DPC_CLR_FREEZE 0x0004
335 #define DPC_SET_FREEZE 0x0008
336 #define DPC_CLR_FLUSH 0x0010
337 #define DPC_SET_FLUSH 0x0020
338 #define DPC_CLR_TMEM_CTR 0x0040
339 #define DPC_CLR_PIPE_CTR 0x0080
340 #define DPC_CLR_CMD_CTR 0x0100
341 #define DPC_CLR_CLOCK_CTR 0x0200
346 #define DPC_STATUS_XBUS_DMEM_DMA 0x001
347 #define DPC_STATUS_FREEZE 0x002
348 #define DPC_STATUS_FLUSH 0x004
350 #define DPC_STATUS_START_GCLK 0x008
351 #define DPC_STATUS_TMEM_BUSY 0x010
352 #define DPC_STATUS_PIPE_BUSY 0x020
353 #define DPC_STATUS_CMD_BUSY 0x040
354 #define DPC_STATUS_CBUF_READY 0x080
355 #define DPC_STATUS_DMA_BUSY 0x100
356 #define DPC_STATUS_END_VALID 0x200
357 #define DPC_STATUS_START_VALID 0x400
363 #define DPS_BASE_REG 0x04200000
366 #define DPS_TBIST_REG (DPS_BASE_REG+0x00)
369 #define DPS_TEST_MODE_REG (DPS_BASE_REG+0x04)
372 #define DPS_BUFTEST_ADDR_REG (DPS_BASE_REG+0x08)
375 #define DPS_BUFTEST_DATA_REG (DPS_BASE_REG+0x0C)
380 #define DPS_TBIST_CHECK 0x01
381 #define DPS_TBIST_GO 0x02
382 #define DPS_TBIST_CLEAR 0x04
390 #define DPS_TBIST_DONE 0x004
391 #define DPS_TBIST_FAILED 0x7F8
397 #define MI_BASE_REG 0x04300000
404 #define MI_INIT_MODE_REG (MI_BASE_REG+0x00)
405 #define MI_MODE_REG MI_INIT_MODE_REG
410 #define MI_CLR_INIT 0x0080
411 #define MI_SET_INIT 0x0100
412 #define MI_CLR_EBUS 0x0200
413 #define MI_SET_EBUS 0x0400
414 #define MI_CLR_DP_INTR 0x0800
415 #define MI_CLR_RDRAM 0x1000
416 #define MI_SET_RDRAM 0x2000
421 #define MI_MODE_INIT 0x0080
422 #define MI_MODE_EBUS 0x0100
423 #define MI_MODE_RDRAM 0x0200
426 #define MI_VERSION_REG (MI_BASE_REG+0x04)
427 #define MI_NOOP_REG MI_VERSION_REG
430 #define MI_INTR_REG (MI_BASE_REG+0x08)
436 #define MI_INTR_MASK_REG (MI_BASE_REG+0x0C)
441 #define MI_INTR_SP 0x01
442 #define MI_INTR_SI 0x02
443 #define MI_INTR_AI 0x04
444 #define MI_INTR_VI 0x08
445 #define MI_INTR_PI 0x10
446 #define MI_INTR_DP 0x20
453 #define MI_INTR_MASK_CLR_SP 0x0001
454 #define MI_INTR_MASK_SET_SP 0x0002
455 #define MI_INTR_MASK_CLR_SI 0x0004
456 #define MI_INTR_MASK_SET_SI 0x0008
457 #define MI_INTR_MASK_CLR_AI 0x0010
458 #define MI_INTR_MASK_SET_AI 0x0020
459 #define MI_INTR_MASK_CLR_VI 0x0040
460 #define MI_INTR_MASK_SET_VI 0x0080
461 #define MI_INTR_MASK_CLR_PI 0x0100
462 #define MI_INTR_MASK_SET_PI 0x0200
463 #define MI_INTR_MASK_CLR_DP 0x0400
464 #define MI_INTR_MASK_SET_DP 0x0800
470 #define MI_INTR_MASK_SP 0x01
471 #define MI_INTR_MASK_SI 0x02
472 #define MI_INTR_MASK_AI 0x04
473 #define MI_INTR_MASK_VI 0x08
474 #define MI_INTR_MASK_PI 0x10
475 #define MI_INTR_MASK_DP 0x20
481 #define VI_BASE_REG 0x04400000
504 #define VI_STATUS_REG (VI_BASE_REG+0x00)
505 #define VI_CONTROL_REG VI_STATUS_REG
508 #define VI_ORIGIN_REG (VI_BASE_REG+0x04)
509 #define VI_DRAM_ADDR_REG VI_ORIGIN_REG
512 #define VI_WIDTH_REG (VI_BASE_REG+0x08)
513 #define VI_H_WIDTH_REG VI_WIDTH_REG
516 #define VI_INTR_REG (VI_BASE_REG+0x0C)
517 #define VI_V_INTR_REG VI_INTR_REG
526 #define VI_CURRENT_REG (VI_BASE_REG+0x10)
527 #define VI_V_CURRENT_LINE_REG VI_CURRENT_REG
535 #define VI_BURST_REG (VI_BASE_REG+0x14)
536 #define VI_TIMING_REG VI_BURST_REG
539 #define VI_V_SYNC_REG (VI_BASE_REG+0x18)
545 #define VI_H_SYNC_REG (VI_BASE_REG+0x1C)
551 #define VI_LEAP_REG (VI_BASE_REG+0x20)
552 #define VI_H_SYNC_LEAP_REG VI_LEAP_REG
558 #define VI_H_START_REG (VI_BASE_REG+0x24)
559 #define VI_H_VIDEO_REG VI_H_START_REG
565 #define VI_V_START_REG (VI_BASE_REG+0x28)
566 #define VI_V_VIDEO_REG VI_V_START_REG
572 #define VI_V_BURST_REG (VI_BASE_REG+0x2C)
577 #define VI_X_SCALE_REG (VI_BASE_REG+0x30)
582 #define VI_Y_SCALE_REG (VI_BASE_REG+0x34)
587 #define VI_CTRL_TYPE_16 0x00002
588 #define VI_CTRL_TYPE_32 0x00003
589 #define VI_CTRL_GAMMA_DITHER_ON 0x00004
590 #define VI_CTRL_GAMMA_ON 0x00008
591 #define VI_CTRL_DIVOT_ON 0x00010
592 #define VI_CTRL_SERRATE_ON 0x00040
593 #define VI_CTRL_ANTIALIAS_MASK 0x00300
594 #define VI_CTRL_DITHER_FILTER_ON 0x10000
599 #define VI_NTSC_CLOCK 48681812
600 #define VI_PAL_CLOCK 49656530
601 #define VI_MPAL_CLOCK 48628316
611 #define AI_BASE_REG 0x04500000
614 #define AI_DRAM_ADDR_REG (AI_BASE_REG+0x00)
618 #define AI_LEN_REG (AI_BASE_REG+0x04)
621 #define AI_CONTROL_REG (AI_BASE_REG+0x08)
628 #define AI_STATUS_REG (AI_BASE_REG+0x0C)
635 #define AI_DACRATE_REG (AI_BASE_REG+0x10)
642 #define AI_BITRATE_REG (AI_BASE_REG+0x14)
645 #define AI_CONTROL_DMA_ON 0x01
646 #define AI_CONTROL_DMA_OFF 0x00
649 #define AI_STATUS_FIFO_FULL 0x80000000
650 #define AI_STATUS_DMA_BUSY 0x40000000
655 #define AI_MAX_DAC_RATE 16384
656 #define AI_MIN_DAC_RATE 132
659 #define AI_MAX_BIT_RATE 16
660 #define AI_MIN_BIT_RATE 2
667 #define AI_NTSC_MAX_FREQ 368000
668 #define AI_NTSC_MIN_FREQ 3000
670 #define AI_PAL_MAX_FREQ 376000
671 #define AI_PAL_MIN_FREQ 3050
673 #define AI_MPAL_MAX_FREQ 368000
674 #define AI_MPAL_MIN_FREQ 3000
680 #define PI_BASE_REG 0x04600000
683 #define PI_DRAM_ADDR_REG (PI_BASE_REG+0x00)
686 #define PI_CART_ADDR_REG (PI_BASE_REG+0x04)
689 #define PI_RD_LEN_REG (PI_BASE_REG+0x08)
692 #define PI_WR_LEN_REG (PI_BASE_REG+0x0C)
698 #define PI_STATUS_REG (PI_BASE_REG+0x10)
701 #define PI_BSD_DOM1_LAT_REG (PI_BASE_REG+0x14)
704 #define PI_BSD_DOM1_PWD_REG (PI_BASE_REG+0x18)
707 #define PI_BSD_DOM1_PGS_REG (PI_BASE_REG+0x1C)
710 #define PI_BSD_DOM1_RLS_REG (PI_BASE_REG+0x20)
713 #define PI_BSD_DOM2_LAT_REG (PI_BASE_REG+0x24)
716 #define PI_BSD_DOM2_PWD_REG (PI_BASE_REG+0x28)
719 #define PI_BSD_DOM2_PGS_REG (PI_BASE_REG+0x2C)
722 #define PI_BSD_DOM2_RLS_REG (PI_BASE_REG+0x30)
724 #define PI_DOMAIN1_REG PI_BSD_DOM1_LAT_REG
725 #define PI_DOMAIN2_REG PI_BSD_DOM2_LAT_REG
727 #define PI_DOM_LAT_OFS 0x00
728 #define PI_DOM_PWD_OFS 0x04
729 #define PI_DOM_PGS_OFS 0x08
730 #define PI_DOM_RLS_OFS 0x0C
738 #define PI_STATUS_ERROR 0x04
739 #define PI_STATUS_IO_BUSY 0x02
740 #define PI_STATUS_DMA_BUSY 0x01
766 #define PI_STATUS_RESET 0x01
767 #define PI_SET_RESET PI_STATUS_RESET
769 #define PI_STATUS_CLR_INTR 0x02
770 #define PI_CLR_INTR PI_STATUS_CLR_INTR
772 #define PI_DMA_BUFFER_SIZE 128
774 #define PI_DOM1_ADDR1 0x06000000
775 #define PI_DOM1_ADDR2 0x10000000
776 #define PI_DOM1_ADDR3 0x1FD00000
777 #define PI_DOM2_ADDR1 0x05000000
778 #define PI_DOM2_ADDR2 0x08000000
784 #define RI_BASE_REG 0x04700000
787 #define RI_MODE_REG (RI_BASE_REG+0x00)
790 #define RI_CONFIG_REG (RI_BASE_REG+0x04)
793 #define RI_CURRENT_LOAD_REG (RI_BASE_REG+0x08)
796 #define RI_SELECT_REG (RI_BASE_REG+0x0C)
802 #define RI_REFRESH_REG (RI_BASE_REG+0x10)
803 #define RI_COUNT_REG RI_REFRESH_REG
806 #define RI_LATENCY_REG (RI_BASE_REG+0x14)
809 #define RI_RERROR_REG (RI_BASE_REG+0x18)
812 #define RI_WERROR_REG (RI_BASE_REG+0x1C)
818 #define SI_BASE_REG 0x04800000
821 #define SI_DRAM_ADDR_REG (SI_BASE_REG+0x00)
824 #define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG+0x04)
829 #define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG+0x10)
836 #define SI_STATUS_REG (SI_BASE_REG+0x18)
844 #define SI_STATUS_DMA_BUSY 0x0001
845 #define SI_STATUS_RD_BUSY 0x0002
846 #define SI_STATUS_DMA_ERROR 0x0008
847 #define SI_STATUS_INTERRUPT 0x1000
853 #define GIO_BASE_REG 0x18000000
856 #define GIO_GIO_INTR_REG (GIO_BASE_REG+0x000)
859 #define GIO_GIO_SYNC_REG (GIO_BASE_REG+0x400)
862 #define GIO_CART_INTR_REG (GIO_BASE_REG+0x800)
868 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
869 #define IO_READ(addr) (*(vu32 *)PHYS_TO_K1(addr))
870 #define IO_WRITE(addr,data) (*(vu32 *)PHYS_TO_K1(addr)=(u32)(data))
871 #define RCP_STAT_PRINT \
872 rmonPrintf("current=%x start=%x end=%x dpstat=%x spstat=%x\n", \
873 IO_READ(DPC_CURRENT_REG), \
874 IO_READ(DPC_START_REG), \
875 IO_READ(DPC_END_REG), \
876 IO_READ(DPC_STATUS_REG), \
877 IO_READ(SP_STATUS_REG))