fixed SOC device madness
This commit is contained in:
parent
9fac0a0ea1
commit
ea88f92464
@ -67,29 +67,38 @@ Result SOC_Initialize(u32 *context_addr, u32 context_size)
|
|||||||
if(dev >= 0)
|
if(dev >= 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* add the "soc" device */
|
|
||||||
dev = AddDevice(&soc_devoptab);
|
|
||||||
if(dev < 0)
|
|
||||||
return dev;
|
|
||||||
|
|
||||||
ret = svcCreateMemoryBlock(&socMemhandle, (u32)context_addr, context_size, 0, 3);
|
ret = svcCreateMemoryBlock(&socMemhandle, (u32)context_addr, context_size, 0, 3);
|
||||||
if(ret != 0) {
|
if(ret != 0) return ret;
|
||||||
RemoveDevice("soc");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = srvGetServiceHandle(&SOCU_handle, "soc:U");
|
ret = srvGetServiceHandle(&SOCU_handle, "soc:U");
|
||||||
if(ret != 0) {
|
if(ret != 0)
|
||||||
RemoveDevice("soc");
|
{
|
||||||
|
svcCloseHandle(socMemhandle);
|
||||||
|
socMemhandle = 0;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = socu_cmd1(socMemhandle, context_size);
|
ret = socu_cmd1(socMemhandle, context_size);
|
||||||
if(ret != 0) {
|
if(ret != 0)
|
||||||
RemoveDevice("soc");
|
{
|
||||||
|
svcCloseHandle(socMemhandle);
|
||||||
|
svcCloseHandle(SOCU_handle);
|
||||||
|
socMemhandle = 0;
|
||||||
|
SOCU_handle = 0;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* add the "soc" device */
|
||||||
|
dev = AddDevice(&soc_devoptab);
|
||||||
|
if(dev < 0)
|
||||||
|
{
|
||||||
|
svcCloseHandle(socMemhandle);
|
||||||
|
svcCloseHandle(SOCU_handle);
|
||||||
|
socMemhandle = 0;
|
||||||
|
SOCU_handle = 0;
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,22 +109,21 @@ Result SOC_Shutdown(void)
|
|||||||
int dev;
|
int dev;
|
||||||
|
|
||||||
svcCloseHandle(socMemhandle);
|
svcCloseHandle(socMemhandle);
|
||||||
|
socMemhandle = 0;
|
||||||
|
|
||||||
cmdbuf[0] = 0x00190000;
|
cmdbuf[0] = 0x00190000;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
|
||||||
errno = SYNC_ERROR;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
svcCloseHandle(SOCU_handle);
|
svcCloseHandle(SOCU_handle);
|
||||||
|
SOCU_handle = 0;
|
||||||
|
|
||||||
dev = FindDevice("soc:");
|
dev = FindDevice("soc:");
|
||||||
if(dev >= 0)
|
if(dev >= 0)
|
||||||
RemoveDevice("soc");
|
RemoveDevice("soc:");
|
||||||
|
|
||||||
return cmdbuf[1];
|
if(ret)return ret;
|
||||||
|
else return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user