pinmux: implement updated initial config api

This commit is contained in:
Michael Scire 2020-11-09 02:01:29 -08:00 committed by SciresM
parent 68f42a14c8
commit d9350d24a9
37 changed files with 2837 additions and 2117 deletions

View file

@ -0,0 +1,138 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stratosphere.hpp>
#include "pinmux_pad_index.hpp"
#include "pinmux_board_driver_api.hpp"
#include "pinmux_platform_pads.hpp"
namespace ams::pinmux::driver::board::nintendo_nx {
namespace {
constinit bool g_initialized = false;
#include "pinmux_initial_pad_config_icosa.inc"
#include "pinmux_initial_pad_config_hoag.inc"
#include "pinmux_initial_pad_config_iowa.inc"
#include "pinmux_initial_pad_config_calcio.inc"
#include "pinmux_initial_pad_config_five.inc"
#include "pinmux_initial_drive_pad_config.inc"
#include "pinmux_initial_drive_pad_config_hoag.inc"
}
bool IsInitialized() {
return g_initialized;
}
void Initialize() {
InitializePlatformPads();
g_initialized = true;
}
void Finalize() {
/* ... */
}
void SetInitialConfig() {
const PinmuxPadConfig *configs = nullptr;
size_t num_configs = 0;
bool is_mariko = false;
switch (spl::GetHardwareType()) {
case spl::HardwareType::Icosa:
configs = PinmuxPadConfigsIcosa;
num_configs = NumPinmuxPadConfigsIcosa;
is_mariko = false;
break;
case spl::HardwareType::Hoag:
configs = PinmuxPadConfigsHoag;
num_configs = NumPinmuxPadConfigsHoag;
is_mariko = true;
break;
case spl::HardwareType::Iowa:
configs = PinmuxPadConfigsIowa;
num_configs = NumPinmuxPadConfigsIowa;
is_mariko = true;
break;
case spl::HardwareType::Calcio:
configs = PinmuxPadConfigsCalcio;
num_configs = NumPinmuxPadConfigsCalcio;
is_mariko = true;
break;
case spl::HardwareType::_Five_:
configs = PinmuxPadConfigsFive;
num_configs = NumPinmuxPadConfigsFive;
is_mariko = true;
break;
AMS_UNREACHABLE_DEFAULT_CASE();
}
AMS_ABORT_UNLESS(configs != nullptr);
for (size_t i = 0; i < num_configs; ++i) {
UpdateSinglePinmuxPad(configs[i]);
}
if (is_mariko) {
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Clk, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Cmd, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat0, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat1, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat2, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat3, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat4, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat5, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat6, 0x2000, 0x2000 });
UpdateSinglePinmuxPad({ PinmuxPadIndex_Sdmmc2Dat7, 0x2000, 0x2000 });
}
}
void SetInitialDrivePadConfig() {
const PinmuxDrivePadConfig *configs = nullptr;
size_t num_configs = 0;
switch (spl::GetHardwareType()) {
case spl::HardwareType::Icosa:
configs = PinmuxDrivePadConfigs;
num_configs = NumPinmuxDrivePadConfigs;
break;
case spl::HardwareType::Hoag:
configs = PinmuxDrivePadConfigsHoag;
num_configs = NumPinmuxDrivePadConfigsHoag;
break;
case spl::HardwareType::Iowa:
configs = PinmuxDrivePadConfigs;
num_configs = NumPinmuxDrivePadConfigs;
break;
case spl::HardwareType::Calcio:
configs = PinmuxDrivePadConfigs;
num_configs = NumPinmuxDrivePadConfigs;
break;
case spl::HardwareType::_Five_:
configs = PinmuxDrivePadConfigs;
num_configs = NumPinmuxDrivePadConfigs;
break;
AMS_UNREACHABLE_DEFAULT_CASE();
}
AMS_ABORT_UNLESS(configs != nullptr);
for (size_t i = 0; i < num_configs; ++i) {
UpdateSinglePinmuxDrivePad(configs[i]);
}
}
}

View file

@ -0,0 +1,29 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <stratosphere.hpp>
namespace ams::pinmux::driver::board::nintendo_nx {
bool IsInitialized();
void Initialize();
void Finalize();
void SetInitialConfig();
void SetInitialDrivePadConfig();
}

View file

