Add hardware buttons, cpu booting, tsec booting.

This commit is contained in:
nwert
2018-03-15 12:26:19 +13:00
parent 6f6683e05b
commit 10b4b7d1cb
17 changed files with 1822 additions and 58 deletions

View File

@@ -1,17 +1,10 @@
#include <string.h>
#include "i2c.h"
#include "util.h"
static u32 i2c_addrs[] = { 0x7000C000, 0x7000C400, 0x7000C500, 0x7000C700, 0x7000D000, 0x7000D100 };
//TODO: memcpy
static void _i2c_cpy(void *dst, void *src, u32 len)
{
u8 *_dst = (u8 *)dst;
u8 *_src = (u8 *)src;
for(u32 i = 0; i < len; i++)
_dst[i] = _src[i];
}
static void _i2c_wait(vu32 *base)
{
base[0x23] = 0x25;
@@ -29,7 +22,7 @@ static int _i2c_send_pkt(u32 idx, u32 x, u8 *buf, u32 size)
return 0;
u32 tmp = 0;
_i2c_cpy(&tmp, buf, size);
memcpy(&tmp, buf, size);
vu32 *base = (vu32 *)i2c_addrs[idx];
base[1] = x << 1; //Set x (send mode).
@@ -65,7 +58,7 @@ static int _i2c_recv_pkt(u32 idx, u8 *buf, u32 size, u32 x)
return 0;
u32 tmp = base[3]; //Get value.
_i2c_cpy(buf, &tmp, size);
memcpy(buf, &tmp, size);
return 1;
}
@@ -97,7 +90,7 @@ u32 i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size)
return 0;
tmp[0] = y;
_i2c_cpy(tmp + 1, buf, size);
memcpy(tmp + 1, buf, size);
_i2c_send_pkt(idx, x, tmp, size + 1);
}