Add hardware buttons, cpu booting, tsec booting.
This commit is contained in:
17
hwinit/i2c.c
17
hwinit/i2c.c
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user