mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 20:42:44 +02:00
parent
bc1786b7b0
commit
ee34c620f7
@ -8,9 +8,94 @@
|
||||
#include "../types.h"
|
||||
|
||||
typedef enum {
|
||||
PcvModule_Cpu = 0,
|
||||
PcvModule_Gpu = 1,
|
||||
PcvModule_Emc = 56,
|
||||
PcvModule_CpuBus = 0,
|
||||
PcvModule_GPU = 1,
|
||||
PcvModule_I2S1 = 2,
|
||||
PcvModule_I2S2 = 3,
|
||||
PcvModule_I2S3 = 4,
|
||||
PcvModule_PWM = 5,
|
||||
PcvModule_I2C1 = 6,
|
||||
PcvModule_I2C2 = 7,
|
||||
PcvModule_I2C3 = 8,
|
||||
PcvModule_I2C4 = 9,
|
||||
PcvModule_I2C5 = 10,
|
||||
PcvModule_I2C6 = 11,
|
||||
PcvModule_SPI1 = 12,
|
||||
PcvModule_SPI2 = 13,
|
||||
PcvModule_SPI3 = 14,
|
||||
PcvModule_SPI4 = 15,
|
||||
PcvModule_DISP1 = 16,
|
||||
PcvModule_DISP2 = 17,
|
||||
PcvModule_ISP = 18,
|
||||
PcvModule_VI = 19,
|
||||
PcvModule_SDMMC1 = 20,
|
||||
PcvModule_SDMMC2 = 21,
|
||||
PcvModule_SDMMC3 = 22,
|
||||
PcvModule_SDMMC4 = 23,
|
||||
PcvModule_OWR = 24,
|
||||
PcvModule_CSITE = 25,
|
||||
PcvModule_TSEC = 26,
|
||||
PcvModule_MSELECT = 27,
|
||||
PcvModule_HDA2CODEC_2X = 28,
|
||||
PcvModule_ACTMON = 29,
|
||||
PcvModule_I2C_SLOW = 30,
|
||||
PcvModule_SOR1 = 31,
|
||||
PcvModule_SATA = 32,
|
||||
PcvModule_HDA = 33,
|
||||
PcvModule_XUSB_CORE_HOST = 34,
|
||||
PcvModule_XUSB_FALCON = 35,
|
||||
PcvModule_XUSB_FS = 36,
|
||||
PcvModule_XUSB_CORE_DEV = 37,
|
||||
PcvModule_XUSB_SS_HOSTDEV = 38,
|
||||
PcvModule_UARTA = 39,
|
||||
PcvModule_UARTB = 40,
|
||||
PcvModule_UARTC = 41,
|
||||
PcvModule_UARTD = 42,
|
||||
PcvModule_HOST1X = 43,
|
||||
PcvModule_ENTROPY = 44,
|
||||
PcvModule_SOC_THERM = 45,
|
||||
PcvModule_VIC = 46,
|
||||
PcvModule_NVENC = 47,
|
||||
PcvModule_NVJPG = 48,
|
||||
PcvModule_NVDEC = 49,
|
||||
PcvModule_QSPI = 50,
|
||||
PcvModule_VI_I2C = 51,
|
||||
PcvModule_TSECB = 52,
|
||||
PcvModule_APE = 53,
|
||||
PcvModule_ACLK = 54,
|
||||
PcvModule_UARTAPE = 55,
|
||||
PcvModule_EMC = 56,
|
||||
PcvModule_PLLE0_0 = 57,
|
||||
PcvModule_PLLE0_1 = 58,
|
||||
PcvModule_DSI = 59,
|
||||
PcvModule_MAUD = 60,
|
||||
PcvModule_DPAUX1 = 61,
|
||||
PcvModule_MIPI_CAL = 62,
|
||||
PcvModule_UART_FST_MIPI_CAL = 63,
|
||||
PcvModule_OSC = 64,
|
||||
PcvModule_SCLK = 65,
|
||||
PcvModule_SOR_SAFE = 66,
|
||||
PcvModule_XUSB_SS = 67,
|
||||
PcvModule_XUSB_HOST = 68,
|
||||
PcvModule_XUSB_DEV = 69,
|
||||
PcvModule_EXTPERIPH1 = 70,
|
||||
PcvModule_AHUB = 71,
|
||||
PcvModule_HDA2HDMICODEC = 72,
|
||||
PcvModule_PLLP5 = 73,
|
||||
PcvModule_USBD = 74,
|
||||
PcvModule_USB2 = 75,
|
||||
PcvModule_PCIE = 76,
|
||||
PcvModule_AFI = 77,
|
||||
PcvModule_PCIEXCLK = 78,
|
||||
PcvModule_PEX_USB_UPHY = 79,
|
||||
PcvModule_XUSB_PADCTL = 80,
|
||||
PcvModule_APBDMA = 81,
|
||||
PcvModule_USB2_TRK = 82,
|
||||
PcvModule_PLLE0_2 = 83,
|
||||
PcvModule_PLLE0_3 = 84,
|
||||
PcvModule_CEC = 85,
|
||||
PcvModule_EXTPERIPH2 = 86,
|
||||
PcvModule_Count // Not a real module, used to know how many modules there are.
|
||||
} PcvModule;
|
||||
|
||||
/// Module id returned by [8.0.0+] pcv services
|
||||
@ -34,10 +119,13 @@ typedef enum {
|
||||
PcvModuleId_SPI4 = 0x07000003,
|
||||
PcvModuleId_DISP1 = 0x40000011,
|
||||
PcvModuleId_DISP2 = 0x40000012,
|
||||
PcvModuleId_ISP = 0x40000013,
|
||||
PcvModuleId_VI = 0x40000014,
|
||||
PcvModuleId_SDMMC1 = 0x40000015,
|
||||
PcvModuleId_SDMMC2 = 0x40000016,
|
||||
PcvModuleId_SDMMC3 = 0x40000017,
|
||||
PcvModuleId_SDMMC4 = 0x40000018,
|
||||
PcvModuleId_OWR = 0x40000019,
|
||||
PcvModuleId_CSITE = 0x4000001A,
|
||||
PcvModuleId_TSEC = 0x4000001B,
|
||||
PcvModuleId_MSELECT = 0x4000001C,
|
||||
@ -45,6 +133,7 @@ typedef enum {
|
||||
PcvModuleId_ACTMON = 0x4000001E,
|
||||
PcvModuleId_I2C_SLOW = 0x4000001F,
|
||||
PcvModuleId_SOR1 = 0x40000020,
|
||||
PcvModuleId_SATA = 0x40000021,
|
||||
PcvModuleId_HDA = 0x40000022,
|
||||
PcvModuleId_XUSB_CORE_HOST = 0x40000023,
|
||||
PcvModuleId_XUSB_FALCON = 0x40000024,
|
||||
@ -63,6 +152,7 @@ typedef enum {
|
||||
PcvModuleId_NVJPG = 0x40000031,
|
||||
PcvModuleId_NVDEC = 0x40000032,
|
||||
PcvModuleId_QSPI = 0x40000033,
|
||||
PcvModuleId_VI_I2C = 0x40000034,
|
||||
PcvModuleId_TSECB = 0x40000035,
|
||||
PcvModuleId_APE = 0x40000036,
|
||||
PcvModuleId_ACLK = 0x40000037,
|
||||
@ -103,6 +193,8 @@ typedef enum {
|
||||
Result pcvInitialize(void);
|
||||
void pcvExit(void);
|
||||
|
||||
Result pcvGetModuleId(PcvModuleId *module_id, PcvModule module);
|
||||
|
||||
Result pcvGetClockRate(PcvModule module, u32 *out_hz);
|
||||
Result pcvSetClockRate(PcvModule module, u32 hz);
|
||||
Result pcvSetVoltageEnabled(bool state, u32 voltage);
|
||||
|
@ -30,6 +30,40 @@ void pcvExit(void) {
|
||||
}
|
||||
}
|
||||
|
||||
Result pcvGetModuleId(PcvModuleId *module_id, PcvModule module) {
|
||||
static const PcvModuleId s_moduleIdMap[PcvModule_Count] = {
|
||||
PcvModuleId_CpuBus, PcvModuleId_GPU, PcvModuleId_I2S1, PcvModuleId_I2S2,
|
||||
PcvModuleId_I2S3, PcvModuleId_PWM, PcvModuleId_I2C1, PcvModuleId_I2C2,
|
||||
PcvModuleId_I2C3, PcvModuleId_I2C4, PcvModuleId_I2C5, PcvModuleId_I2C6,
|
||||
PcvModuleId_SPI1, PcvModuleId_SPI2, PcvModuleId_SPI3, PcvModuleId_SPI4,
|
||||
PcvModuleId_DISP1, PcvModuleId_DISP2, PcvModuleId_ISP, PcvModuleId_VI,
|
||||
PcvModuleId_SDMMC1, PcvModuleId_SDMMC2, PcvModuleId_SDMMC3, PcvModuleId_SDMMC4,
|
||||
PcvModuleId_OWR, PcvModuleId_CSITE, PcvModuleId_TSEC, PcvModuleId_MSELECT,
|
||||
PcvModuleId_HDA2CODEC_2X, PcvModuleId_ACTMON, PcvModuleId_I2C_SLOW, PcvModuleId_SOR1,
|
||||
PcvModuleId_SATA, PcvModuleId_HDA, PcvModuleId_XUSB_CORE_HOST, PcvModuleId_XUSB_FALCON,
|
||||
PcvModuleId_XUSB_FS, PcvModuleId_XUSB_CORE_DEV, PcvModuleId_XUSB_SS_HOSTDEV, PcvModuleId_UARTA,
|
||||
PcvModuleId_UARTB, PcvModuleId_UARTC, PcvModuleId_UARTD, PcvModuleId_HOST1X,
|
||||
PcvModuleId_ENTROPY, PcvModuleId_SOC_THERM, PcvModuleId_VIC, PcvModuleId_NVENC,
|
||||
PcvModuleId_NVJPG, PcvModuleId_NVDEC, PcvModuleId_QSPI, PcvModuleId_VI_I2C,
|
||||
PcvModuleId_TSECB, PcvModuleId_APE, PcvModuleId_ACLK, PcvModuleId_UARTAPE,
|
||||
PcvModuleId_EMC, PcvModuleId_PLLE0_0, PcvModuleId_PLLE0_1, PcvModuleId_DSI,
|
||||
PcvModuleId_MAUD, PcvModuleId_DPAUX1, PcvModuleId_MIPI_CAL, PcvModuleId_UART_FST_MIPI_CAL,
|
||||
PcvModuleId_OSC, PcvModuleId_SCLK, PcvModuleId_SOR_SAFE, PcvModuleId_XUSB_SS,
|
||||
PcvModuleId_XUSB_HOST, PcvModuleId_XUSB_DEV, PcvModuleId_EXTPERIPH1, PcvModuleId_AHUB,
|
||||
PcvModuleId_HDA2HDMICODEC, PcvModuleId_PLLP5, PcvModuleId_USBD, PcvModuleId_USB2,
|
||||
PcvModuleId_PCIE, PcvModuleId_AFI, PcvModuleId_PCIEXCLK, PcvModuleId_PEX_USB_UPHY,
|
||||
PcvModuleId_XUSB_PADCTL, PcvModuleId_APBDMA, PcvModuleId_USB2_TRK, PcvModuleId_PLLE0_2,
|
||||
PcvModuleId_PLLE0_3, PcvModuleId_CEC, PcvModuleId_EXTPERIPH2,
|
||||
};
|
||||
|
||||
if (module >= PcvModule_Count) {
|
||||
return MAKERESULT(Module_Libnx, LibnxError_BadInput);
|
||||
}
|
||||
|
||||
*module_id = s_moduleIdMap[module];
|
||||
return 0;
|
||||
}
|
||||
|
||||
Result pcvSetClockRate(PcvModule module, u32 hz) {
|
||||
if(hosversionAtLeast(8,0,0)) {
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
Loading…
Reference in New Issue
Block a user