@ -0,0 +1,170 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_character_gen.py, do not edit manually. */
constexpr inline const PinmuxDrivePadCharacter PinmuxDrivePadCharacters[] = {
{ PinmuxDrivePadIndex_AlsProxInt, 0x01F1F000, "AlsProxInt" },
{ PinmuxDrivePadIndex_ApReady, 0x01F1F000, "ApReady" },
{ PinmuxDrivePadIndex_ApWakeBt, 0x01F1F000, "ApWakeBt" },
{ PinmuxDrivePadIndex_ApWakeNfc, 0x01F1F000, "ApWakeNfc" },
{ PinmuxDrivePadIndex_AudMclk, 0x01F1F000, "AudMclk" },
{ PinmuxDrivePadIndex_BattBcl, 0x01F1F000, "BattBcl" },
{ PinmuxDrivePadIndex_BtRst, 0x01F1F000, "BtRst" },
{ PinmuxDrivePadIndex_BtWakeAp, 0x01F1F000, "BtWakeAp" },
{ PinmuxDrivePadIndex_ButtonHome, 0x01F1F000, "ButtonHome" },
{ PinmuxDrivePadIndex_ButtonPowerOn, 0x01F1F000, "ButtonPowerOn" },
{ PinmuxDrivePadIndex_ButtonSlideSw, 0x01F1F000, "ButtonSlideSw" },
{ PinmuxDrivePadIndex_ButtonVolDown, 0x01F1F000, "ButtonVolDown" },
{ PinmuxDrivePadIndex_ButtonVolUp, 0x01F1F000, "ButtonVolUp" },
{ PinmuxDrivePadIndex_Cam1Mclk, 0x01F1F000, "Cam1Mclk" },
{ PinmuxDrivePadIndex_Cam1Pwdn, 0x01F1F000, "Cam1Pwdn" },
{ PinmuxDrivePadIndex_Cam1Strobe, 0x01F1F000, "Cam1Strobe" },
{ PinmuxDrivePadIndex_Cam2Mclk, 0x01F1F000, "Cam2Mclk" },
{ PinmuxDrivePadIndex_Cam2Pwdn, 0x01F1F000, "Cam2Pwdn" },
{ PinmuxDrivePadIndex_CamAfEn, 0x01F1F000, "CamAfEn" },
{ PinmuxDrivePadIndex_CamFlashEn, 0x01F1F000, "CamFlashEn" },
{ PinmuxDrivePadIndex_CamI2cScl, 0x01F1F000, "CamI2cScl" },
{ PinmuxDrivePadIndex_CamI2cSda, 0x01F1F000, "CamI2cSda" },
{ PinmuxDrivePadIndex_CamRst, 0x01F1F000, "CamRst" },
{ PinmuxDrivePadIndex_Clk32kIn, 0x01F1F000, "Clk32kIn" },
{ PinmuxDrivePadIndex_Clk32kOut, 0x01F1F000, "Clk32kOut" },
{ PinmuxDrivePadIndex_ClkReq, 0x01F1F000, "ClkReq" },
{ PinmuxDrivePadIndex_CorePwrReq, 0x01F1F000, "CorePwrReq" },
{ PinmuxDrivePadIndex_CpuPwrReq, 0x01F1F000, "CpuPwrReq" },
{ PinmuxDrivePadIndex_Dap1Din, 0xF0000000, "Dap1Din" },
{ PinmuxDrivePadIndex_Dap1Dout, 0xF0000000, "Dap1Dout" },
{ PinmuxDrivePadIndex_Dap1Fs, 0xF0000000, "Dap1Fs" },
{ PinmuxDrivePadIndex_Dap1Sclk, 0xF0000000, "Dap1Sclk" },
{ PinmuxDrivePadIndex_Dap2Din, 0xF0000000, "Dap2Din" },
{ PinmuxDrivePadIndex_Dap2Dout, 0xF0000000, "Dap2Dout" },
{ PinmuxDrivePadIndex_Dap2Fs, 0xF0000000, "Dap2Fs" },
{ PinmuxDrivePadIndex_Dap2Sclk, 0xF0000000, "Dap2Sclk" },
{ PinmuxDrivePadIndex_Dap4Din, 0x01F1F000, "Dap4Din" },
{ PinmuxDrivePadIndex_Dap4Dout, 0x01F1F000, "Dap4Dout" },
{ PinmuxDrivePadIndex_Dap4Fs, 0x01F1F000, "Dap4Fs" },
{ PinmuxDrivePadIndex_Dap4Sclk, 0x01F1F000, "Dap4Sclk" },
{ PinmuxDrivePadIndex_Dmic1Clk, 0x01F1F000, "Dmic1Clk" },
{ PinmuxDrivePadIndex_Dmic1Dat, 0x01F1F000, "Dmic1Dat" },
{ PinmuxDrivePadIndex_Dmic2Clk, 0x01F1F000, "Dmic2Clk" },
{ PinmuxDrivePadIndex_Dmic2Dat, 0x01F1F000, "Dmic2Dat" },
{ PinmuxDrivePadIndex_Dmic3Clk, 0x01F1F000, "Dmic3Clk" },
{ PinmuxDrivePadIndex_Dmic3Dat, 0x01F1F000, "Dmic3Dat" },
{ PinmuxDrivePadIndex_DpHpd, 0x01F1F000, "DpHpd" },
{ PinmuxDrivePadIndex_DvfsClk, 0x01F1F000, "DvfsClk" },
{ PinmuxDrivePadIndex_DvfsPwm, 0x01F1F000, "DvfsPwm" },
{ PinmuxDrivePadIndex_Gen1I2cScl, 0x01F1F000, "Gen1I2cScl" },
{ PinmuxDrivePadIndex_Gen1I2cSda, 0x01F1F000, "Gen1I2cSda" },
{ PinmuxDrivePadIndex_Gen2I2cScl, 0x01F1F000, "Gen2I2cScl" },
{ PinmuxDrivePadIndex_Gen2I2cSda, 0x01F1F000, "Gen2I2cSda" },
{ PinmuxDrivePadIndex_Gen3I2cScl, 0x01F1F000, "Gen3I2cScl" },
{ PinmuxDrivePadIndex_Gen3I2cSda, 0x01F1F000, "Gen3I2cSda" },
{ PinmuxDrivePadIndex_GpioPa6, 0x01F1F000, "GpioPa6" },
{ PinmuxDrivePadIndex_GpioPcc7, 0x01F1F000, "GpioPcc7" },
{ PinmuxDrivePadIndex_GpioPe6, 0x01F1F000, "GpioPe6" },
{ PinmuxDrivePadIndex_GpioPe7, 0x01F1F000, "GpioPe7" },
{ PinmuxDrivePadIndex_GpioPh6, 0x01F1F000, "GpioPh6" },
{ PinmuxDrivePadIndex_GpioPk0, 0xF0000000, "GpioPk0" },
{ PinmuxDrivePadIndex_GpioPk1, 0xF0000000, "GpioPk1" },
{ PinmuxDrivePadIndex_GpioPk2, 0xF0000000, "GpioPk2" },
{ PinmuxDrivePadIndex_GpioPk3, 0xF0000000, "GpioPk3" },
{ PinmuxDrivePadIndex_GpioPk4, 0xF0000000, "GpioPk4" },
{ PinmuxDrivePadIndex_GpioPk5, 0xF0000000, "GpioPk5" },
{ PinmuxDrivePadIndex_GpioPk6, 0xF0000000, "GpioPk6" },
{ PinmuxDrivePadIndex_GpioPk7, 0xF0000000, "GpioPk7" },
{ PinmuxDrivePadIndex_GpioPl0, 0xF0000000, "GpioPl0" },
{ PinmuxDrivePadIndex_GpioPl1, 0xF0000000, "GpioPl1" },
{ PinmuxDrivePadIndex_GpioPz0, 0x07F7F000, "GpioPz0" },
{ PinmuxDrivePadIndex_GpioPz1, 0x07F7F000, "GpioPz1" },
{ PinmuxDrivePadIndex_GpioPz2, 0x07F7F000, "GpioPz2" },
{ PinmuxDrivePadIndex_GpioPz3, 0x07F7F000, "GpioPz3" },
{ PinmuxDrivePadIndex_GpioPz4, 0x07F7F000, "GpioPz4" },
{ PinmuxDrivePadIndex_GpioPz5, 0x07F7F000, "GpioPz5" },
{ PinmuxDrivePadIndex_GpioX1Aud, 0x01F1F000, "GpioX1Aud" },
{ PinmuxDrivePadIndex_GpioX3Aud, 0x01F1F000, "GpioX3Aud" },
{ PinmuxDrivePadIndex_GpsEn, 0x01F1F000, "GpsEn" },
{ PinmuxDrivePadIndex_GpsRst, 0x01F1F000, "GpsRst" },
{ PinmuxDrivePadIndex_HdmiCec, 0x01F1F000, "HdmiCec" },
{ PinmuxDrivePadIndex_HdmiIntDpHpd, 0x01F1F000, "HdmiIntDpHpd" },
{ PinmuxDrivePadIndex_JtagRtck, 0x01F1F000, "JtagRtck" },
{ PinmuxDrivePadIndex_LcdBlEn, 0x01F1F000, "LcdBlEn" },
{ PinmuxDrivePadIndex_LcdBlPwm, 0x01F1F000, "LcdBlPwm" },
{ PinmuxDrivePadIndex_LcdGpio1, 0x01F1F000, "LcdGpio1" },
{ PinmuxDrivePadIndex_LcdGpio2, 0x01F1F000, "LcdGpio2" },
{ PinmuxDrivePadIndex_LcdRst, 0x01F1F000, "LcdRst" },
{ PinmuxDrivePadIndex_LcdTe, 0x01F1F000, "LcdTe" },
{ PinmuxDrivePadIndex_ModemWakeAp, 0x01F1F000, "ModemWakeAp" },
{ PinmuxDrivePadIndex_MotionInt, 0x01F1F000, "MotionInt" },
{ PinmuxDrivePadIndex_NfcEn, 0x01F1F000, "NfcEn" },
{ PinmuxDrivePadIndex_NfcInt, 0x01F1F000, "NfcInt" },
{ PinmuxDrivePadIndex_PexL0ClkReqN, 0x01F1F000, "PexL0ClkReqN" },
{ PinmuxDrivePadIndex_PexL0RstN, 0x01F1F000, "PexL0RstN" },
{ PinmuxDrivePadIndex_PexL1ClkreqN, 0x01F1F000, "PexL1ClkreqN" },
{ PinmuxDrivePadIndex_PexL1RstN, 0x01F1F000, "PexL1RstN" },
{ PinmuxDrivePadIndex_PexWakeN, 0x01F1F000, "PexWakeN" },
{ PinmuxDrivePadIndex_PwrI2cScl, 0x01F1F000, "PwrI2cScl" },
{ PinmuxDrivePadIndex_PwrI2cSda, 0x01F1F000, "PwrI2cSda" },
{ PinmuxDrivePadIndex_PwrIntN, 0x01F1F000, "PwrIntN" },
{ PinmuxDrivePadIndex_QspiComp, 0x07F7F000, "QspiComp" },
{ PinmuxDrivePadIndex_QspiSck, 0xF0000000, "QspiSck" },
{ PinmuxDrivePadIndex_SataLedActive, 0x01F1F000, "SataLedActive" },
{ PinmuxDrivePadIndex_Sdmmc1Pad, 0xF7F7F000, "Sdmmc1Pad" },
{ PinmuxDrivePadIndex_Sdmmc3Pad, 0xF7F7F000, "Sdmmc3Pad" },
{ PinmuxDrivePadIndex_Shutdown, 0x01F1F000, "Shutdown" },
{ PinmuxDrivePadIndex_SpdifIn, 0x01F1F000, "SpdifIn" },
{ PinmuxDrivePadIndex_SpdifOut, 0x01F1F000, "SpdifOut" },
{ PinmuxDrivePadIndex_Spi1Cs0, 0xF0000000, "Spi1Cs0" },
{ PinmuxDrivePadIndex_Spi1Cs1, 0xF0000000, "Spi1Cs1" },
{ PinmuxDrivePadIndex_Spi1Miso, 0xF0000000, "Spi1Miso" },
{ PinmuxDrivePadIndex_Spi1Mosi, 0xF0000000, "Spi1Mosi" },
{ PinmuxDrivePadIndex_Spi1Sck, 0xF0000000, "Spi1Sck" },
{ PinmuxDrivePadIndex_Spi2Cs0, 0xF0000000, "Spi2Cs0" },
{ PinmuxDrivePadIndex_Spi2Cs1, 0xF0000000, "Spi2Cs1" },
{ PinmuxDrivePadIndex_Spi2Miso, 0xF0000000, "Spi2Miso" },
{ PinmuxDrivePadIndex_Spi2Mosi, 0xF0000000, "Spi2Mosi" },
{ PinmuxDrivePadIndex_Spi2Sck, 0xF0000000, "Spi2Sck" },
{ PinmuxDrivePadIndex_Spi4Cs0, 0xF0000000, "Spi4Cs0" },
{ PinmuxDrivePadIndex_Spi4Miso, 0xF0000000, "Spi4Miso" },
{ PinmuxDrivePadIndex_Spi4Mosi, 0xF0000000, "Spi4Mosi" },
{ PinmuxDrivePadIndex_Spi4Sck, 0xF0000000, "Spi4Sck" },
{ PinmuxDrivePadIndex_TempAlert, 0x01F1F000, "TempAlert" },
{ PinmuxDrivePadIndex_TouchClk, 0x01F1F000, "TouchClk" },
{ PinmuxDrivePadIndex_TouchInt, 0x01F1F000, "TouchInt" },
{ PinmuxDrivePadIndex_TouchRst, 0x01F1F000, "TouchRst" },
{ PinmuxDrivePadIndex_Uart1Cts, 0x01F1F000, "Uart1Cts" },
{ PinmuxDrivePadIndex_Uart1Rts, 0x01F1F000, "Uart1Rts" },
{ PinmuxDrivePadIndex_Uart1Rx, 0x01F1F000, "Uart1Rx" },
{ PinmuxDrivePadIndex_Uart1Tx, 0x01F1F000, "Uart1Tx" },
{ PinmuxDrivePadIndex_Uart2Cts, 0x01F1F000, "Uart2Cts" },
{ PinmuxDrivePadIndex_Uart2Rts, 0x01F1F000, "Uart2Rts" },
{ PinmuxDrivePadIndex_Uart2Rx, 0x01F1F000, "Uart2Rx" },
{ PinmuxDrivePadIndex_Uart2Tx, 0x01F1F000, "Uart2Tx" },
{ PinmuxDrivePadIndex_Uart3Cts, 0x01F1F000, "Uart3Cts" },
{ PinmuxDrivePadIndex_Uart3Rts, 0x01F1F000, "Uart3Rts" },
{ PinmuxDrivePadIndex_Uart3Rx, 0x01F1F000, "Uart3Rx" },
{ PinmuxDrivePadIndex_Uart3Tx, 0x01F1F000, "Uart3Tx" },
{ PinmuxDrivePadIndex_Uart4Cts, 0x01F1F000, "Uart4Cts" },
{ PinmuxDrivePadIndex_Uart4Rts, 0x01F1F000, "Uart4Rts" },
{ PinmuxDrivePadIndex_Uart4Rx, 0x01F1F000, "Uart4Rx" },
{ PinmuxDrivePadIndex_Uart4Tx, 0x01F1F000, "Uart4Tx" },
{ PinmuxDrivePadIndex_UsbVbusEn0, 0x01F1F000, "UsbVbusEn0" },
{ PinmuxDrivePadIndex_UsbVbusEn1, 0x01F1F000, "UsbVbusEn1" },
{ PinmuxDrivePadIndex_WifiEn, 0x01F1F000, "WifiEn" },
{ PinmuxDrivePadIndex_WifiRst, 0x01F1F000, "WifiRst" },
{ PinmuxDrivePadIndex_WifiWakeAp, 0x01F1F000, "WifiWakeAp" },
};
constexpr inline size_t NumPinmuxDrivePadCharacters = util::size(PinmuxDrivePadCharacters);

View file

@ -0,0 +1,69 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by drive_pad_initial_config.py, do not edit manually. */
constexpr inline const PinmuxDrivePadConfig PinmuxDrivePadConfigs[] = {
{ PinmuxDrivePadIndex_AudMclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Cam1Mclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Cam2Mclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamAfEn, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamFlashEn, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamI2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamI2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Din, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Dout, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Fs, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Sclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic1Clk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic1Dat, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic2Clk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic2Dat, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic3Clk, 0x01F1F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic3Dat, 0x01F1F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_DvfsClk, 0x01F1F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_DvfsPwm, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen1I2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen1I2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen2I2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen2I2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen3I2cScl, 0x00007000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen3I2cSda, 0x00007000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioPz0, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioPz1, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioX1Aud, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioX3Aud, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_PwrI2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_PwrI2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_TouchClk, 0x01414000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Cts, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Rts, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Rx, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Tx, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Spi1Cs0, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Cs1, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Miso, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Mosi, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Sck, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Cs0, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Cs1, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Miso, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Mosi, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Sck, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Sdmmc3Pad, 0x51212000, 0xF1F1F000 },
};
constexpr inline const size_t NumPinmuxDrivePadConfigs = util::size(PinmuxDrivePadConfigs);

View file

@ -0,0 +1,69 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by drive_pad_initial_config.py, do not edit manually. */
constexpr inline const PinmuxDrivePadConfig PinmuxDrivePadConfigsHoag[] = {
{ PinmuxDrivePadIndex_AudMclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Cam1Mclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Cam2Mclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamAfEn, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamFlashEn, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamI2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_CamI2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Din, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Dout, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Fs, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dap4Sclk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic1Clk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic1Dat, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic2Clk, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic2Dat, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic3Clk, 0x01F1F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Dmic3Dat, 0x01F1F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_DvfsClk, 0x01F1F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_DvfsPwm, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen1I2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen1I2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen2I2cScl, 0x00004000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen2I2cSda, 0x00004000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen3I2cScl, 0x00007000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Gen3I2cSda, 0x00007000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioPz0, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioPz1, 0x01010000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioX1Aud, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_GpioX3Aud, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_PwrI2cScl, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_PwrI2cSda, 0x0001F000, 0x01F1F000 },
{ PinmuxDrivePadIndex_TouchClk, 0x01414000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Cts, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Rts, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Rx, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Uart3Tx, 0x01404000, 0x01F1F000 },
{ PinmuxDrivePadIndex_Spi1Cs0, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Cs1, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Miso, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Mosi, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi1Sck, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Cs0, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Cs1, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Miso, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Mosi, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Spi2Sck, 0x00000000, 0xF0000000 },
{ PinmuxDrivePadIndex_Sdmmc3Pad, 0x51212000, 0xF1F1F000 },
};
constexpr inline const size_t NumPinmuxDrivePadConfigsHoag = util::size(PinmuxDrivePadConfigsHoag);

View file

