nkeynes@185: nkeynes@185: struct gdrom_session { nkeynes@185: int track; nkeynes@185: unsigned int lba; nkeynes@185: }; nkeynes@185: nkeynes@185: struct gdrom_track { nkeynes@185: int mode; nkeynes@185: unsigned int lba; nkeynes@185: }; nkeynes@185: nkeynes@185: struct gdrom_toc { nkeynes@185: struct gdrom_track track[99]; nkeynes@185: unsigned int first_lba; nkeynes@185: unsigned int last_lba; nkeynes@185: unsigned int leadout_lba; nkeynes@185: }; nkeynes@185: nkeynes@185: int ide_init(); nkeynes@185: nkeynes@185: int ide_test_ready(); nkeynes@185: nkeynes@185: int ide_sense_error( char *buf ); nkeynes@185: nkeynes@251: int ide_get_sense_code(); nkeynes@251: nkeynes@185: /** nkeynes@185: * Retrieve session information. If session == 0, returns the nkeynes@185: * end-of-disc information instead. nkeynes@185: */ nkeynes@185: int ide_get_session( int session, struct gdrom_session *session_data ); nkeynes@185: nkeynes@185: /** nkeynes@185: * Read 1 or more sectors in PIO mode nkeynes@185: */ nkeynes@185: int ide_read_sector_pio( unsigned int sector, unsigned int count, int mode, nkeynes@185: char *buf, int length ); nkeynes@185: int ide_read_sector_dma( unsigned int sector, unsigned int count, int mode, nkeynes@185: char *buf, int length );