Skip to content

Commit

Permalink
Redo DVD reset logic
Browse files Browse the repository at this point in the history
  • Loading branch information
Extrems committed Feb 21, 2025
1 parent 2812f9e commit 77572fa
Showing 1 changed file with 11 additions and 20 deletions.
31 changes: 11 additions & 20 deletions libogc/dvd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2394,21 +2394,22 @@ s32 DVD_LowGetCoverStatus(void)

void DVD_LowReset(u32 reset_mode)
{
u32 val;
u32 val1,val2;

_diReg[1] = DVD_CVR_MSK;
val = _piReg[9];
_piReg[9] = ((val&~0x0004)|0x0001);
val1 = val2 = (_piReg[9]|0x0001);
if(reset_mode==DVD_RESETHARD) val1 &= ~0x0004;
if(reset_mode==DVD_RESETSOFT) val2 &= ~0x0004;
else val2 |= 0x0004;
if(val1==val2) return;

_piReg[9] = val1;
udelay(12);

if(reset_mode==DVD_RESETHARD) val |= 0x0004;
val |= 0x0001;
_piReg[9] = val;
_piReg[9] = val2;

__dvd_resetoccured = 1;
__dvd_lastresetend = __SYS_GetSystemTime();
__dvd_drivestate |= DVD_DRIVERESET;
_diReg[1] = DVD_CVR_MSK;
}

dvdcallbacklow DVD_LowSetResetCoverCallback(dvdcallbacklow cb)
Expand Down Expand Up @@ -3445,8 +3446,7 @@ void DVD_Reset(u32 reset_mode)
#endif
__dvd_drivestate &= ~(DVD_INTEROPER|DVD_CHIPPRESENT|DVD_DRIVERESET);

if(reset_mode!=DVD_RESETNONE)
DVD_LowReset(reset_mode);
DVD_LowReset(reset_mode);

_diReg[0] = (DVD_DE_MSK|DVD_TC_MSK|DVD_BRK_MSK);
_diReg[1] = _diReg[1];
Expand Down Expand Up @@ -3525,7 +3525,6 @@ dvddrvinfo* DVD_GetDriveInfo(void)

void DVD_Init(void)
{
u32 i;
#ifdef _DVD_DEBUG
printf("DVD_Init()\n");
#endif
Expand All @@ -3539,15 +3538,6 @@ void DVD_Init(void)

SYS_CreateAlarm(&__dvd_timeoutalarm);
LWP_InitQueue(&__dvd_wait_queue);

for(i=0;i<9;i++) _diReg[i] = 0;

_piReg[9] |= 0x0005;
__dvd_resetoccured = 1;
__dvd_lastresetend = __SYS_GetSystemTime();

_diReg[0] = (DVD_DE_MSK|DVD_TC_MSK|DVD_BRK_MSK);
_diReg[1] = DVD_CVR_MSK;
}
}

Expand Down Expand Up @@ -3624,6 +3614,7 @@ static bool __gcode_Startup(DISC_INTERFACE *disc)
dvdcmdblk blk;

DVD_Init();
DVD_Reset(DVD_RESETNONE);

if(DVD_Inquiry(&blk, &__dvd_driveinfo) < 0)
return false;
Expand Down

0 comments on commit 77572fa

Please sign in to comment.