@ -0,0 +1,196 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_initial_config.py, do not edit manually. */
constexpr inline const PinmuxPadConfig PinmuxPadConfigsCalcio[] = {
{ PinmuxPadIndex_PexL0ClkreqN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_PexL0RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexL1ClkreqN, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL1RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexWakeN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_Sdmmc1Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Cmd, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Shutdown, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_LcdGpio2, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_PwrI2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PwrI2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Clk32kIn, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Clk32kOut, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_CorePwrReq, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_PwrIntN, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Gen1I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen1I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Uart1Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Rx, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart1Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_JtagRtck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart4Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Rx, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Uart4Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_HdmiCec, 0x00000240, 0x0000027F },
{ PinmuxPadIndex_Dmic1Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic1Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic2Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic2Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic3Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPe6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_Gen3I2cSda, 0x00000204, 0x0000027F },
{ PinmuxPadIndex_Cam1Pwdn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_TempAlert, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonPowerOn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonVolUp, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonVolDown, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonHome, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ApReady, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPz1, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz3, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk0, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk1, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk2, 0x00000044, 0x0000007F },
{ PinmuxPadIndex_GpioPk4, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_Spi1Mosi, 0x0000000C, 0x0000007F },
{ PinmuxPadIndex_Spi1Miso, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_Spi1Sck, 0x0000000C, 0x0000007F },
{ PinmuxPadIndex_WifiEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiWakeAp, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_ApWakeBt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtWakeAp, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPh6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ApWakeNfc, 0x00000004, 0x0000007F },
{ PinmuxPadIndex_DpHpd0, 0x00000004, 0x0000007F },
{ PinmuxPadIndex_HdmiIntDpHpd, 0x00000024, 0x0000027F },
{ PinmuxPadIndex_AudMclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DvfsPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DvfsClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioX1Aud, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioX3Aud, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap1Din, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap1Dout, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap1Fs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap1Sclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic3Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPe7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Gen3I2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamI2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamI2cSda, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Mclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam2Mclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamAfEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamFlashEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam2Pwdn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Strobe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_SataLedActive, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPa6, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Clkb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Cmd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat4, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat5, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat6, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dat7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqsb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Cmd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_AlsProxInt, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_MotionInt, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_TouchRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_TouchClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_TouchInt, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ModemWakeAp, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ButtonSlideSw, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdTe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdBlPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdBlEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdGpio1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz4, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz5, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ClkReq, 0x00000000, 0x00000018 },
{ PinmuxPadIndex_CpuPwrReq, 0x00000000, 0x00000018 },
{ PinmuxPadIndex_Dap4Din, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Dout, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Fs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Sclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Gen2I2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Gen2I2cSda, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Tx, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Rx, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Rts, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Cts, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPk3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPk5, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPk7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPl0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPl1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi4Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi4Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi4Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi4Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart3Tx, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart3Rx, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart3Rts, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart3Cts, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_NfcEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_NfcInt, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiSck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiCsN, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPcc7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_SpdifOut, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_SpdifIn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn1, 0x00000005, 0x00000007 },
};
constexpr inline const size_t NumPinmuxPadConfigsCalcio = util::size(PinmuxPadConfigsCalcio);

View file

@ -0,0 +1,196 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_initial_config.py, do not edit manually. */
constexpr inline const PinmuxPadConfig PinmuxPadConfigsFive[] = {
{ PinmuxPadIndex_AudMclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap1Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Gen3I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen3I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL0ClkreqN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_PexL0RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexL1ClkreqN, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL1RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexWakeN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_Sdmmc1Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Cmd, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Cmd, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat4, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat5, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat6, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat7, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Shutdown, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_LcdGpio2, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_PwrI2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PwrI2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Clk32kIn, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Clk32kOut, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_CorePwrReq, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_PwrIntN, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Gen1I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen1I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Uart2Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart2Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart2Cts, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart1Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Rx, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart1Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_JtagRtck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_GpioPl1, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Spi4Mosi, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Spi4Miso, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Spi4Sck, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Spi4Cs0, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart3Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart3Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart3Cts, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart4Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Rx, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Uart4Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_HdmiIntDpHpd, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_GpioX1Aud, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioX3Aud, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Dmic1Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic1Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic2Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic2Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic3Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPe6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamI2cSda, 0x00000034, 0x0000027F },
{ PinmuxPadIndex_Cam2Mclk, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamFlashEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Cam1Pwdn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_SataLedActive, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_AlsProxInt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_TempAlert, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_MotionInt, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_TouchRst, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_TouchInt, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonPowerOn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonVolUp, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonVolDown, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonSlideSw, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonHome, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_LcdRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_ApReady, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPz0, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPz1, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz3, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz4, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Sclk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Uart2Tx, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPk0, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk1, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk2, 0x00000044, 0x0000007F },
{ PinmuxPadIndex_GpioPk3, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk4, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk5, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_Uart3Tx, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_WifiEn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_WifiRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiWakeAp, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_ApWakeBt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtWakeAp, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPh6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ApWakeNfc, 0x00000004, 0x0000007F },
{ PinmuxPadIndex_SpdifIn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_DvfsPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DvfsClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic3Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPe7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamI2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Mclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamAfEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam2Pwdn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Strobe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPa6, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Clkb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqsb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Cmd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_TouchClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ModemWakeAp, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdTe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdBlPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdBlEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdGpio1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz5, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ClkReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_CpuPwrReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_Dap4Din, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Dout, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Fs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPk7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPl0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_NfcEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_NfcInt, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiSck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiCsN, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPcc7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_SpdifOut, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DpHpd0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_HdmiCec, 0x00000005, 0x00000007 },
};
constexpr inline const size_t NumPinmuxPadConfigsFive = util::size(PinmuxPadConfigsFive);

View file

@ -0,0 +1,196 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_initial_config.py, do not edit manually. */
constexpr inline const PinmuxPadConfig PinmuxPadConfigsHoag[] = {
{ PinmuxPadIndex_AudMclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap1Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Gen3I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen3I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL0ClkreqN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_PexL0RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexL1ClkreqN, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL1RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexWakeN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_Sdmmc1Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Cmd, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Cmd, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat4, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat5, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat6, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat7, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_TouchClk, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Shutdown, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_LcdBlPwm, 0x00000001, 0x00000067 },
{ PinmuxPadIndex_LcdGpio2, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_PwrI2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PwrI2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Clk32kIn, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Clk32kOut, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_CorePwrReq, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_PwrIntN, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Gen1I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen1I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Uart1Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Rx, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart1Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_JtagRtck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_GpioPl1, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart3Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart3Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart3Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart3Cts, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart4Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Rx, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Uart4Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_GpioX1Aud, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioX3Aud, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Dmic1Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic1Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic2Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic2Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic3Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPe6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPe7, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_CamI2cSda, 0x00000034, 0x0000027F },
{ PinmuxPadIndex_Cam2Mclk, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamFlashEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Cam1Pwdn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Cam2Pwdn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Cam1Strobe, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_SataLedActive, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_AlsProxInt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_TempAlert, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_MotionInt, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_TouchRst, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_TouchInt, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonPowerOn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonVolUp, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonVolDown, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonSlideSw, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonHome, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_LcdBlEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_LcdRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_LcdGpio1, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ApReady, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPz0, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPz1, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz3, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz4, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Dout, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Fs, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Dap4Sclk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk0, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk1, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk2, 0x00000044, 0x0000007F },
{ PinmuxPadIndex_GpioPk4, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk5, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk7, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Spi4Mosi, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Spi4Miso, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Spi4Sck, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Spi4Cs0, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_WifiEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiWakeAp, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_ApWakeBt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtWakeAp, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPh6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ApWakeNfc, 0x00000004, 0x0000007F },
{ PinmuxPadIndex_NfcEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_NfcInt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_UsbVbusEn1, 0x00000204, 0x00000267 },
{ PinmuxPadIndex_DvfsPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DvfsClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic3Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamI2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Mclk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamAfEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPa6, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Clkb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqsb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Cmd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Dat3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ModemWakeAp, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdTe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPz5, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ClkReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_CpuPwrReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_Dap4Din, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Tx, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Rx, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Rts, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Uart2Cts, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPk3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPl0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiSck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiCsN, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPcc7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_SpdifOut, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_SpdifIn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DpHpd0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_HdmiIntDpHpd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_HdmiCec, 0x00000005, 0x00000007 },
};
constexpr inline const size_t NumPinmuxPadConfigsHoag = util::size(PinmuxPadConfigsHoag);

View file

@ -0,0 +1,183 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_initial_config.py, do not edit manually. */
constexpr inline const PinmuxPadConfig PinmuxPadConfigsIcosa[] = {
{ PinmuxPadIndex_AudMclk, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Dap1Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap1Dout, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Dap1Fs, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Dap1Sclk, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Gen3I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen3I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL0ClkreqN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_PexL0RstN, 0x00000000, 0x00000267 },
{ PinmuxPadIndex_PexL1ClkreqN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_PexL1RstN, 0x00000000, 0x00000267 },
{ PinmuxPadIndex_PexWakeN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_Sdmmc1Clk, 0x00000048, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Cmd, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Shutdown, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_LcdBlPwm, 0x00000001, 0x00000067 },
{ PinmuxPadIndex_LcdGpio2, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_PwrI2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PwrI2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Clk32kIn, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Clk32kOut, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_GpioPz5, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_CorePwrReq, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_CpuPwrReq, 0x00000000, 0x00000060 },
{ PinmuxPadIndex_PwrIntN, 0x00000030, 0x00000078 },
{ PinmuxPadIndex_Gen1I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen1I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Uart2Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart2Rts, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart2Cts, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart1Tx, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart1Rx, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart1Rts, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart1Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_JtagRtck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_GpioPl1, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Spi4Mosi, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Spi4Miso, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Spi4Sck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Spi4Cs0, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart3Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart3Rts, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart3Cts, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart4Tx, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart4Rx, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Uart4Rts, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Uart4Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_QspiIo0, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_QspiIo1, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_QspiSck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_QspiCsN, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Dap2Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Dout, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Dap2Fs, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_Dap2Sclk, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_HdmiIntDpHpd, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_DvfsClk, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioX1Aud, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioX3Aud, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Dmic3Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dmic3Dat, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPe6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamI2cSda, 0x00000034, 0x0000027F },
{ PinmuxPadIndex_Cam1Mclk, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Cam2Mclk, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamFlashEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Cam1Pwdn, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_SataLedActive, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Sdmmc3Clk, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat0, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat1, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat2, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat3, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_TempAlert, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_MotionInt, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_TouchRst, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_TouchInt, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonPowerOn, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonVolUp, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonVolDown, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonSlideSw, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonHome, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_LcdBlEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_LcdRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_ApReady, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPz0, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz1, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz2, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_GpioPz3, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz4, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Din, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Sclk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Uart2Tx, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPk0, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk1, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk2, 0x00000044, 0x0000007F },
{ PinmuxPadIndex_GpioPk3, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk4, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk5, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk7, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPl0, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Uart3Tx, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_WifiEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiWakeAp, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_ApWakeBt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtWakeAp, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPh6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ApWakeNfc, 0x00000004, 0x0000007F },
{ PinmuxPadIndex_NfcEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_NfcInt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_SpdifOut, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_SpdifIn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_UsbVbusEn0, 0x00000004, 0x00000267 },
{ PinmuxPadIndex_DvfsPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic1Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic1Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic2Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic2Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPe7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamI2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamAfEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam2Pwdn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Strobe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPa6, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Cmd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_AlsProxInt, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_TouchClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ModemWakeAp, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdTe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdGpio1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ClkReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_Dap4Dout, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Fs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPcc7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DpHpd0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_HdmiCec, 0x00000005, 0x00000007 },
};
constexpr inline const size_t NumPinmuxPadConfigsIcosa = util::size(PinmuxPadConfigsIcosa);

View file

