diff --git a/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_board_driver_api.cpp b/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_board_driver_api.cpp index 827a02c1c..e687f9bbc 100644 --- a/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_board_driver_api.cpp +++ b/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_board_driver_api.cpp @@ -104,25 +104,25 @@ namespace ams::pinmux::driver::board::nintendo::nx { #if defined(AMS_PINMUX_CONFIG_RIGHT_RAIL_AS_UART) UpdateSinglePinmuxPad({ .index = PinmuxPadIndex_Uart2Tx, - .option = 0, /* PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Output */ - .option_mask = (0x7|0x18|0x60), /* PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir */ + .option = (u32)PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Output, + .option_mask = (u32)PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir, }); UpdateSinglePinmuxPad({ .index = PinmuxPadIndex_Uart2Cts, - .option = 0x20, /* PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Input */ - .option_mask = (0x7|0x18|0x60), /* PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir */ + .option = (u32)PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Input, + .option_mask = (u32)PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir, }); #endif #if defined(AMS_PINMUX_CONFIG_LEFT_RAIL_AS_UART) UpdateSinglePinmuxPad({ .index = PinmuxPadIndex_Uart3Tx, - .option = 0, /* PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Output */ - .option_mask = (0x7|0x18|0x60), /* PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir */ + .option = (u32)PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Output, + .option_mask = (u32)PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir, }); UpdateSinglePinmuxPad({ .index = PinmuxPadIndex_Uart3Cts, - .option = 0x20, /* PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Input */ - .option_mask = (0x7|0x18|0x60), /* PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir */ + .option = (u32)PinmuxPadPm_Pm0 | PinmuxOpt_NoPupd | PinmuxOpt_Input, + .option_mask = (u32)PinmuxOptBitMask_Pm | PinmuxOptBitMask_Pupd | PinmuxOptBitMask_Dir, }); #endif } diff --git a/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.cpp b/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.cpp index c7c9de2c2..081b7aba7 100644 --- a/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.cpp +++ b/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.cpp @@ -24,170 +24,6 @@ namespace ams::pinmux::driver::board::nintendo::nx { uintptr_t g_apb_misc_virtual_address = dd::QueryIoMapping(0x70000000, 0x4000); - enum PinmuxPadMask : u32 { - PinmuxPadMask_Pm = 0x3, - PinmuxPadMask_Pupd = 0xC, - PinmuxPadMask_Tristate = 0x10, - PinmuxPadMask_Park = 0x20, - PinmuxPadMask_EInput = 0x40, - PinmuxPadMask_Lock = 0x80, - PinmuxPadMask_ELpdr = 0x100, - PinmuxPadMask_EHsm = 0x200, - PinmuxPadMask_EIoHv = 0x400, - PinmuxPadMask_EOd = 0x800, - PinmuxPadMask_ESchmt = 0x1000, - PinmuxPadMask_DrvType = 0x6000, - PinmuxPadMask_Preemp = 0x8000, - PinmuxPadMask_IoReset = 0x10000, - }; - - enum PinmuxPadBitOffset : u32 { - PinmuxPadBitOffset_Pm = 0x0, - PinmuxPadBitOffset_Pupd = 0x2, - PinmuxPadBitOffset_Tristate = 0x4, - PinmuxPadBitOffset_Park = 0x5, - PinmuxPadBitOffset_EInput = 0x6, - PinmuxPadBitOffset_Lock = 0x7, - PinmuxPadBitOffset_ELpdr = 0x8, - PinmuxPadBitOffset_EHsm = 0x9, - PinmuxPadBitOffset_EIoHv = 0xA, - PinmuxPadBitOffset_EOd = 0xB, - PinmuxPadBitOffset_ESchmt = 0xC, - PinmuxPadBitOffset_DrvType = 0xD, - PinmuxPadBitOffset_Preemp = 0xF, - PinmuxPadBitOffset_IoReset = 0x10, - }; - - enum PinmuxOptBitMask : u32 { - PinmuxOptBitMask_Pm = 0x7, - PinmuxOptBitMask_Pupd = 0x18, - PinmuxOptBitMask_Dir = 0x60, - PinmuxOptBitMask_Lock = 0x80, - PinmuxOptBitMask_IoReset = 0x100, - PinmuxOptBitMask_IoHv = 0x200, - PinmuxOptBitMask_Park = 0x400, - PinmuxOptBitMask_Lpdr = 0x800, - PinmuxOptBitMask_Hsm = 0x1000, - PinmuxOptBitMask_Schmt = 0x2000, - PinmuxOptBitMask_DrvType = 0xC000, - PinmuxOptBitMask_Preemp = 0x10000, - }; - - enum PinmuxOptBitOffset { - PinmuxOptBitOffset_Pm = 0x0, - PinmuxOptBitOffset_Pupd = 0x3, - PinmuxOptBitOffset_Dir = 0x5, - PinmuxOptBitOffset_Lock = 0x7, - PinmuxOptBitOffset_IoReset = 0x8, - PinmuxOptBitOffset_IoHv = 0x9, - PinmuxOptBitOffset_Park = 0xA, - PinmuxOptBitOffset_Lpdr = 0xB, - PinmuxOptBitOffset_Hsm = 0xC, - PinmuxOptBitOffset_Schmt = 0xD, - PinmuxOptBitOffset_DrvType = 0xE, - PinmuxOptBitOffset_Preemp = 0x10, - }; - - enum PinmuxDrivePadMask : u32{ - PinmuxDrivePadMask_DrvDn = 0x0001F000, - PinmuxDrivePadMask_DrvUp = 0x01F00000, - PinmuxDrivePadMask_CzDrvDn = 0x0007F000, - PinmuxDrivePadMask_CzDrvUp = 0x07F00000, - PinmuxDrivePadMask_SlwR = 0x30000000, - PinmuxDrivePadMask_SlwF = 0xC0000000, - }; - - enum PinmuxDrivePadBitOffset : u32 { - PinmuxDrivePadBitOffset_DrvDn = 12, - PinmuxDrivePadBitOffset_DrvUp = 20, - PinmuxDrivePadBitOffset_CzDrvDn = 12, - PinmuxDrivePadBitOffset_CzDrvUp = 20, - PinmuxDrivePadBitOffset_SlwR = 28, - PinmuxDrivePadBitOffset_SlwF = 30, - }; - - enum PinmuxDriveOptBitMask : u32 { - PinmuxDriveOptBitMask_DrvDn = 0x0001F000, - PinmuxDriveOptBitMask_DrvUp = 0x01F00000, - PinmuxDriveOptBitMask_CzDrvDn = 0x0007F000, - PinmuxDriveOptBitMask_CzDrvUp = 0x07F00000, - PinmuxDriveOptBitMask_SlwR = 0x30000000, - PinmuxDriveOptBitMask_SlwF = 0xC0000000, - }; - - enum PinmuxDriveOptBitOffset : u32 { - PinmuxDriveOptBitOffset_DrvDn = 12, - PinmuxDriveOptBitOffset_DrvUp = 20, - PinmuxDriveOptBitOffset_CzDrvDn = 12, - PinmuxDriveOptBitOffset_CzDrvUp = 20, - PinmuxDriveOptBitOffset_SlwR = 28, - PinmuxDriveOptBitOffset_SlwF = 30, - }; - - enum PinmuxOpt : u32 { - /* Pm */ - PinmuxOpt_Gpio = 0x4, - PinmuxOpt_Unused = 0x5, - - /* Pupd */ - PinmuxOpt_NoPupd = 0x0, - PinmuxOpt_PullDown = 0x8, - PinmuxOpt_PullUp = 0x10, - - /* Dir */ - PinmuxOpt_Output = 0x0, - PinmuxOpt_Input = 0x20, - PinmuxOpt_Bidirection = 0x40, - PinmuxOpt_OpenDrain = 0x60, - - /* Lock */ - PinmuxOpt_Unlock = 0x0, - PinmuxOpt_Lock = 0x80, - - /* IoReset */ - PinmuxOpt_DisableIoReset = 0x0, - PinmuxOpt_EnableIoReset = 0x100, - - /* IoHv */ - PinmuxOpt_NormalVoltage = 0x0, - PinmuxOpt_HighVoltage = 0x200, - - /* Park */ - PinmuxOpt_ResetOnLowPower = 0x0, - PinmuxOpt_ParkOnLowPower = 0x400, - - /* Lpdr */ - PinmuxOpt_DisableBaseDriver = 0x0, - PinmuxOpt_EnableBaseDriver = 0x800, - - /* Hsm */ - PinmuxOpt_DisableHighSpeedMode = 0x0, - PinmuxOpt_EnableHighSpeedMode = 0x1000, - - /* Schmt */ - PinmuxOpt_CmosMode = 0x0, - PinmuxOpt_SchmittTrigger = 0x2000, - - /* DrvType */ - PinmuxOpt_DrvType1X = 0x0, - PinmuxOpt_DrvType2X = 0x4000, - PinmuxOpt_DrvType3X = 0x8000, - PinmuxOpt_DrvType4X = 0xC000, - - /* Preemp */ - PinmuxOpt_DisablePreemp = 0x0, - PinmuxOpt_EnablePreemp = 0x10000, - }; - - enum PinmuxPadPm : u32 { - PinmuxPadPm_Default = 0xFFFFFFFF, - PinmuxPadPm_Pm0 = 0x0, - PinmuxPadPm_Pm1 = 0x1, - PinmuxPadPm_Pm2 = 0x2, - PinmuxPadPm_Pm3 = 0x3, - PinmuxPadPm_Safe = 0x4, - }; - struct PinmuxPadCharacter { u32 reg_offset; u32 reg_mask; diff --git a/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.hpp b/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.hpp index 6ec386b70..5e1087d13 100644 --- a/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.hpp +++ b/libraries/libstratosphere/source/pinmux/driver/board/nintendo/nx/pinmux_platform_pads.hpp @@ -30,6 +30,170 @@ namespace ams::pinmux::driver::board::nintendo::nx { u32 option_mask; }; + enum PinmuxPadMask : u32 { + PinmuxPadMask_Pm = 0x3, + PinmuxPadMask_Pupd = 0xC, + PinmuxPadMask_Tristate = 0x10, + PinmuxPadMask_Park = 0x20, + PinmuxPadMask_EInput = 0x40, + PinmuxPadMask_Lock = 0x80, + PinmuxPadMask_ELpdr = 0x100, + PinmuxPadMask_EHsm = 0x200, + PinmuxPadMask_EIoHv = 0x400, + PinmuxPadMask_EOd = 0x800, + PinmuxPadMask_ESchmt = 0x1000, + PinmuxPadMask_DrvType = 0x6000, + PinmuxPadMask_Preemp = 0x8000, + PinmuxPadMask_IoReset = 0x10000, + }; + + enum PinmuxPadBitOffset : u32 { + PinmuxPadBitOffset_Pm = 0x0, + PinmuxPadBitOffset_Pupd = 0x2, + PinmuxPadBitOffset_Tristate = 0x4, + PinmuxPadBitOffset_Park = 0x5, + PinmuxPadBitOffset_EInput = 0x6, + PinmuxPadBitOffset_Lock = 0x7, + PinmuxPadBitOffset_ELpdr = 0x8, + PinmuxPadBitOffset_EHsm = 0x9, + PinmuxPadBitOffset_EIoHv = 0xA, + PinmuxPadBitOffset_EOd = 0xB, + PinmuxPadBitOffset_ESchmt = 0xC, + PinmuxPadBitOffset_DrvType = 0xD, + PinmuxPadBitOffset_Preemp = 0xF, + PinmuxPadBitOffset_IoReset = 0x10, + }; + + enum PinmuxOptBitMask : u32 { + PinmuxOptBitMask_Pm = 0x7, + PinmuxOptBitMask_Pupd = 0x18, + PinmuxOptBitMask_Dir = 0x60, + PinmuxOptBitMask_Lock = 0x80, + PinmuxOptBitMask_IoReset = 0x100, + PinmuxOptBitMask_IoHv = 0x200, + PinmuxOptBitMask_Park = 0x400, + PinmuxOptBitMask_Lpdr = 0x800, + PinmuxOptBitMask_Hsm = 0x1000, + PinmuxOptBitMask_Schmt = 0x2000, + PinmuxOptBitMask_DrvType = 0xC000, + PinmuxOptBitMask_Preemp = 0x10000, + }; + + enum PinmuxOptBitOffset { + PinmuxOptBitOffset_Pm = 0x0, + PinmuxOptBitOffset_Pupd = 0x3, + PinmuxOptBitOffset_Dir = 0x5, + PinmuxOptBitOffset_Lock = 0x7, + PinmuxOptBitOffset_IoReset = 0x8, + PinmuxOptBitOffset_IoHv = 0x9, + PinmuxOptBitOffset_Park = 0xA, + PinmuxOptBitOffset_Lpdr = 0xB, + PinmuxOptBitOffset_Hsm = 0xC, + PinmuxOptBitOffset_Schmt = 0xD, + PinmuxOptBitOffset_DrvType = 0xE, + PinmuxOptBitOffset_Preemp = 0x10, + }; + + enum PinmuxDrivePadMask : u32 { + PinmuxDrivePadMask_DrvDn = 0x0001F000, + PinmuxDrivePadMask_DrvUp = 0x01F00000, + PinmuxDrivePadMask_CzDrvDn = 0x0007F000, + PinmuxDrivePadMask_CzDrvUp = 0x07F00000, + PinmuxDrivePadMask_SlwR = 0x30000000, + PinmuxDrivePadMask_SlwF = 0xC0000000, + }; + + enum PinmuxDrivePadBitOffset : u32 { + PinmuxDrivePadBitOffset_DrvDn = 12, + PinmuxDrivePadBitOffset_DrvUp = 20, + PinmuxDrivePadBitOffset_CzDrvDn = 12, + PinmuxDrivePadBitOffset_CzDrvUp = 20, + PinmuxDrivePadBitOffset_SlwR = 28, + PinmuxDrivePadBitOffset_SlwF = 30, + }; + + enum PinmuxDriveOptBitMask : u32 { + PinmuxDriveOptBitMask_DrvDn = 0x0001F000, + PinmuxDriveOptBitMask_DrvUp = 0x01F00000, + PinmuxDriveOptBitMask_CzDrvDn = 0x0007F000, + PinmuxDriveOptBitMask_CzDrvUp = 0x07F00000, + PinmuxDriveOptBitMask_SlwR = 0x30000000, + PinmuxDriveOptBitMask_SlwF = 0xC0000000, + }; + + enum PinmuxDriveOptBitOffset : u32 { + PinmuxDriveOptBitOffset_DrvDn = 12, + PinmuxDriveOptBitOffset_DrvUp = 20, + PinmuxDriveOptBitOffset_CzDrvDn = 12, + PinmuxDriveOptBitOffset_CzDrvUp = 20, + PinmuxDriveOptBitOffset_SlwR = 28, + PinmuxDriveOptBitOffset_SlwF = 30, + }; + + enum PinmuxOpt : u32 { + /* Pm */ + PinmuxOpt_Gpio = 0x4, + PinmuxOpt_Unused = 0x5, + + /* Pupd */ + PinmuxOpt_NoPupd = 0x0, + PinmuxOpt_PullDown = 0x8, + PinmuxOpt_PullUp = 0x10, + + /* Dir */ + PinmuxOpt_Output = 0x0, + PinmuxOpt_Input = 0x20, + PinmuxOpt_Bidirection = 0x40, + PinmuxOpt_OpenDrain = 0x60, + + /* Lock */ + PinmuxOpt_Unlock = 0x0, + PinmuxOpt_Lock = 0x80, + + /* IoReset */ + PinmuxOpt_DisableIoReset = 0x0, + PinmuxOpt_EnableIoReset = 0x100, + + /* IoHv */ + PinmuxOpt_NormalVoltage = 0x0, + PinmuxOpt_HighVoltage = 0x200, + + /* Park */ + PinmuxOpt_ResetOnLowPower = 0x0, + PinmuxOpt_ParkOnLowPower = 0x400, + + /* Lpdr */ + PinmuxOpt_DisableBaseDriver = 0x0, + PinmuxOpt_EnableBaseDriver = 0x800, + + /* Hsm */ + PinmuxOpt_DisableHighSpeedMode = 0x0, + PinmuxOpt_EnableHighSpeedMode = 0x1000, + + /* Schmt */ + PinmuxOpt_CmosMode = 0x0, + PinmuxOpt_SchmittTrigger = 0x2000, + + /* DrvType */ + PinmuxOpt_DrvType1X = 0x0, + PinmuxOpt_DrvType2X = 0x4000, + PinmuxOpt_DrvType3X = 0x8000, + PinmuxOpt_DrvType4X = 0xC000, + + /* Preemp */ + PinmuxOpt_DisablePreemp = 0x0, + PinmuxOpt_EnablePreemp = 0x10000, + }; + + enum PinmuxPadPm : u32 { + PinmuxPadPm_Default = 0xFFFFFFFF, + PinmuxPadPm_Pm0 = 0x0, + PinmuxPadPm_Pm1 = 0x1, + PinmuxPadPm_Pm2 = 0x2, + PinmuxPadPm_Pm3 = 0x3, + PinmuxPadPm_Safe = 0x4, + }; + void InitializePlatformPads(); void UpdateSinglePinmuxPad(const PinmuxPadConfig &config);