diff --git a/include/arm11/hardware/mcu.h b/include/arm11/hardware/mcu.h index 89ff014..d4dde5b 100644 --- a/include/arm11/hardware/mcu.h +++ b/include/arm11/hardware/mcu.h @@ -22,6 +22,7 @@ +void MCU_init(void); void MCU_disableLEDs(void); void MCU_powerOnLCDs(void); void MCU_powerOffLCDs(void); diff --git a/source/arm11/hardware/i2c.c b/source/arm11/hardware/i2c.c index e9ceae1..156a647 100644 --- a/source/arm11/hardware/i2c.c +++ b/source/arm11/hardware/i2c.c @@ -93,6 +93,12 @@ void I2C_init(void) { + static bool initialized; + + /* run-once */ + if(initialized) + return; + I2cRegs *regs = i2cGetBusRegsBase(0); // Bus 1 i2cWaitBusy(regs); regs->REG_I2C_CNTEX = 2; // ? @@ -107,6 +113,8 @@ i2cWaitBusy(regs); regs->REG_I2C_CNTEX = 2; // ? regs->REG_I2C_SCL = 1280; // ? + + initialized = true; } static bool i2cStartTransfer(I2cDevice devId, u8 regAddr, bool read, I2cRegs *const regs) diff --git a/source/arm11/hardware/mcu.c b/source/arm11/hardware/mcu.c index 81bb220..7e1b5aa 100644 --- a/source/arm11/hardware/mcu.c +++ b/source/arm11/hardware/mcu.c @@ -38,6 +38,11 @@ +void MCU_init(void) +{ + I2C_init(); +} + void MCU_disableLEDs(void) { // disable wifi LED diff --git a/source/arm11/system.c b/source/arm11/system.c index 02c5ad5..32f45cc 100644 --- a/source/arm11/system.c +++ b/source/arm11/system.c @@ -42,6 +42,7 @@ I2C_init(); hidInit(); PXI_init(); + MCU_init(); systemRestoreHwState(); } else