@ -0,0 +1,196 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_initial_config.py, do not edit manually. */
constexpr inline const PinmuxPadConfig PinmuxPadConfigsIowa[] = {
{ PinmuxPadIndex_AudMclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap1Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap1Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Gen3I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen3I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL0ClkreqN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_PexL0RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexL1ClkreqN, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PexL1RstN, 0x00000000, 0x0000027F },
{ PinmuxPadIndex_PexWakeN, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_Sdmmc1Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Cmd, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc1Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Clk, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Cmd, 0x00000040, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat0, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat1, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat2, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat3, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat4, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat5, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat6, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Sdmmc2Dat7, 0x00000050, 0x0000007F },
{ PinmuxPadIndex_Shutdown, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_LcdBlPwm, 0x00000001, 0x00000067 },
{ PinmuxPadIndex_LcdGpio2, 0x00000001, 0x0000007F },
{ PinmuxPadIndex_PwrI2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_PwrI2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Clk32kIn, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Clk32kOut, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_GpioPz5, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_CorePwrReq, 0x00000000, 0x00000078 },
{ PinmuxPadIndex_PwrIntN, 0x00000020, 0x00000078 },
{ PinmuxPadIndex_Gen1I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen1I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cScl, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Gen2I2cSda, 0x00000040, 0x0000027F },
{ PinmuxPadIndex_Uart2Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart2Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart2Cts, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart1Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Rx, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Uart1Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart1Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_JtagRtck, 0x00000000, 0x00000067 },
{ PinmuxPadIndex_GpioPl1, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Spi4Mosi, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Spi4Miso, 0x00000030, 0x0000007F },
{ PinmuxPadIndex_Spi4Sck, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Spi4Cs0, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart3Rx, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart3Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart3Cts, 0x00000020, 0x0000007F },
{ PinmuxPadIndex_Uart4Tx, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Rx, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Uart4Rts, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Uart4Cts, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Din, 0x00000028, 0x0000007F },
{ PinmuxPadIndex_Dap2Dout, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Fs, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_Dap2Sclk, 0x00000000, 0x0000007F },
{ PinmuxPadIndex_HdmiIntDpHpd, 0x00000020, 0x0000027F },
{ PinmuxPadIndex_DvfsClk, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioX1Aud, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioX3Aud, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Dmic3Clk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPe6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamI2cSda, 0x00000034, 0x0000027F },
{ PinmuxPadIndex_Cam1Mclk, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Cam2Mclk, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_CamFlashEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Cam1Pwdn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_SataLedActive, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Sdmmc3Clk, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat0, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat1, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat2, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_Sdmmc3Dat3, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_AlsProxInt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_TempAlert, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_MotionInt, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_TouchRst, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_TouchInt, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonPowerOn, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonVolUp, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonVolDown, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_ButtonSlideSw, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ButtonHome, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_LcdBlEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_LcdRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_ApReady, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPz0, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPz1, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz2, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_GpioPz3, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPz4, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Din, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Dap4Sclk, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Uart2Tx, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPk0, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk1, 0x0000004C, 0x0000007F },
{ PinmuxPadIndex_GpioPk2, 0x00000044, 0x0000007F },
{ PinmuxPadIndex_GpioPk3, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk4, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPk5, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_GpioPk6, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_GpioPl0, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_Uart3Tx, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_WifiEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_WifiWakeAp, 0x0000002C, 0x0000007F },
{ PinmuxPadIndex_ApWakeBt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtRst, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_BtWakeAp, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_GpioPh6, 0x00000024, 0x0000007F },
{ PinmuxPadIndex_ApWakeNfc, 0x00000004, 0x0000007F },
{ PinmuxPadIndex_NfcEn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_NfcInt, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_SpdifOut, 0x00000034, 0x0000007F },
{ PinmuxPadIndex_SpdifIn, 0x00000004, 0x00000067 },
{ PinmuxPadIndex_UsbVbusEn0, 0x00000004, 0x00000267 },
{ PinmuxPadIndex_DvfsPwm, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi2Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic1Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic1Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic2Clk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic2Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dmic3Dat, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPe7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamI2cScl, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_CamAfEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam2Pwdn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Cam1Strobe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPa6, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Clkb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc2Dqsb, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Sdmmc3Cmd, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_TouchClk, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ModemWakeAp, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdTe, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_LcdGpio1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_ClkReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_CpuPwrReq, 0x00000000, 0x00000000 },
{ PinmuxPadIndex_Dap4Dout, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Dap4Fs, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPk7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Mosi, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Miso, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Sck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_Spi1Cs1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsEn, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpsRst, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiSck, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiCsN, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo2, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_QspiIo3, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_GpioPcc7, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_UsbVbusEn1, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_DpHpd0, 0x00000005, 0x00000007 },
{ PinmuxPadIndex_HdmiCec, 0x00000005, 0x00000007 },
};
constexpr inline const size_t NumPinmuxPadConfigsIowa = util::size(PinmuxPadConfigsIowa);

View file

