From: <at...@us...> - 2007-08-30 22:08:01
|
Revision: 502 http://cadcdev.svn.sourceforge.net/cadcdev/?rev=502&view=rev Author: atani Date: 2007-08-30 15:07:55 -0700 (Thu, 30 Aug 2007) Log Message: ----------- applying sector sizing patch from Quzar Modified Paths: -------------- kos/kernel/arch/dreamcast/hardware/cdrom.c kos/kernel/arch/dreamcast/include/dc/cdrom.h Modified: kos/kernel/arch/dreamcast/hardware/cdrom.c =================================================================== --- kos/kernel/arch/dreamcast/hardware/cdrom.c 2007-08-30 22:07:22 UTC (rev 501) +++ kos/kernel/arch/dreamcast/hardware/cdrom.c 2007-08-30 22:07:55 UTC (rev 502) @@ -61,10 +61,21 @@ /* Set disc access mode */ static int gdc_change_data_type(void *param) { MAKE_SYSCALL(return, param, 0, 10); } +/* Reset the GD-ROM */ +static void gdc_reset() { MAKE_SYSCALL(/**/, 0, 0, 9); } +/* Abort the current command */ +static void gdc_abort_cmd(int cmd) { MAKE_SYSCALL(/**/,cmd, 0, 8); } + /* The CD access mutex */ static mutex_t * mutex = NULL; +static int sector_size = 2048; /*default 2048, 2352 for raw data reading*/ +void set_sector_size (int size) { + sector_size = size; + cdrom_reinit(); +} + /* Command execution sequence */ int cdrom_exec_cmd(int cmd, void *param) { int status[4] = {0}; @@ -75,12 +86,16 @@ do { gdc_exec_server(); n = gdc_get_cmd_stat(f, status); - if (n == 1) + if (n == PROCESSING) thd_pass(); - } while (n == 1); + } while (n == PROCESSING); - if (n == 2) + if (n == COMPLETED) return ERR_OK; + else if (n == ABORTED) + return ERR_ABORTED; + else if (n == NO_ACTIVE) + return ERR_NO_ACTIVE; else { switch(status[0]) { case 2: return ERR_NO_DISC; @@ -163,7 +178,7 @@ params[0] = 0; /* 0 = set, 1 = get */ params[1] = 8192; /* ? */ params[2] = cdxa ? 2048 : 1024; /* CD-XA mode 1/2 */ - params[3] = 2048; /* sector size */ + params[3] = sector_size; /* sector size */ if (gdc_change_data_type(params) < 0) { rv = ERR_SYS; goto exit; } exit: Modified: kos/kernel/arch/dreamcast/include/dc/cdrom.h =================================================================== --- kos/kernel/arch/dreamcast/include/dc/cdrom.h 2007-08-30 22:07:22 UTC (rev 501) +++ kos/kernel/arch/dreamcast/include/dc/cdrom.h 2007-08-30 22:07:55 UTC (rev 502) @@ -36,7 +36,16 @@ #define ERR_NO_DISC 1 #define ERR_DISC_CHG 2 #define ERR_SYS 3 +#define ERR_ABORTED 4 +#define ERR_NO_ACTIVE 5 +/* Command Status responses */ +#define FAILED -1 +#define NO_ACTIVE 0 +#define PROCESSING 1 +#define COMPLETED 2 +#define ABORTED 3 + /* CDDA Read Modes */ #define CDDA_TRACKS 1 #define CDDA_SECTORS 2 @@ -71,6 +80,9 @@ #define TOC_CTRL(n) ( ((n) & 0xf0000000) >> 28 ) #define TOC_TRACK(n) ( ((n) & 0x00ff0000) >> 16 ) +/* Sets the sector size */ +void set_sector_size (int size); + /* Command execution sequence */ int cdrom_exec_cmd(int cmd, void *param); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |