Move i2c delay to i2c.c

This commit is contained in:
Aurora Wright 2017-06-04 18:32:09 +02:00
parent 1d2909ea03
commit cab54d1b31
3 changed files with 17 additions and 10 deletions

View File

@ -439,8 +439,6 @@ bool checkFirmPayload(u32 payloadSize)
for(u32 i = 0; i < 4; i++)
{
__attribute__((aligned(4))) u8 hash[0x20];
FirmSection *section = &firm->section[i];
//Allow empty sections
@ -457,6 +455,8 @@ bool checkFirmPayload(u32 payloadSize)
(!inRange((u32)section->address, (u32)section->address + section->size, 0x20000000, 0x20000000 + 0x8000000))))
return false;
__attribute__((aligned(4))) u8 hash[0x20];
sha(hash, (u8 *)firm + section->offset, section->size, SHA_256_MODE);
if(memcmp(hash, section->hash, 0x20) != 0)

View File

@ -24,6 +24,7 @@
* Thanks to the everyone who contributed in the development of this file
*/
#include "utils.h"
#include "i2c.h"
//-----------------------------------------------------------------------------
@ -118,9 +119,10 @@ static bool i2cSelectRegister(u8 bus_id, u8 reg)
u8 i2cReadRegister(u8 dev_id, u8 reg)
{
u8 bus_id = i2cGetDeviceBusId(dev_id),
dev_addr = i2cGetDeviceRegAddr(dev_id);
dev_addr = i2cGetDeviceRegAddr(dev_id),
ret = 0xFF;
for(u32 i = 0; i < 8; i++)
for(u32 i = 0; i < 8 && ret == 0xFF; i++)
{
if(i2cSelectDevice(bus_id, dev_addr) && i2cSelectRegister(bus_id, reg))
{
@ -130,14 +132,16 @@ u8 i2cReadRegister(u8 dev_id, u8 reg)
i2cStop(bus_id, 1);
i2cWaitBusy(bus_id);
return *i2cGetDataReg(bus_id);
ret = *i2cGetDataReg(bus_id);
}
}
*i2cGetCntReg(bus_id) = 0xC5;
i2cWaitBusy(bus_id);
}
return 0xFF;
wait(3ULL);
return ret;
}
bool i2cWriteRegister(u8 dev_id, u8 reg, u8 data)
@ -145,7 +149,9 @@ bool i2cWriteRegister(u8 dev_id, u8 reg, u8 data)
u8 bus_id = i2cGetDeviceBusId(dev_id),
dev_addr = i2cGetDeviceRegAddr(dev_id);
for(u32 i = 0; i < 8; i++)
bool ret = false;
for(u32 i = 0; i < 8 && !ret; i++)
{
if(i2cSelectDevice(bus_id, dev_addr) && i2cSelectRegister(bus_id, reg))
{
@ -154,11 +160,13 @@ bool i2cWriteRegister(u8 dev_id, u8 reg, u8 data)
*i2cGetCntReg(bus_id) = 0xC1;
i2cStop(bus_id, 0);
if(i2cGetResult(bus_id)) return true;
if(i2cGetResult(bus_id)) ret = true;
}
*i2cGetCntReg(bus_id) = 0xC5;
i2cWaitBusy(bus_id);
}
return false;
wait(3ULL);
return ret;
}

View File

@ -115,7 +115,6 @@ void initScreens(void)
//Turn on backlight
i2cWriteRegister(I2C_DEV_MCU, 0x22, 0x2A);
wait(3ULL);
}
else updateBrightness(MULTICONFIG(BRIGHTNESS));