@ -0,0 +1,197 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_character_gen.py, do not edit manually. */
constexpr inline const PinmuxPadCharacter PinmuxPadCharacters[] = {
{ PinmuxPadIndex_Sdmmc1Clk, 0x072FF, 0x01, "Sdmmc1Clk" },
{ PinmuxPadIndex_Sdmmc1Cmd, 0x072FF, 0x02, "Sdmmc1Cmd" },
{ PinmuxPadIndex_Sdmmc1Dat3, 0x072FF, 0x02, "Sdmmc1Dat3" },
{ PinmuxPadIndex_Sdmmc1Dat2, 0x072FF, 0x02, "Sdmmc1Dat2" },
{ PinmuxPadIndex_Sdmmc1Dat1, 0x072FF, 0x02, "Sdmmc1Dat1" },
{ PinmuxPadIndex_Sdmmc1Dat0, 0x072FF, 0x01, "Sdmmc1Dat0" },
{ PinmuxPadIndex_Sdmmc3Clk, 0x072FF, 0x01, "Sdmmc3Clk" },
{ PinmuxPadIndex_Sdmmc3Cmd, 0x072FF, 0x01, "Sdmmc3Cmd" },
{ PinmuxPadIndex_Sdmmc3Dat0, 0x072FF, 0x01, "Sdmmc3Dat0" },
{ PinmuxPadIndex_Sdmmc3Dat1, 0x072FF, 0x01, "Sdmmc3Dat1" },
{ PinmuxPadIndex_Sdmmc3Dat2, 0x072FF, 0x01, "Sdmmc3Dat2" },
{ PinmuxPadIndex_Sdmmc3Dat3, 0x072FF, 0x01, "Sdmmc3Dat3" },
{ PinmuxPadIndex_PexL0RstN, 0x01DFF, 0x01, "PexL0RstN" },
{ PinmuxPadIndex_PexL0ClkreqN, 0x01DFF, 0x01, "PexL0ClkreqN" },
{ PinmuxPadIndex_PexWakeN, 0x01DFF, 0x01, "PexWakeN" },
{ PinmuxPadIndex_PexL1RstN, 0x01DFF, 0x01, "PexL1RstN" },
{ PinmuxPadIndex_PexL1ClkreqN, 0x01DFF, 0x01, "PexL1ClkreqN" },
{ PinmuxPadIndex_SataLedActive, 0x019FF, 0x01, "SataLedActive" },
{ PinmuxPadIndex_Spi1Mosi, 0x1F2FF, 0x01, "Spi1Mosi" },
{ PinmuxPadIndex_Spi1Miso, 0x1F2FF, 0x01, "Spi1Miso" },
{ PinmuxPadIndex_Spi1Sck, 0x1F2FF, 0x01, "Spi1Sck" },
{ PinmuxPadIndex_Spi1Cs0, 0x1F2FF, 0x01, "Spi1Cs0" },
{ PinmuxPadIndex_Spi1Cs1, 0x1F2FF, 0x01, "Spi1Cs1" },
{ PinmuxPadIndex_Spi2Mosi, 0x072FF, 0x02, "Spi2Mosi" },
{ PinmuxPadIndex_Spi2Miso, 0x072FF, 0x02, "Spi2Miso" },
{ PinmuxPadIndex_Spi2Sck, 0x072FF, 0x02, "Spi2Sck" },
{ PinmuxPadIndex_Spi2Cs0, 0x072FF, 0x02, "Spi2Cs0" },
{ PinmuxPadIndex_Spi2Cs1, 0x072FF, 0x01, "Spi2Cs1" },
{ PinmuxPadIndex_Spi4Mosi, 0x1F2FF, 0x01, "Spi4Mosi" },
{ PinmuxPadIndex_Spi4Miso, 0x1F2FF, 0x01, "Spi4Miso" },
{ PinmuxPadIndex_Spi4Sck, 0x1F2FF, 0x01, "Spi4Sck" },
{ PinmuxPadIndex_Spi4Cs0, 0x1F2FF, 0x01, "Spi4Cs0" },
{ PinmuxPadIndex_QspiSck, 0x072FF, 0x01, "QspiSck" },
{ PinmuxPadIndex_QspiCsN, 0x072FF, 0x01, "QspiCsN" },
{ PinmuxPadIndex_QspiIo0, 0x072FF, 0x01, "QspiIo0" },
{ PinmuxPadIndex_QspiIo1, 0x072FF, 0x01, "QspiIo1" },
{ PinmuxPadIndex_QspiIo2, 0x072FF, 0x01, "QspiIo2" },
{ PinmuxPadIndex_QspiIo3, 0x072FF, 0x01, "QspiIo3" },
{ PinmuxPadIndex_Dmic1Clk, 0x019FF, 0x02, "Dmic1Clk" },
{ PinmuxPadIndex_Dmic1Dat, 0x019FF, 0x02, "Dmic1Dat" },
{ PinmuxPadIndex_Dmic2Clk, 0x019FF, 0x02, "Dmic2Clk" },
{ PinmuxPadIndex_Dmic2Dat, 0x019FF, 0x02, "Dmic2Dat" },
{ PinmuxPadIndex_Dmic3Clk, 0x019FF, 0x02, "Dmic3Clk" },
{ PinmuxPadIndex_Dmic3Dat, 0x019FF, 0x02, "Dmic3Dat" },
{ PinmuxPadIndex_Gen1I2cScl, 0x01DFF, 0x01, "Gen1I2cScl" },
{ PinmuxPadIndex_Gen1I2cSda, 0x01DFF, 0x01, "Gen1I2cSda" },
{ PinmuxPadIndex_Gen2I2cScl, 0x01DFF, 0x01, "Gen2I2cScl" },
{ PinmuxPadIndex_Gen2I2cSda, 0x01DFF, 0x01, "Gen2I2cSda" },
{ PinmuxPadIndex_Gen3I2cScl, 0x01DFF, 0x01, "Gen3I2cScl" },
{ PinmuxPadIndex_Gen3I2cSda, 0x01DFF, 0x01, "Gen3I2cSda" },
{ PinmuxPadIndex_CamI2cScl, 0x01DFF, 0x02, "CamI2cScl" },
{ PinmuxPadIndex_CamI2cSda, 0x01DFF, 0x02, "CamI2cSda" },
{ PinmuxPadIndex_PwrI2cScl, 0x01DFF, 0x01, "PwrI2cScl" },
{ PinmuxPadIndex_PwrI2cSda, 0x01DFF, 0x01, "PwrI2cSda" },
{ PinmuxPadIndex_Uart1Tx, 0x019FF, 0x01, "Uart1Tx" },
{ PinmuxPadIndex_Uart1Rx, 0x019FF, 0x01, "Uart1Rx" },
{ PinmuxPadIndex_Uart1Rts, 0x019FF, 0x01, "Uart1Rts" },
{ PinmuxPadIndex_Uart1Cts, 0x019FF, 0x01, "Uart1Cts" },
{ PinmuxPadIndex_Uart2Tx, 0x019FF, 0x00, "Uart2Tx" },
{ PinmuxPadIndex_Uart2Rx, 0x019FF, 0x00, "Uart2Rx" },
{ PinmuxPadIndex_Uart2Rts, 0x019FF, 0x02, "Uart2Rts" },
{ PinmuxPadIndex_Uart2Cts, 0x019FF, 0x02, "Uart2Cts" },
{ PinmuxPadIndex_Uart3Tx, 0x019FF, 0x02, "Uart3Tx" },
{ PinmuxPadIndex_Uart3Rx, 0x019FF, 0x02, "Uart3Rx" },
{ PinmuxPadIndex_Uart3Rts, 0x019FF, 0x02, "Uart3Rts" },
{ PinmuxPadIndex_Uart3Cts, 0x019FF, 0x02, "Uart3Cts" },
{ PinmuxPadIndex_Uart4Tx, 0x019FF, 0x02, "Uart4Tx" },
{ PinmuxPadIndex_Uart4Rx, 0x019FF, 0x02, "Uart4Rx" },
{ PinmuxPadIndex_Uart4Rts, 0x019FF, 0x02, "Uart4Rts" },
{ PinmuxPadIndex_Uart4Cts, 0x019FF, 0x02, "Uart4Cts" },
{ PinmuxPadIndex_Dap1Fs, 0x072FF, 0x01, "Dap1Fs" },
{ PinmuxPadIndex_Dap1Din, 0x072FF, 0x01, "Dap1Din" },
{ PinmuxPadIndex_Dap1Dout, 0x072FF, 0x01, "Dap1Dout" },
{ PinmuxPadIndex_Dap1Sclk, 0x072FF, 0x01, "Dap1Sclk" },
{ PinmuxPadIndex_Dap2Fs, 0x072FF, 0x01, "Dap2Fs" },
{ PinmuxPadIndex_Dap2Din, 0x072FF, 0x01, "Dap2Din" },
{ PinmuxPadIndex_Dap2Dout, 0x072FF, 0x01, "Dap2Dout" },
{ PinmuxPadIndex_Dap2Sclk, 0x072FF, 0x01, "Dap2Sclk" },
{ PinmuxPadIndex_Dap4Fs, 0x072FF, 0x01, "Dap4Fs" },
{ PinmuxPadIndex_Dap4Din, 0x072FF, 0x01, "Dap4Din" },
{ PinmuxPadIndex_Dap4Dout, 0x072FF, 0x01, "Dap4Dout" },
{ PinmuxPadIndex_Dap4Sclk, 0x072FF, 0x01, "Dap4Sclk" },
{ PinmuxPadIndex_Cam1Mclk, 0x072FF, 0x01, "Cam1Mclk" },
{ PinmuxPadIndex_Cam2Mclk, 0x072FF, 0x01, "Cam2Mclk" },
{ PinmuxPadIndex_JtagRtck, 0x072FF, 0x01, "JtagRtck" },
{ PinmuxPadIndex_Clk32kIn, 0x0118C, 0xFF, "Clk32kIn" },
{ PinmuxPadIndex_Clk32kOut, 0x072FF, 0x02, "Clk32kOut" },
{ PinmuxPadIndex_BattBcl, 0x01DFF, 0x01, "BattBcl" },
{ PinmuxPadIndex_ClkReq, 0x011CC, 0xFF, "ClkReq" },
{ PinmuxPadIndex_CpuPwrReq, 0x011CC, 0xFF, "CpuPwrReq" },
{ PinmuxPadIndex_PwrIntN, 0x011CC, 0xFF, "PwrIntN" },
{ PinmuxPadIndex_Shutdown, 0x011CC, 0xFF, "Shutdown" },
{ PinmuxPadIndex_CorePwrReq, 0x011CC, 0xFF, "CorePwrReq" },
{ PinmuxPadIndex_AudMclk, 0x019FF, 0x01, "AudMclk" },
{ PinmuxPadIndex_DvfsPwm, 0x019FF, 0x00, "DvfsPwm" },
{ PinmuxPadIndex_DvfsClk, 0x019FF, 0x00, "DvfsClk" },
{ PinmuxPadIndex_GpioX1Aud, 0x019FF, 0x00, "GpioX1Aud" },
{ PinmuxPadIndex_GpioX3Aud, 0x019FF, 0x00, "GpioX3Aud" },
{ PinmuxPadIndex_GpioPcc7, 0x01DFF, 0x00, "GpioPcc7" },
{ PinmuxPadIndex_HdmiCec, 0x01DFF, 0x01, "HdmiCec" },
{ PinmuxPadIndex_HdmiIntDpHpd, 0x01DFF, 0x01, "HdmiIntDpHpd" },
{ PinmuxPadIndex_SpdifOut, 0x019FF, 0x01, "SpdifOut" },
{ PinmuxPadIndex_SpdifIn, 0x019FF, 0x01, "SpdifIn" },
{ PinmuxPadIndex_UsbVbusEn0, 0x01DFF, 0x01, "UsbVbusEn0" },
{ PinmuxPadIndex_UsbVbusEn1, 0x01DFF, 0x01, "UsbVbusEn1" },
{ PinmuxPadIndex_DpHpd0, 0x019FF, 0x01, "DpHpd0" },
{ PinmuxPadIndex_WifiEn, 0x019FF, 0x00, "WifiEn" },
{ PinmuxPadIndex_WifiRst, 0x019FF, 0x00, "WifiRst" },
{ PinmuxPadIndex_WifiWakeAp, 0x019FF, 0x00, "WifiWakeAp" },
{ PinmuxPadIndex_ApWakeBt, 0x019FF, 0x00, "ApWakeBt" },
{ PinmuxPadIndex_BtRst, 0x019FF, 0x00, "BtRst" },
{ PinmuxPadIndex_BtWakeAp, 0x019FF, 0x00, "BtWakeAp" },
{ PinmuxPadIndex_ApWakeNfc, 0x019FF, 0x00, "ApWakeNfc" },
{ PinmuxPadIndex_NfcEn, 0x019FF, 0x00, "NfcEn" },
{ PinmuxPadIndex_NfcInt, 0x019FF, 0x00, "NfcInt" },
{ PinmuxPadIndex_GpsEn, 0x019FF, 0x00, "GpsEn" },
{ PinmuxPadIndex_GpsRst, 0x019FF, 0x00, "GpsRst" },
{ PinmuxPadIndex_CamRst, 0x019FF, 0x01, "CamRst" },
{ PinmuxPadIndex_CamAfEn, 0x019FF, 0x02, "CamAfEn" },
{ PinmuxPadIndex_CamFlashEn, 0x019FF, 0x02, "CamFlashEn" },
{ PinmuxPadIndex_Cam1Pwdn, 0x019FF, 0x01, "Cam1Pwdn" },
{ PinmuxPadIndex_Cam2Pwdn, 0x019FF, 0x01, "Cam2Pwdn" },
{ PinmuxPadIndex_Cam1Strobe, 0x019FF, 0x01, "Cam1Strobe" },
{ PinmuxPadIndex_LcdTe, 0x019FF, 0x01, "LcdTe" },
{ PinmuxPadIndex_LcdBlPwm, 0x019FF, 0x03, "LcdBlPwm" },
{ PinmuxPadIndex_LcdBlEn, 0x019FF, 0x00, "LcdBlEn" },
{ PinmuxPadIndex_LcdRst, 0x019FF, 0x00, "LcdRst" },
{ PinmuxPadIndex_LcdGpio1, 0x019FF, 0x01, "LcdGpio1" },
{ PinmuxPadIndex_LcdGpio2, 0x019FF, 0x02, "LcdGpio2" },
{ PinmuxPadIndex_ApReady, 0x019FF, 0x00, "ApReady" },
{ PinmuxPadIndex_TouchRst, 0x019FF, 0x00, "TouchRst" },
{ PinmuxPadIndex_TouchClk, 0x019FF, 0x01, "TouchClk" },
{ PinmuxPadIndex_ModemWakeAp, 0x019FF, 0x00, "ModemWakeAp" },
{ PinmuxPadIndex_TouchInt, 0x019FF, 0x00, "TouchInt" },
{ PinmuxPadIndex_MotionInt, 0x019FF, 0x00, "MotionInt" },
{ PinmuxPadIndex_AlsProxInt, 0x019FF, 0x00, "AlsProxInt" },
{ PinmuxPadIndex_TempAlert, 0x019FF, 0x00, "TempAlert" },
{ PinmuxPadIndex_ButtonPowerOn, 0x019FF, 0x00, "ButtonPowerOn" },
{ PinmuxPadIndex_ButtonVolUp, 0x019FF, 0x00, "ButtonVolUp" },
{ PinmuxPadIndex_ButtonVolDown, 0x019FF, 0x00, "ButtonVolDown" },
{ PinmuxPadIndex_ButtonSlideSw, 0x019FF, 0x00, "ButtonSlideSw" },
{ PinmuxPadIndex_ButtonHome, 0x019FF, 0x00, "ButtonHome" },
{ PinmuxPadIndex_GpioPa6, 0x019FF, 0x01, "GpioPa6" },
{ PinmuxPadIndex_GpioPe6, 0x019FF, 0x00, "GpioPe6" },
{ PinmuxPadIndex_GpioPe7, 0x019FF, 0x00, "GpioPe7" },
{ PinmuxPadIndex_GpioPh6, 0x019FF, 0x00, "GpioPh6" },
{ PinmuxPadIndex_GpioPk0, 0x072FF, 0x02, "GpioPk0" },
{ PinmuxPadIndex_GpioPk1, 0x072FF, 0x02, "GpioPk1" },
{ PinmuxPadIndex_GpioPk2, 0x072FF, 0x02, "GpioPk2" },
{ PinmuxPadIndex_GpioPk3, 0x072FF, 0x02, "GpioPk3" },
{ PinmuxPadIndex_GpioPk4, 0x072FF, 0x01, "GpioPk4" },
{ PinmuxPadIndex_GpioPk5, 0x072FF, 0x01, "GpioPk5" },
{ PinmuxPadIndex_GpioPk6, 0x072FF, 0x01, "GpioPk6" },
{ PinmuxPadIndex_GpioPk7, 0x072FF, 0x01, "GpioPk7" },
{ PinmuxPadIndex_GpioPl0, 0x072FF, 0x00, "GpioPl0" },
{ PinmuxPadIndex_GpioPl1, 0x072FF, 0x01, "GpioPl1" },
{ PinmuxPadIndex_GpioPz0, 0x072FF, 0x01, "GpioPz0" },
{ PinmuxPadIndex_GpioPz1, 0x072FF, 0x02, "GpioPz1" },
{ PinmuxPadIndex_GpioPz2, 0x072FF, 0x02, "GpioPz2" },
{ PinmuxPadIndex_GpioPz3, 0x072FF, 0x01, "GpioPz3" },
{ PinmuxPadIndex_GpioPz4, 0x072FF, 0x01, "GpioPz4" },
{ PinmuxPadIndex_GpioPz5, 0x072FF, 0x01, "GpioPz5" },
{ PinmuxPadIndex_Sdmmc2Dat0, 0x1F2FF, 0x02, "Sdmmc2Dat0" },
{ PinmuxPadIndex_Sdmmc2Dat1, 0x1F2FF, 0x02, "Sdmmc2Dat1" },
{ PinmuxPadIndex_Sdmmc2Dat2, 0x1F2FF, 0x02, "Sdmmc2Dat2" },
{ PinmuxPadIndex_Sdmmc2Dat3, 0x1F2FF, 0x02, "Sdmmc2Dat3" },
{ PinmuxPadIndex_Sdmmc2Dat4, 0x1F2FF, 0x02, "Sdmmc2Dat4" },
{ PinmuxPadIndex_Sdmmc2Dat5, 0x1F2FF, 0x02, "Sdmmc2Dat5" },
{ PinmuxPadIndex_Sdmmc2Dat6, 0x1F2FF, 0x02, "Sdmmc2Dat6" },
{ PinmuxPadIndex_Sdmmc2Dat7, 0x1F2FF, 0x02, "Sdmmc2Dat7" },
{ PinmuxPadIndex_Sdmmc2Clk, 0x1F2FF, 0x02, "Sdmmc2Clk" },
{ PinmuxPadIndex_Sdmmc2Clkb, 0x1F2FF, 0x00, "Sdmmc2Clkb" },
{ PinmuxPadIndex_Sdmmc2Cmd, 0x1F2FF, 0x02, "Sdmmc2Cmd" },
{ PinmuxPadIndex_Sdmmc2Dqs, 0x1F2FF, 0x00, "Sdmmc2Dqs" },
{ PinmuxPadIndex_Sdmmc2Dqsb, 0x1F2FF, 0x00, "Sdmmc2Dqsb" },
};
constexpr inline size_t NumPinmuxPadCharacters = util::size(PinmuxPadCharacters);

