mirror of
https://github.com/AsahiLinux/m1n1
synced 2024-11-29 18:00:18 +00:00
uartproxy: s/CRCERR/CSUMERR/ and actually use it
It's not a CRC. Signed-off-by: Hector Martin <marcan@marcan.st>
This commit is contained in:
parent
8104ec02c4
commit
88e1612c09
2 changed files with 16 additions and 9 deletions
|
@ -75,7 +75,7 @@ class UartInterface:
|
||||||
ST_BADCMD = -1
|
ST_BADCMD = -1
|
||||||
ST_INVAL = -2
|
ST_INVAL = -2
|
||||||
ST_XFERERR = -3
|
ST_XFERERR = -3
|
||||||
ST_CRCERR = -4
|
ST_CSUMERR = -4
|
||||||
|
|
||||||
CMD_LEN = 56
|
CMD_LEN = 56
|
||||||
REPLY_LEN = 36
|
REPLY_LEN = 36
|
||||||
|
@ -200,7 +200,7 @@ class UartInterface:
|
||||||
raise UartRemoteError("Reply error: Invalid argument")
|
raise UartRemoteError("Reply error: Invalid argument")
|
||||||
elif status == self.ST_XFERERR:
|
elif status == self.ST_XFERERR:
|
||||||
raise UartRemoteError("Reply error: Data transfer failed")
|
raise UartRemoteError("Reply error: Data transfer failed")
|
||||||
elif status == self.ST_CRCERR:
|
elif status == self.ST_CSUMERR:
|
||||||
raise UartRemoteError("Reply error: Data checksum failed")
|
raise UartRemoteError("Reply error: Data checksum failed")
|
||||||
else:
|
else:
|
||||||
raise UartRemoteError("Reply error: Unknown error (%d)"%status)
|
raise UartRemoteError("Reply error: Unknown error (%d)"%status)
|
||||||
|
@ -250,7 +250,7 @@ class UartInterface:
|
||||||
chexdump(data)
|
chexdump(data)
|
||||||
ccsum = self.checksum(data)
|
ccsum = self.checksum(data)
|
||||||
if checksum != ccsum:
|
if checksum != ccsum:
|
||||||
raise UartCRCError("Reply data checksum error: Expected 0x%08x, got 0x%08x"%(checksum, ccsum))
|
raise UartChecksumError("Reply data checksum error: Expected 0x%08x, got 0x%08x"%(checksum, ccsum))
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def readstruct(self, addr, stype):
|
def readstruct(self, addr, stype):
|
||||||
|
|
|
@ -44,11 +44,11 @@ typedef struct {
|
||||||
#define REQ_MEMWRITE 0x03AA55FF
|
#define REQ_MEMWRITE 0x03AA55FF
|
||||||
#define REQ_BOOT 0x04AA55FF
|
#define REQ_BOOT 0x04AA55FF
|
||||||
|
|
||||||
#define ST_OK 0
|
#define ST_OK 0
|
||||||
#define ST_BADCMD -1
|
#define ST_BADCMD -1
|
||||||
#define ST_INVAL -2
|
#define ST_INVAL -2
|
||||||
#define ST_XFRERR -3
|
#define ST_XFRERR -3
|
||||||
#define ST_CRCERR -4
|
#define ST_CSUMERR -4
|
||||||
|
|
||||||
// I just totally pulled this out of my arse
|
// I just totally pulled this out of my arse
|
||||||
// Noinline so that this can be bailed out by exc_guard = EXC_RETURN
|
// Noinline so that this can be bailed out by exc_guard = EXC_RETURN
|
||||||
|
@ -95,8 +95,15 @@ void uartproxy_run(void)
|
||||||
bytes = uart_read((&request.type) + 1, REQ_SIZE - 4);
|
bytes = uart_read((&request.type) + 1, REQ_SIZE - 4);
|
||||||
if (bytes != REQ_SIZE - 4)
|
if (bytes != REQ_SIZE - 4)
|
||||||
continue;
|
continue;
|
||||||
if (checksum(&(request.type), REQ_SIZE - 4) != request.checksum)
|
|
||||||
|
if (checksum(&(request.type), REQ_SIZE - 4) != request.checksum) {
|
||||||
|
memset(&reply, 0, sizeof(reply));
|
||||||
|
reply.type = request.type;
|
||||||
|
reply.status = ST_CSUMERR;
|
||||||
|
reply.checksum = checksum(&reply, REPLY_SIZE - 4);
|
||||||
|
uart_write(&reply, REPLY_SIZE);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
memset(&reply, 0, sizeof(reply));
|
memset(&reply, 0, sizeof(reply));
|
||||||
reply.type = request.type;
|
reply.type = request.type;
|
||||||
|
|
Loading…
Reference in a new issue