diff --git a/source/arm11/hardware/i2c.c b/source/arm11/hardware/i2c.c index 746856a..4a43620 100644 --- a/source/arm11/hardware/i2c.c +++ b/source/arm11/hardware/i2c.c @@ -84,6 +84,21 @@ return base; } +void I2C_init(void) +{ + i2cWaitBusy(i2cGetBusRegsBase(0) + 1); + REG_I2C1_CNTEX = 2; // ? + REG_I2C1_SCL = 1280; // ? + + i2cWaitBusy(i2cGetBusRegsBase(1) + 1); + REG_I2C2_CNTEX = 2; // ? + REG_I2C2_SCL = 1280; // ? + + i2cWaitBusy(i2cGetBusRegsBase(2) + 1); + REG_I2C3_CNTEX = 2; // ? + REG_I2C3_SCL = 1280; // ? +} + static bool i2cStartTransfer(I2cDevice devId, u8 regAddr, bool read, vu8 *regsBase) { const u8 devAddr = i2cDevTable[devId].devAddr; @@ -136,21 +151,6 @@ else return false; } -void I2C_init(void) -{ - i2cWaitBusy(i2cGetBusRegsBase(0)); - REG_I2C1_CNTEX = 2; // ? - REG_I2C1_SCL = 1280; // ? - - i2cWaitBusy(i2cGetBusRegsBase(1)); - REG_I2C2_CNTEX = 2; // ? - REG_I2C2_SCL = 1280; // ? - - i2cWaitBusy(i2cGetBusRegsBase(2)); - REG_I2C3_CNTEX = 2; // ? - REG_I2C3_SCL = 1280; // ? -} - bool I2C_readRegBuf(I2cDevice devId, u8 regAddr, u8 *out, u32 size) { enterCriticalSection(); // TODO: Instead of blocking other interrupts we need locks.