View file

@ -0,0 +1,348 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pinmux_character_gen.py, do not edit manually. */
#pragma once
enum PinmuxPadIndex {
PinmuxPadIndex_Sdmmc1Clk = 0,
PinmuxPadIndex_Sdmmc1Cmd = 1,
PinmuxPadIndex_Sdmmc1Dat3 = 2,
PinmuxPadIndex_Sdmmc1Dat2 = 3,
PinmuxPadIndex_Sdmmc1Dat1 = 4,
PinmuxPadIndex_Sdmmc1Dat0 = 5,
PinmuxPadIndex_Sdmmc3Clk = 6,
PinmuxPadIndex_Sdmmc3Cmd = 7,
PinmuxPadIndex_Sdmmc3Dat0 = 8,
PinmuxPadIndex_Sdmmc3Dat1 = 9,
PinmuxPadIndex_Sdmmc3Dat2 = 10,
PinmuxPadIndex_Sdmmc3Dat3 = 11,
PinmuxPadIndex_PexL0RstN = 12,
PinmuxPadIndex_PexL0ClkreqN = 13,
PinmuxPadIndex_PexWakeN = 14,
PinmuxPadIndex_PexL1RstN = 15,
PinmuxPadIndex_PexL1ClkreqN = 16,
PinmuxPadIndex_SataLedActive = 17,
PinmuxPadIndex_Spi1Mosi = 18,
PinmuxPadIndex_Spi1Miso = 19,
PinmuxPadIndex_Spi1Sck = 20,
PinmuxPadIndex_Spi1Cs0 = 21,
PinmuxPadIndex_Spi1Cs1 = 22,
PinmuxPadIndex_Spi2Mosi = 23,
PinmuxPadIndex_Spi2Miso = 24,
PinmuxPadIndex_Spi2Sck = 25,
PinmuxPadIndex_Spi2Cs0 = 26,
PinmuxPadIndex_Spi2Cs1 = 27,
PinmuxPadIndex_Spi4Mosi = 28,
PinmuxPadIndex_Spi4Miso = 29,
PinmuxPadIndex_Spi4Sck = 30,
PinmuxPadIndex_Spi4Cs0 = 31,
PinmuxPadIndex_QspiSck = 32,
PinmuxPadIndex_QspiCsN = 33,
PinmuxPadIndex_QspiIo0 = 34,
PinmuxPadIndex_QspiIo1 = 35,
PinmuxPadIndex_QspiIo2 = 36,
PinmuxPadIndex_QspiIo3 = 37,
PinmuxPadIndex_Dmic1Clk = 38,
PinmuxPadIndex_Dmic1Dat = 39,
PinmuxPadIndex_Dmic2Clk = 40,
PinmuxPadIndex_Dmic2Dat = 41,
PinmuxPadIndex_Dmic3Clk = 42,
PinmuxPadIndex_Dmic3Dat = 43,
PinmuxPadIndex_Gen1I2cScl = 44,
PinmuxPadIndex_Gen1I2cSda = 45,
PinmuxPadIndex_Gen2I2cScl = 46,
PinmuxPadIndex_Gen2I2cSda = 47,
PinmuxPadIndex_Gen3I2cScl = 48,
PinmuxPadIndex_Gen3I2cSda = 49,
PinmuxPadIndex_CamI2cScl = 50,
PinmuxPadIndex_CamI2cSda = 51,
PinmuxPadIndex_PwrI2cScl = 52,
PinmuxPadIndex_PwrI2cSda = 53,
PinmuxPadIndex_Uart1Tx = 54,
PinmuxPadIndex_Uart1Rx = 55,
PinmuxPadIndex_Uart1Rts = 56,
PinmuxPadIndex_Uart1Cts = 57,
PinmuxPadIndex_Uart2Tx = 58,
PinmuxPadIndex_Uart2Rx = 59,
PinmuxPadIndex_Uart2Rts = 60,
PinmuxPadIndex_Uart2Cts = 61,
PinmuxPadIndex_Uart3Tx = 62,
PinmuxPadIndex_Uart3Rx = 63,
PinmuxPadIndex_Uart3Rts = 64,
PinmuxPadIndex_Uart3Cts = 65,
PinmuxPadIndex_Uart4Tx = 66,
PinmuxPadIndex_Uart4Rx = 67,
PinmuxPadIndex_Uart4Rts = 68,
PinmuxPadIndex_Uart4Cts = 69,
PinmuxPadIndex_Dap1Fs = 70,
PinmuxPadIndex_Dap1Din = 71,
PinmuxPadIndex_Dap1Dout = 72,
PinmuxPadIndex_Dap1Sclk = 73,
PinmuxPadIndex_Dap2Fs = 74,
PinmuxPadIndex_Dap2Din = 75,
PinmuxPadIndex_Dap2Dout = 76,
PinmuxPadIndex_Dap2Sclk = 77,
PinmuxPadIndex_Dap4Fs = 78,
PinmuxPadIndex_Dap4Din = 79,
PinmuxPadIndex_Dap4Dout = 80,
PinmuxPadIndex_Dap4Sclk = 81,
PinmuxPadIndex_Cam1Mclk = 82,
PinmuxPadIndex_Cam2Mclk = 83,
PinmuxPadIndex_JtagRtck = 84,
PinmuxPadIndex_Clk32kIn = 85,
PinmuxPadIndex_Clk32kOut = 86,
PinmuxPadIndex_BattBcl = 87,
PinmuxPadIndex_ClkReq = 88,
PinmuxPadIndex_CpuPwrReq = 89,
PinmuxPadIndex_PwrIntN = 90,
PinmuxPadIndex_Shutdown = 91,
PinmuxPadIndex_CorePwrReq = 92,
PinmuxPadIndex_AudMclk = 93,
PinmuxPadIndex_DvfsPwm = 94,
PinmuxPadIndex_DvfsClk = 95,
PinmuxPadIndex_GpioX1Aud = 96,
PinmuxPadIndex_GpioX3Aud = 97,
PinmuxPadIndex_GpioPcc7 = 98,
PinmuxPadIndex_HdmiCec = 99,
PinmuxPadIndex_HdmiIntDpHpd = 100,
PinmuxPadIndex_SpdifOut = 101,
PinmuxPadIndex_SpdifIn = 102,
PinmuxPadIndex_UsbVbusEn0 = 103,
PinmuxPadIndex_UsbVbusEn1 = 104,
PinmuxPadIndex_DpHpd0 = 105,
PinmuxPadIndex_WifiEn = 106,
PinmuxPadIndex_WifiRst = 107,
PinmuxPadIndex_WifiWakeAp = 108,
PinmuxPadIndex_ApWakeBt = 109,
PinmuxPadIndex_BtRst = 110,
PinmuxPadIndex_BtWakeAp = 111,
PinmuxPadIndex_ApWakeNfc = 112,
PinmuxPadIndex_NfcEn = 113,
PinmuxPadIndex_NfcInt = 114,
PinmuxPadIndex_GpsEn = 115,
PinmuxPadIndex_GpsRst = 116,
PinmuxPadIndex_CamRst = 117,
PinmuxPadIndex_CamAfEn = 118,
PinmuxPadIndex_CamFlashEn = 119,
PinmuxPadIndex_Cam1Pwdn = 120,
PinmuxPadIndex_Cam2Pwdn = 121,
PinmuxPadIndex_Cam1Strobe = 122,
PinmuxPadIndex_LcdTe = 123,
PinmuxPadIndex_LcdBlPwm = 124,
PinmuxPadIndex_LcdBlEn = 125,
PinmuxPadIndex_LcdRst = 126,
PinmuxPadIndex_LcdGpio1 = 127,
PinmuxPadIndex_LcdGpio2 = 128,
PinmuxPadIndex_ApReady = 129,
PinmuxPadIndex_TouchRst = 130,
PinmuxPadIndex_TouchClk = 131,
PinmuxPadIndex_ModemWakeAp = 132,
PinmuxPadIndex_TouchInt = 133,
PinmuxPadIndex_MotionInt = 134,
PinmuxPadIndex_AlsProxInt = 135,
PinmuxPadIndex_TempAlert = 136,
PinmuxPadIndex_ButtonPowerOn = 137,
PinmuxPadIndex_ButtonVolUp = 138,
PinmuxPadIndex_ButtonVolDown = 139,
PinmuxPadIndex_ButtonSlideSw = 140,
PinmuxPadIndex_ButtonHome = 141,
PinmuxPadIndex_GpioPa6 = 142,
PinmuxPadIndex_GpioPe6 = 143,
PinmuxPadIndex_GpioPe7 = 144,
PinmuxPadIndex_GpioPh6 = 145,
PinmuxPadIndex_GpioPk0 = 146,
PinmuxPadIndex_GpioPk1 = 147,
PinmuxPadIndex_GpioPk2 = 148,
PinmuxPadIndex_GpioPk3 = 149,
PinmuxPadIndex_GpioPk4 = 150,
PinmuxPadIndex_GpioPk5 = 151,
PinmuxPadIndex_GpioPk6 = 152,
PinmuxPadIndex_GpioPk7 = 153,
PinmuxPadIndex_GpioPl0 = 154,
PinmuxPadIndex_GpioPl1 = 155,
PinmuxPadIndex_GpioPz0 = 156,
PinmuxPadIndex_GpioPz1 = 157,
PinmuxPadIndex_GpioPz2 = 158,
PinmuxPadIndex_GpioPz3 = 159,
PinmuxPadIndex_GpioPz4 = 160,
PinmuxPadIndex_GpioPz5 = 161,
PinmuxPadIndex_Sdmmc2Dat0 = 162,
PinmuxPadIndex_Sdmmc2Dat1 = 163,
PinmuxPadIndex_Sdmmc2Dat2 = 164,
PinmuxPadIndex_Sdmmc2Dat3 = 165,
PinmuxPadIndex_Sdmmc2Dat4 = 166,
PinmuxPadIndex_Sdmmc2Dat5 = 167,
PinmuxPadIndex_Sdmmc2Dat6 = 168,
PinmuxPadIndex_Sdmmc2Dat7 = 169,
PinmuxPadIndex_Sdmmc2Clk = 170,
PinmuxPadIndex_Sdmmc2Clkb = 171,
PinmuxPadIndex_Sdmmc2Cmd = 172,
PinmuxPadIndex_Sdmmc2Dqs = 173,
PinmuxPadIndex_Sdmmc2Dqsb = 174,
};
enum PinmuxDrivePadIndex {
PinmuxDrivePadIndex_AlsProxInt = 0,
PinmuxDrivePadIndex_ApReady = 1,
PinmuxDrivePadIndex_ApWakeBt = 2,
PinmuxDrivePadIndex_ApWakeNfc = 3,
PinmuxDrivePadIndex_AudMclk = 4,
PinmuxDrivePadIndex_BattBcl = 5,
PinmuxDrivePadIndex_BtRst = 6,
PinmuxDrivePadIndex_BtWakeAp = 7,
PinmuxDrivePadIndex_ButtonHome = 8,
PinmuxDrivePadIndex_ButtonPowerOn = 9,
PinmuxDrivePadIndex_ButtonSlideSw = 10,
PinmuxDrivePadIndex_ButtonVolDown = 11,
PinmuxDrivePadIndex_ButtonVolUp = 12,
PinmuxDrivePadIndex_Cam1Mclk = 13,
PinmuxDrivePadIndex_Cam1Pwdn = 14,
PinmuxDrivePadIndex_Cam1Strobe = 15,
PinmuxDrivePadIndex_Cam2Mclk = 16,
PinmuxDrivePadIndex_Cam2Pwdn = 17,
PinmuxDrivePadIndex_CamAfEn = 18,
PinmuxDrivePadIndex_CamFlashEn = 19,
PinmuxDrivePadIndex_CamI2cScl = 20,
PinmuxDrivePadIndex_CamI2cSda = 21,
PinmuxDrivePadIndex_CamRst = 22,
PinmuxDrivePadIndex_Clk32kIn = 23,
PinmuxDrivePadIndex_Clk32kOut = 24,
PinmuxDrivePadIndex_ClkReq = 25,
PinmuxDrivePadIndex_CorePwrReq = 26,
PinmuxDrivePadIndex_CpuPwrReq = 27,
PinmuxDrivePadIndex_Dap1Din = 28,
PinmuxDrivePadIndex_Dap1Dout = 29,
PinmuxDrivePadIndex_Dap1Fs = 30,
PinmuxDrivePadIndex_Dap1Sclk = 31,
PinmuxDrivePadIndex_Dap2Din = 32,
PinmuxDrivePadIndex_Dap2Dout = 33,
PinmuxDrivePadIndex_Dap2Fs = 34,
PinmuxDrivePadIndex_Dap2Sclk = 35,
PinmuxDrivePadIndex_Dap4Din = 36,
PinmuxDrivePadIndex_Dap4Dout = 37,
PinmuxDrivePadIndex_Dap4Fs = 38,
PinmuxDrivePadIndex_Dap4Sclk = 39,
PinmuxDrivePadIndex_Dmic1Clk = 40,
PinmuxDrivePadIndex_Dmic1Dat = 41,
PinmuxDrivePadIndex_Dmic2Clk = 42,
PinmuxDrivePadIndex_Dmic2Dat = 43,
PinmuxDrivePadIndex_Dmic3Clk = 44,
PinmuxDrivePadIndex_Dmic3Dat = 45,
PinmuxDrivePadIndex_DpHpd = 46,
PinmuxDrivePadIndex_DvfsClk = 47,
PinmuxDrivePadIndex_DvfsPwm = 48,
PinmuxDrivePadIndex_Gen1I2cScl = 49,
PinmuxDrivePadIndex_Gen1I2cSda = 50,
PinmuxDrivePadIndex_Gen2I2cScl = 51,
PinmuxDrivePadIndex_Gen2I2cSda = 52,
PinmuxDrivePadIndex_Gen3I2cScl = 53,
PinmuxDrivePadIndex_Gen3I2cSda = 54,
PinmuxDrivePadIndex_GpioPa6 = 55,
PinmuxDrivePadIndex_GpioPcc7 = 56,
PinmuxDrivePadIndex_GpioPe6 = 57,
PinmuxDrivePadIndex_GpioPe7 = 58,
PinmuxDrivePadIndex_GpioPh6 = 59,
PinmuxDrivePadIndex_GpioPk0 = 60,
PinmuxDrivePadIndex_GpioPk1 = 61,
PinmuxDrivePadIndex_GpioPk2 = 62,
PinmuxDrivePadIndex_GpioPk3 = 63,
PinmuxDrivePadIndex_GpioPk4 = 64,
PinmuxDrivePadIndex_GpioPk5 = 65,
PinmuxDrivePadIndex_GpioPk6 = 66,
PinmuxDrivePadIndex_GpioPk7 = 67,
PinmuxDrivePadIndex_GpioPl0 = 68,
PinmuxDrivePadIndex_GpioPl1 = 69,
PinmuxDrivePadIndex_GpioPz0 = 70,
PinmuxDrivePadIndex_GpioPz1 = 71,
PinmuxDrivePadIndex_GpioPz2 = 72,
PinmuxDrivePadIndex_GpioPz3 = 73,
PinmuxDrivePadIndex_GpioPz4 = 74,
PinmuxDrivePadIndex_GpioPz5 = 75,
PinmuxDrivePadIndex_GpioX1Aud = 76,
PinmuxDrivePadIndex_GpioX3Aud = 77,
PinmuxDrivePadIndex_GpsEn = 78,
PinmuxDrivePadIndex_GpsRst = 79,
PinmuxDrivePadIndex_HdmiCec = 80,
PinmuxDrivePadIndex_HdmiIntDpHpd = 81,
PinmuxDrivePadIndex_JtagRtck = 82,
PinmuxDrivePadIndex_LcdBlEn = 83,
PinmuxDrivePadIndex_LcdBlPwm = 84,
PinmuxDrivePadIndex_LcdGpio1 = 85,
PinmuxDrivePadIndex_LcdGpio2 = 86,
PinmuxDrivePadIndex_LcdRst = 87,
PinmuxDrivePadIndex_LcdTe = 88,
PinmuxDrivePadIndex_ModemWakeAp = 89,
PinmuxDrivePadIndex_MotionInt = 90,
PinmuxDrivePadIndex_NfcEn = 91,
PinmuxDrivePadIndex_NfcInt = 92,
PinmuxDrivePadIndex_PexL0ClkReqN = 93,
PinmuxDrivePadIndex_PexL0RstN = 94,
PinmuxDrivePadIndex_PexL1ClkreqN = 95,
PinmuxDrivePadIndex_PexL1RstN = 96,
PinmuxDrivePadIndex_PexWakeN = 97,
PinmuxDrivePadIndex_PwrI2cScl = 98,
PinmuxDrivePadIndex_PwrI2cSda = 99,
PinmuxDrivePadIndex_PwrIntN = 100,
PinmuxDrivePadIndex_QspiComp = 101,
PinmuxDrivePadIndex_QspiSck = 102,
PinmuxDrivePadIndex_SataLedActive = 103,
PinmuxDrivePadIndex_Sdmmc1Pad = 104,
PinmuxDrivePadIndex_Sdmmc3Pad = 105,
PinmuxDrivePadIndex_Shutdown = 106,
PinmuxDrivePadIndex_SpdifIn = 107,
PinmuxDrivePadIndex_SpdifOut = 108,
PinmuxDrivePadIndex_Spi1Cs0 = 109,
PinmuxDrivePadIndex_Spi1Cs1 = 110,
PinmuxDrivePadIndex_Spi1Miso = 111,
PinmuxDrivePadIndex_Spi1Mosi = 112,
PinmuxDrivePadIndex_Spi1Sck = 113,
PinmuxDrivePadIndex_Spi2Cs0 = 114,
PinmuxDrivePadIndex_Spi2Cs1 = 115,
PinmuxDrivePadIndex_Spi2Miso = 116,
PinmuxDrivePadIndex_Spi2Mosi = 117,
PinmuxDrivePadIndex_Spi2Sck = 118,
PinmuxDrivePadIndex_Spi4Cs0 = 119,
PinmuxDrivePadIndex_Spi4Miso = 120,
PinmuxDrivePadIndex_Spi4Mosi = 121,
PinmuxDrivePadIndex_Spi4Sck = 122,
PinmuxDrivePadIndex_TempAlert = 123,
PinmuxDrivePadIndex_TouchClk = 124,
PinmuxDrivePadIndex_TouchInt = 125,
PinmuxDrivePadIndex_TouchRst = 126,
PinmuxDrivePadIndex_Uart1Cts = 127,
PinmuxDrivePadIndex_Uart1Rts = 128,
PinmuxDrivePadIndex_Uart1Rx = 129,
PinmuxDrivePadIndex_Uart1Tx = 130,
PinmuxDrivePadIndex_Uart2Cts = 131,
PinmuxDrivePadIndex_Uart2Rts = 132,
PinmuxDrivePadIndex_Uart2Rx = 133,
PinmuxDrivePadIndex_Uart2Tx = 134,
PinmuxDrivePadIndex_Uart3Cts = 135,
PinmuxDrivePadIndex_Uart3Rts = 136,
PinmuxDrivePadIndex_Uart3Rx = 137,
PinmuxDrivePadIndex_Uart3Tx = 138,
PinmuxDrivePadIndex_Uart4Cts = 139,
PinmuxDrivePadIndex_Uart4Rts = 140,
PinmuxDrivePadIndex_Uart4Rx = 141,
PinmuxDrivePadIndex_Uart4Tx = 142,
PinmuxDrivePadIndex_UsbVbusEn0 = 143,
PinmuxDrivePadIndex_UsbVbusEn1 = 144,
PinmuxDrivePadIndex_WifiEn = 145,
PinmuxDrivePadIndex_WifiRst = 146,
PinmuxDrivePadIndex_WifiWakeAp = 147,
};

