62 for (
unsigned i = 0;
i < 100;
i++) {
67 if (
cause != 1)
break;
104 for (
unsigned i = 0;
i < 100;
i++) {
147 for (
unsigned i = 0;
i < 100;
i++) {
152 if (
cause != 1)
break;
191 for (
unsigned i = 0;
i < 100;
i++) {
228 while (updateTime() <= 500000);
325 while (updateTime() <= 500000);
394 ramsyscall_printf(
"Long read, no response read, ack then init, ready1 in %ius, ready2 in %ius, ack in %ius, complete in %ius\n",
time1,
time2,
time3,
time4);
424 while (updateTime() <= 500000);
523 while (updateTime() <= 500000);
790 ramsyscall_printf(
"Long read, nop series of %i then pause, ack in %ius, ready in %ius, ack in %ius, complete in %ius\n",
countToRead,
time1,
time2,
time3,
time4);
814 uint8_t runningCause;
815 uint8_t responses[32];
817 int32_t lastResponse = -1;
818 unsigned responseCount = 0;
826 uint8_t runningResponse[16];
828 uint8_t
r = runningResponse[0];
829 if (
r != lastResponse) {
831 if (responseCount < 32) {
832 responses[responseCount] =
r;
833 times[responseCount] = time;
837 }
while(runningCause == 3);
858 uint32_t dtime2 = times[1] - times[0];
859 uint32_t dtime3 = times[2] - times[1];
872 ramsyscall_printf(
"Reading without seeking first, different nop count = %i, response1 = 0x%02x, dtime1 = %ius, response2 = 0x%02x, dtime2 = %ius, response3 = 0x%02x, dtime3 = %ius, time1 = %ius, time2 = %ius, time3 = %ius, time4 = %ius\n", responseCount, responses[0], dtime1, responses[1], dtime2, responses[2], dtime3,
time1,
time2,
time3,
time4);
DMA_CTRL[DMA_CDROM] CHCR
Definition cdlreadn.c:185
uint32_t dicr
Definition cdlreadn.c:178
@ CDL_NOP
Definition cdrom.h:43
@ CDL_READN
Definition cdrom.h:48
@ CDL_PAUSE
Definition cdrom.h:51
@ CDL_INIT
Definition cdrom.h:52
#define CDROM_REG3_UC
Definition cdrom.h:39
#define CDROM_REG3
Definition cdrom.h:34
uint32_t r
Definition cpu.c:222
ramsyscall_printf("=== e01_kseg1_reads_no_fill ===\n")
#define DMA_CTRL
Definition dma.h:36
@ DMA_CDROM
Definition dma.h:42
int i
Definition gte-regio.c:297
#define DPCR
Definition hwregs.h:49
#define DICR
Definition hwregs.h:50
uint32_t time2
Definition reading.c:338
uint8_t ctrl6
Definition reading.c:356
cester_assert_uint_eq(3, cause1)
cester_assert_true(seekDone)
uint8_t response4[16]
Definition reading.c:364
uint8_t cause4
Definition reading.c:362
CDROM_REG0
Definition reading.c:134
uint32_t sectorData[100]
Definition reading.c:141
int setModeDone
Definition reading.c:120
uint8_t response2[16]
Definition reading.c:341
uint8_t responseSize2
Definition reading.c:342
unsigned countToRead
Definition reading.c:701
uint8_t responseSize1
Definition reading.c:332
CESTER_TEST(simpleReading, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0x80);if(!setModeDone) { cester_assert_true(setModeDone);return;} int seekDone=seekLTo(0x20, 2, 0);if(!seekDone) { cester_assert_true(seekDone);return;} CDROM_REG0=0;CDROM_REG1=CDL_READN;uint8_t response[16];waitCDRomIRQ();uint8_t cause1=ackCDRomCause();readResponse(response);uint32_t sectorData[100];uint8_t causes[100];__builtin_memset(sectorData, 0, sizeof(sectorData));__builtin_memset(causes, 0, sizeof(causes));for(unsigned i=0;i< 100;i++) { waitCDRomIRQ();uint8_t cause=ackCDRomCause();causes[i]=cause;readResponse(response);if(cause !=1) break;uint8_t sector[2048];CDROM_REG0=0;CDROM_REG3=0x80;uint32_t dicr=DICR;dicr &=0x00ffffff;dicr|=0x00880000;DICR=dicr;DPCR|=0x8000;DMA_CTRL[DMA_CDROM].MADR=(uintptr_t) sector;DMA_CTRL[DMA_CDROM].BCR=(2048 > > 2)|0x10000;DMA_CTRL[DMA_CDROM].CHCR=0x11000000;while((DMA_CTRL[DMA_CDROM].CHCR &0x01000000) !=0);dicr=DICR;dicr &=0x00ffffff;dicr|=0x88000000;DICR=dicr;CDROM_REG3=0;uint32_t *sector32=(uint32_t *) sector;sectorData[i]=sector32[0];} CDROM_REG0=0;CDROM_REG1=CDL_PAUSE;waitCDRomIRQ();uint8_t cause2=ackCDRomCause();readResponse(response);waitCDRomIRQ();uint8_t cause3=ackCDRomCause();readResponse(response);uint32_t start=20 *60 *75;for(unsigned i=0;i< 100;i++) { cester_assert_uint_eq(start+i, sectorData[i]);cester_assert_uint_eq(1, causes[i]);} cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(3, cause2);cester_assert_uint_eq(2, cause3);) CESTER_TEST(setLocDuringSimpleReading
uint8_t ctrl7
Definition reading.c:363
uint32_t time3
Definition reading.c:351
int setLocDone
Definition reading.c:127
uint8_t cause4b
Definition reading.c:368
uint8_t response[16]
Definition reading.c:136
unsigned gotInt1
Definition reading.c:702
uint32_t start
Definition reading.c:190
int resetDone
Definition reading.c:114
uint8_t ctrl4
Definition reading.c:343
uint8_t response1[16]
Definition reading.c:331
uint32_t time1
Definition reading.c:328
cester_assert_uint_ge(readyCount, 1)
uint8_t cause
Definition reading.c:707
test_instances
Definition reading.c:113
uint8_t cause2b
Definition reading.c:345
uint8_t ctrl5
Definition reading.c:353
uint32_t time4
Definition reading.c:361
uint8_t causes[100]
Definition reading.c:142
__builtin_memset(sectorData, 0, sizeof(sectorData))
uint8_t ctrl8
Definition reading.c:366
uint8_t ctrl2
Definition reading.c:333
uint8_t cause1
Definition reading.c:138
uint8_t cause2
Definition reading.c:184
uint8_t response3[16]
Definition reading.c:354
uint8_t cause1b
Definition reading.c:335
uint8_t ctrl1
Definition reading.c:330
uint8_t responseSize3
Definition reading.c:355
uint8_t cause3b
Definition reading.c:358
cester_assert_uint_le(readyCount, 2)
CDROM_REG1
Definition reading.c:135
cester_assert_uint_lt(countToRead, 80)
int seekDone
Definition reading.c:126
unsigned readyCount
Definition reading.c:528
uint8_t ctrl3
Definition reading.c:340
uint8_t cause3
Definition reading.c:187
uint8_t responseSize4
Definition reading.c:365
static int sector
Definition syscalls.h:468
void uint32_t(classId, spec)