Search
lxdream.org :: lxdream/test/testide.c
lxdream 0.9.1
released Jun 29
Download Now
filename test/testide.c
changeset 185:6755a04c447f
next248:f8022f2ef2a2
author nkeynes
date Sat Aug 05 00:18:21 2006 +0000 (16 years ago)
permissions -rw-r--r--
last change Add error lines to tests with incomplete polys
Split clip tests to separate data file
Add tests for cmd bit 23 ("use list size field")
view annotate diff log raw
     1 #include <assert.h>
     2 #include <ctype.h>
     3 #include "ide.h"
     4 void debug_dump_buffer(char *buf, int length)
     5 {
     6     int i,j;
     7     for( i=0; i<length; i+=16 ) {
     8 	printf( "%08X: ", i );
     9         for( j=0; j<16 && i+j < length; j+=4 ) {
    10 	    unsigned int val = *((volatile unsigned int *)(buf+i+j));
    11 	    printf( "%02X %02X %02X %02X  ", val&0xFF, (val>>8)&0xFF, (val>>16)&0xFF, (val>>24)&0xFF );
    12         }
    13 	for( j=0; j<16 && i+j < length; j++ ) {
    14 	    printf( "%c", isprint(buf[i+j]) ? buf[i+j] : '.' );
    15 	}
    16 	printf("\n");
    17     }
    18 }
    20 void debug_dump_int_buffer(volatile char *buf, int length)
    21 {
    22     int i,j;
    23     for( i=0; i<length; i+=16 ) {
    24 	printf( "%08X:", i );
    25         for( j=0; j<16 && i+j < length; j+=4 ) {
    26 	    printf( " %08X", *((volatile unsigned int *)(buf+i+j)) );
    27         }
    28 	printf( "\n" );
    29     }
    30 }
    33 char buf[2048*7 + 32];
    35 int test_ide_read_bootstrap()
    36 {
    37     struct gdrom_session session;
    38     int length;
    39     char *p;
    41     ide_init();
    43     if( ide_test_ready() != 0 ) {
    44 	printf( "ERROR - Test ready failed\n" );
    45 	return -1;
    46     }
    48     if( ide_spinup() != 0 ) {
    49 	printf( "ERROR - Spinup failed\n" );
    50 	return -1;
    51     }
    53     /*
    54     length = ide_unknown71( buf, sizeof(buf) );
    55     if( length == -1 ) {
    56 	printf( "ERROR - 0x71 failed\n" );
    57 	ide_print_sense_error();
    58 	return -1;
    59     }
    60     debug_dump_buffer(buf,length);
    61     */
    62     if( ide_get_session( 0, &session ) == -1 ) {
    63 	printf( "ERROR - Get session(0) failed\n" );
    64 	return -1;
    65     }
    66     if( ide_get_session( session.track, &session ) == -1 ) {
    67 	printf( "ERROR - Get session(%d) failed\n", session.track );
    68 	return -1;
    69     }
    71     p = (char *)((((unsigned int)buf) & 0xFFFFFFE0) + 0x20);
    72     printf( "--- DMA buffer: %08X\n",  p );
    73     length = ide_read_sector_dma( session.lba, 2, 0x28, p, 2048*2 );
    74     if( length != 2048*2 ) {
    75 	printf( "ERROR - Got incorrect read length, expected %d but was %d\n", 2048, length );
    76 	return -1;
    77     }
    78     debug_dump_buffer( p, 2048*2 );
    80     return 0;
    81 }
    84 int main( int argc, char *argv[] )
    85 {
    86     ide_dump_registers();
    87     ide_spinup();
    88     ide_read_something();
    89 //    test_ide_read_bootstrap();
    90 }
.