View file

@ -0,0 +1,641 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stratosphere.hpp>
#include "pinmux_pad_index.hpp"
#include "pinmux_board_driver_api.hpp"
#include "pinmux_platform_pads.hpp"
namespace ams::pinmux::driver::board::nintendo_nx {
namespace {
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;
u8 safe_func;
const char *pad_name;
};
struct PinmuxDrivePadCharacter {
u32 reg_offset;
u32 reg_mask;
const char *pad_name;
};
#include "pinmux_pad_characters.inc"
#include "pinmux_drive_pad_characters.inc"
class PinmuxPad {
private:
u32 reg_address;
u32 reg_mask;
u32 reg_value;
u8 safe_func;
const char *pad_name;
private:
bool IsValidRegisterAddress() const {
return this->reg_address - 0x70003000 <= 0x2C4;
}
uintptr_t GetRegisterAddress() const {
return g_apb_misc_virtual_address + (this->reg_address - 0x70000000);
}
bool UpdateBits(u32 value, u32 offset, u32 mask) {
if ((this->reg_mask & mask) != 0) {
if ((value & (mask >> offset)) != ((this->reg_value & mask) >> offset)) {
this->reg_value = (this->reg_value & ~mask) | ((value << offset) & mask);
}
return true;
} else {
return false;
}
}
u32 ReadReg() const {
if (this->IsValidRegisterAddress()) {
return reg::Read(this->GetRegisterAddress());
} else {
return 0;
}
}
void WriteReg() const {
if (this->IsValidRegisterAddress()) {
reg::Write(this->GetRegisterAddress(), this->reg_value);
}
}
bool IsLocked() const {
return (this->reg_value & PinmuxPadMask_Lock) != 0;
}
void UpdatePm(u8 v) {
if (v != 0xFF) {
if (v == PinmuxPadPm_Safe) {
v = this->safe_func;
}
this->UpdateBits(v, PinmuxPadBitOffset_Pm, PinmuxPadMask_Pm);
}
}
void UpdatePupd(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_Pupd, PinmuxPadMask_Pupd);
}
}
void UpdateTristate(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_Tristate, PinmuxPadMask_Tristate);
}
}
void UpdateEInput(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_EInput, PinmuxPadMask_EInput);
}
}
void UpdateEOd(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_EOd, PinmuxPadMask_EOd);
}
}
void UpdateLock(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_Lock, PinmuxPadMask_Lock);
}
}
void UpdateIoReset(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_IoReset, PinmuxPadMask_IoReset);
}
}
void UpdatePark(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_Park, PinmuxPadMask_Park);
}
}
void UpdateELpdr(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_ELpdr, PinmuxPadMask_ELpdr);
}
}
void UpdateEHsm(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_EHsm, PinmuxPadMask_EHsm);
}
}
void UpdateEIoHv(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_EIoHv, PinmuxPadMask_EIoHv);
}
}
void UpdateESchmt(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_ESchmt, PinmuxPadMask_ESchmt);
}
}
void UpdatePreemp(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_Preemp, PinmuxPadMask_Preemp);
}
}
void UpdateDrvType(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxPadBitOffset_DrvType, PinmuxPadMask_DrvType);
}
}
public:
constexpr PinmuxPad() : reg_address(), reg_mask(), reg_value(), safe_func(), pad_name() { /* ... */ }
void UpdatePinmuxPad(u32 config, u32 config_mask) {
/* Update register value. */
this->reg_value = this->ReadReg();
/* Check if we're locked. */
if (this->IsLocked()) {
return;
}
/* Update PM. */
if ((config_mask & PinmuxOptBitMask_Pm) != 0) {
const auto opt = (config & PinmuxOptBitMask_Pm);
u8 pm = PinmuxPadPm_Safe;
if (opt != PinmuxOpt_Gpio) {
if (opt == PinmuxOpt_Unused) {
this->UpdatePupd(true);
this->UpdateTristate(true);
this->UpdateEInput(0);
} else if (opt <= PinmuxOpt_Unused) {
pm = opt >> PinmuxOptBitOffset_Pm;
}
}
this->UpdatePm(pm);
}
/* Update pupd. */
if ((config_mask & PinmuxOptBitMask_Pupd) != 0) {
const auto opt = (config & PinmuxOptBitMask_Pupd);
if (opt == PinmuxOpt_NoPupd || opt == PinmuxOpt_PullDown || opt == PinmuxOpt_PullUp) {
this->UpdatePupd(opt >> PinmuxOptBitOffset_Pupd);
}
}
/* Update direction. */
if ((config_mask & PinmuxOptBitMask_Dir) != 0) {
const auto opt = (config & PinmuxOptBitMask_Dir);
if (opt == PinmuxOpt_Output) {
this->UpdateTristate(false);
this->UpdateEInput(false);
if ((this->reg_mask & PinmuxPadMask_EOd) != 0) {
this->UpdateEOd(false);
}
} else if (opt == PinmuxOpt_Input) {
this->UpdateTristate(true);
this->UpdateEInput(true);
if ((this->reg_mask & PinmuxPadMask_EOd) != 0) {
this->UpdateEOd(false);
}
} else if (opt == PinmuxOpt_Bidirection) {
this->UpdateTristate(false);
this->UpdateEInput(true);
if ((this->reg_mask & PinmuxPadMask_EOd) != 0) {
this->UpdateEOd(false);
}
} else if (opt == PinmuxOpt_OpenDrain) {
this->UpdateTristate(false);
this->UpdateEInput(true);
this->UpdateEOd(true);
}
}
/* Update Lock. */
if ((config_mask & PinmuxOptBitMask_Lock) != 0) {
const auto opt = (config & PinmuxOptBitMask_Lock);
this->UpdateLock(opt != 0);
}
/* Update IoReset. */
if ((config_mask & PinmuxOptBitMask_IoReset) != 0) {
const auto opt = (config & PinmuxOptBitMask_IoReset);
this->UpdateIoReset(opt != 0);
}
/* Update Park. */
if ((config_mask & PinmuxOptBitMask_Park) != 0) {
const auto opt = (config & PinmuxOptBitMask_Park);
this->UpdatePark(opt != 0);
}
/* Update Lpdr. */
if ((config_mask & PinmuxOptBitMask_Lpdr) != 0) {
const auto opt = (config & PinmuxOptBitMask_Lpdr);
this->UpdateELpdr(opt != 0);
}
/* Update Hsm. */
if ((config_mask & PinmuxOptBitMask_Hsm) != 0) {
const auto opt = (config & PinmuxOptBitMask_Hsm);
this->UpdateEHsm(opt != 0);
}
/* Update IoHv. */
if ((config_mask & PinmuxOptBitMask_IoHv) != 0) {
const auto opt = (config & PinmuxOptBitMask_IoHv);
this->UpdateEIoHv(opt != 0);
}
/* Update Schmt. */
if ((config_mask & PinmuxOptBitMask_Schmt) != 0) {
const auto opt = (config & PinmuxOptBitMask_Schmt);
this->UpdateESchmt(opt != 0);
}
/* Update Preemp. */
if ((config_mask & PinmuxOptBitMask_Preemp) != 0) {
const auto opt = (config & PinmuxOptBitMask_Preemp);
this->UpdatePreemp(opt != 0);
}
/* Update drive type. */
if ((config_mask & PinmuxOptBitMask_DrvType) != 0) {
const auto opt = (config & PinmuxOptBitMask_DrvType);
this->UpdateDrvType(opt >> PinmuxOptBitOffset_DrvType);
}
/* Write the updated register value. */
this->WriteReg();
}
void SetCharacter(const PinmuxPadCharacter &character) {
this->reg_address = character.reg_offset + 0x70000000;
this->reg_mask = character.reg_mask;
this->safe_func = character.safe_func;
this->reg_value = this->ReadReg();
this->pad_name = character.pad_name;
if ((this->reg_mask & this->reg_value & PinmuxPadMask_Park) != 0) {
this->reg_value &= ~(PinmuxPadMask_Park);
}
this->WriteReg();
}
};
class PinmuxDrivePad {
private:
u32 reg_address;
u32 reg_mask;
u32 reg_value;
u8 safe_func;
const char *pad_name;
private:
bool IsValidRegisterAddress() const {
return this->reg_address - 0x700008E4 <= 0x288;
}
uintptr_t GetRegisterAddress() const {
return g_apb_misc_virtual_address + (this->reg_address - 0x70000000);
}
bool UpdateBits(u32 value, u32 offset, u32 mask) {
if ((this->reg_mask & mask) != 0) {
if ((value & (mask >> offset)) != ((this->reg_value & mask) >> offset)) {
this->reg_value = (this->reg_value & ~mask) | ((value << offset) & mask);
}
return true;
} else {
return false;
}
}
u32 ReadReg() const {
if (this->IsValidRegisterAddress()) {
return reg::Read(this->GetRegisterAddress());
} else {
return 0;
}
}
void WriteReg() const {
if (this->IsValidRegisterAddress()) {
reg::Write(this->GetRegisterAddress(), this->reg_value);
}
}
bool IsCzDrvDn() const {
return (this->reg_mask & PinmuxDrivePadMask_CzDrvDn) == PinmuxDrivePadMask_CzDrvDn;
}
bool IsCzDrvUp() const {
return (this->reg_mask & PinmuxDrivePadMask_CzDrvUp) == PinmuxDrivePadMask_CzDrvUp;
}
void UpdateDrvDn(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxDrivePadBitOffset_DrvDn, PinmuxDrivePadMask_DrvDn);
}
}
void UpdateDrvUp(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxDrivePadBitOffset_DrvUp, PinmuxDrivePadMask_DrvUp);
}
}
void UpdateCzDrvDn(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxDrivePadBitOffset_CzDrvDn, PinmuxDrivePadMask_CzDrvDn);
}
}
void UpdateCzDrvUp(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxDrivePadBitOffset_CzDrvUp, PinmuxDrivePadMask_CzDrvUp);
}
}
void UpdateSlwR(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxDrivePadBitOffset_SlwR, PinmuxDrivePadMask_SlwR);
}
}
void UpdateSlwF(u8 v) {
if (v != 0xFF) {
this->UpdateBits(v, PinmuxDrivePadBitOffset_SlwF, PinmuxDrivePadMask_SlwF);
}
}
public:
constexpr PinmuxDrivePad() : reg_address(), reg_mask(), reg_value(), pad_name() { /* ... */ }
void UpdatePinmuxDrivePad(u32 config, u32 config_mask) {
/* Update register value. */
this->reg_value = this->ReadReg();
/* Update drvdn. */
if ((config_mask & PinmuxDriveOptBitMask_DrvDn) != 0) {
if (this->IsCzDrvDn()) {
const auto opt = (config & PinmuxDriveOptBitMask_CzDrvDn);
this->UpdateCzDrvDn(opt >> PinmuxDriveOptBitOffset_CzDrvDn);
} else {
const auto opt = (config & PinmuxDriveOptBitMask_DrvDn);
this->UpdateDrvDn(opt >> PinmuxDriveOptBitOffset_DrvDn);
}
}
/* Update drvup. */
if ((config_mask & PinmuxDriveOptBitMask_DrvUp) != 0) {
if (this->IsCzDrvUp()) {
const auto opt = (config & PinmuxDriveOptBitMask_CzDrvUp);
this->UpdateCzDrvUp(opt >> PinmuxDriveOptBitOffset_CzDrvUp);
} else {
const auto opt = (config & PinmuxDriveOptBitMask_DrvUp);
this->UpdateDrvUp(opt >> PinmuxDriveOptBitOffset_DrvUp);
}
}
/* Update slwr */
if ((config_mask & PinmuxDriveOptBitMask_SlwR) != 0) {
const auto opt = (config & PinmuxDriveOptBitMask_SlwR);
this->UpdateSlwR(opt >> PinmuxDriveOptBitOffset_SlwR);
}
/* Update slwf */
if ((config_mask & PinmuxDriveOptBitMask_SlwR) != 0) {
const auto opt = (config & PinmuxDriveOptBitMask_SlwF);
this->UpdateSlwF(opt >> PinmuxDriveOptBitOffset_SlwF);
}
/* Write the updated register value. */
this->WriteReg();
}
void SetCharacter(const PinmuxDrivePadCharacter &character) {
this->reg_address = character.reg_offset + 0x70000000;
this->reg_mask = character.reg_mask;
this->reg_value = this->ReadReg();
this->pad_name = character.pad_name;
}
};
constinit std::array<PinmuxPad, NumPinmuxPadCharacters> g_pinmux_pads{};
constinit std::array<PinmuxDrivePad, NumPinmuxDrivePadCharacters> g_pinmux_drive_pads{};
}
void InitializePlatformPads() {
/* Initialize all pads. */
for (size_t i = 0; i < NumPinmuxPadCharacters; ++i) {
g_pinmux_pads[i].SetCharacter(PinmuxPadCharacters[i]);
}
/* Update all drive pads. */
for (size_t i = 0; i < NumPinmuxDrivePadCharacters; ++i) {
g_pinmux_drive_pads[i].SetCharacter(PinmuxDrivePadCharacters[i]);
}
}
void UpdateSinglePinmuxPad(const PinmuxPadConfig &config) {
if (IsInitialized()) {
g_pinmux_pads[config.index].UpdatePinmuxPad(config.option, config.option_mask);
}
}
void UpdateSinglePinmuxDrivePad(const PinmuxDrivePadConfig &config) {
if (IsInitialized()) {
g_pinmux_drive_pads[config.index].UpdatePinmuxDrivePad(config.option, config.option_mask);
}
}
}

