[Kernel] - Implemented SystemManagementController Class

- Added handling (partial or dummy) for SMC actions:
 - QUERY_TEMP_SENSOR, QUERY_TRAY, QUERY_AV_PACK, QUERY_SMC_VERSION, QUERY_IR_ADDRESS, QUERY_TILT_SENSOR
 - SET_FAN_SPEED_CPU, SET_FAN_SPEED_GPU, SET_DVD_TRAY, SET_IR_ADDRESS, SET_POWER_LED, SET_LEDS

- Stub HalOpenCloseODDTray, XamLoaderGetMediaInfo, XamLoaderGetMediaInfoEx
- Partially Implement HalSendSMCMessage
- Implement XamLoaderGetDvdTrayState
- HalOpenCloseODDTray is used by dash and HalSendSMCMessage can be used by custom dashboards
This commit is contained in:
The-Little-Wolf
2025-04-01 05:34:54 -07:00
committed by Radosław Gliński
parent 4b24f128f6
commit 0771938db6
6 changed files with 453 additions and 8 deletions

View File

@@ -7,11 +7,9 @@
******************************************************************************
*/
#include "xenia/base/logging.h"
#include "xenia/kernel/kernel_state.h"
#include "xenia/kernel/smc.h"
#include "xenia/kernel/util/shim_utils.h"
#include "xenia/kernel/xboxkrnl/xboxkrnl_private.h"
#include "xenia/xbox.h"
DECLARE_int32(avpack);
@@ -36,6 +34,23 @@ DECLARE_XBOXKRNL_EXPORT2(HalReturnToFirmware, kNone, kStub, kImportant);
dword_result_t HalGetCurrentAVPack_entry() { return cvars::avpack; }
DECLARE_XBOXKRNL_EXPORT1(HalGetCurrentAVPack, kNone, kImplemented);
void HalSendSMCMessage_entry(pointer_t<X_SMC_DATA> smc_message,
pointer_t<X_SMC_DATA> smc_response) {
if (!smc_message) {
return;
}
kernel_state()->smc()->CallCommand(smc_message, smc_response);
}
DECLARE_XBOXKRNL_EXPORT3(HalSendSMCMessage, kNone, kStub, kImportant,
kHighFrequency);
void HalOpenCloseODDTray_entry(dword_t open_close) {
kernel_state()->smc()->SetTrayState(open_close ? X_DVD_TRAY_STATE::CLOSED
: X_DVD_TRAY_STATE::OPEN);
}
DECLARE_XBOXKRNL_EXPORT1(HalOpenCloseODDTray, kNone, kStub);
} // namespace xboxkrnl
} // namespace kernel
} // namespace xe