mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-05 14:31:24 +12:00
38 lines
886 B
C++
38 lines
886 B
C++
#include "stdafx.h"
|
|
#include "Emu/Memory/vm.h"
|
|
#include "Emu/System.h"
|
|
#include "Emu/IdManager.h"
|
|
|
|
#include "Emu/Cell/ErrorCodes.h"
|
|
|
|
#include "sys_gpio.h"
|
|
|
|
error_code sys_gpio_get(u64 device_id, vm::ptr<u64> value)
|
|
{
|
|
if (device_id != SYS_GPIO_LED_DEVICE_ID && device_id != SYS_GPIO_DIP_SWITCH_DEVICE_ID)
|
|
{
|
|
return CELL_ESRCH;
|
|
}
|
|
|
|
if (!vm::check_addr(value.addr(), sizeof(u64), vm::page_allocated | vm::page_writable))
|
|
{
|
|
return CELL_EFAULT;
|
|
}
|
|
|
|
// Retail consoles dont have LEDs or DIPs switches, hence always sets 0 in paramenter
|
|
*value = 0;
|
|
|
|
return CELL_OK;
|
|
}
|
|
|
|
error_code sys_gpio_set(u64 device_id, u64 mask, u64 value)
|
|
{
|
|
// Retail consoles dont have LEDs or DIPs switches, hence the syscall can't modify devices's value
|
|
switch (device_id)
|
|
{
|
|
case SYS_GPIO_LED_DEVICE_ID: return CELL_OK;
|
|
case SYS_GPIO_DIP_SWITCH_DEVICE_ID: return CELL_EINVAL;
|
|
}
|
|
|
|
return CELL_ESRCH;
|
|
}
|