View file

@ -0,0 +1,38 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <stratosphere.hpp>
namespace ams::pinmux::driver::board::nintendo_nx {
struct PinmuxPadConfig {
u32 index;
u32 option;
u32 option_mask;
};
struct PinmuxDrivePadConfig {
u32 index;
u32 option;
u32 option_mask;
};
void InitializePlatformPads();
void UpdateSinglePinmuxPad(const PinmuxPadConfig &config);
void UpdateSinglePinmuxDrivePad(const PinmuxDrivePadConfig &config);
}

View file

@ -0,0 +1,55 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stratosphere.hpp>
#include "pinmux_select_board_impl.hpp"
namespace ams::pinmux::driver {
namespace {
constinit os::SdkMutex g_init_mutex;
constinit int g_init_count = 0;
}
void Initialize() {
std::scoped_lock lk(g_init_mutex);
if ((g_init_count++) == 0) {
if (!board::IsInitialized()) {
board::Initialize();
}
}
}
void Finalize() {
std::scoped_lock lk(g_init_mutex);
if ((--g_init_count) == 0) {
AMS_ASSERT(board::IsInitialized());
board::Finalize();
}
}
void SetInitialConfig() {
board::SetInitialConfig();
}
void SetInitialDrivePadConfig() {
board::SetInitialDrivePadConfig();
}
}

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2018-2020 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <stratosphere.hpp>
#if defined(ATMOSPHERE_BOARD_NINTENDO_NX)
#include "board/nintendo_nx/pinmux_board_driver_api.hpp"
namespace ams::pinmux::driver::board {
using namespace ams::pinmux::driver::board::nintendo_nx;
}
#else
#error "Unknown board for pinmux driver"
#endif