[PATCH] make new y-modem (PATCH v2) work on big-endian CPU
Antony Pavlov
antonynpavlov at gmail.com
Wed Nov 7 03:23:05 EST 2012
apply this commit after that one:
Author: Robert Jarzmik <robert.jarzmik at free.fr>
Date: Sun Nov 4 18:55:23 2012 +0100
commands: change Y-Modem implementation
---
lib/xymodem.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/lib/xymodem.c b/lib/xymodem.c
index 1469a9a..0e82ce2 100644
--- a/lib/xymodem.c
+++ b/lib/xymodem.c
@@ -257,8 +257,8 @@ static ssize_t xy_read_block(struct xyz_ctxt *proto, struct xy_block *blk,
uint64_t timeout)
{
ssize_t rc, data_len = 0;
- unsigned char hdr, seqs[2], crcs[2];
- int crc = 0, hdr_found = 0;
+ unsigned char hdr, seqs[2];
+ uint16_t crc = 0, hdr_found = 0;
uint64_t start = get_time_ns();
while (!hdr_found) {
@@ -308,12 +308,13 @@ static ssize_t xy_read_block(struct xyz_ctxt *proto, struct xy_block *blk,
switch (proto->crc_mode) {
case CRC_ADD8:
- rc = xy_gets(proto->cdev, proto->fifo, crcs, 1, timeout);
- crc = crcs[0];
+ rc = xy_gets(proto->cdev, proto->fifo,
+ (unsigned char *)&crc, 1, timeout);
break;
case CRC_CRC16:
- rc = xy_gets(proto->cdev, proto->fifo, crcs, 2, timeout);
- crc = be16_to_cpu(*(uint16_t *)crcs);
+ rc = xy_gets(proto->cdev, proto->fifo,
+ (unsigned char *)&crc, 2, timeout);
+ crc = be16_to_cpu(crc);
break;
case CRC_NONE:
rc = 0;
--
1.7.10.4
More information about the barebox
mailing list