aboutsummaryrefslogtreecommitdiff
path: root/common/xyzModem.c
AgeCommit message (Collapse)AuthorFilesLines
2021-09-03xyz-modem: Allow to cancel transfer also by CTRL+CWIP/2021-09-03-xyz-modem-fixesPali Rohár1-0/+2
Currently it is possible to cancel loadx and loady commands by pressing CTRL+X (CAN character) at least 3 times quickly. All other U-Boot commands, including loadb and loads can be cancelled by CTRL+C. So allow it also in xyz-modem code used by loadx and loady commands. Implement it by handling CTRL+C (ETX character) in the same way as CTRL+X (CAN character). Due to how x/y-modem protocol works, it is required to press CTRL+C or CTRL+X at least 3 times quickly. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Simon Glass <sjg@chromium.org>
2021-09-03xyz-modem: Put xyzModem_stream_close debug diagnostic message into ZM_DEBUG()Pali Rohár1-2/+2
This is how all other debug / diagnostic messages are handled. Signed-off-by: Pali Rohár <pali@kernel.org>
2021-09-03xyz-modem: Fix x-modem "xyzModem_eof error" at the end of filePali Rohár1-0/+2
In x-modem protocol EOF is not an error state at the end of file. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Simon Glass <sjg@chromium.org>
2021-09-03xyz-modem: Fix crash after cancelling transferPali Rohár1-2/+2
Variable xyz.len is set to -1 on error. At the end xyzModem_stream_read() function calls memcpy() with length from variable xyz.len. If this variable is set to -1 then value passed to memcpy is casted to unsigned value, which means to copy whole address space. Which then cause U-Boot crash. E.g. on arm64 it cause CPU crash: "Synchronous Abort" handler, esr 0x96000006 Fix this issue by checking that value stored in xyz.len is valid prior trying to use it. Signed-off-by: Pali Rohár <pali@kernel.org> Acked-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2020-10-22common: rename getc() to getchar()Heinrich Schuchardt1-1/+1
The sandbox is built with the SDL2 library with invokes the X11 library which in turn calls getc(). But getc() in glibc is defined as int getc(FILE *) This does not match our definition. int getc(void) The sandbox crashes when called with parameter -l. Rename our library symbol getc() to getchar(). Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2019-10-08spl: Allow tiny printf() to be controlled in SPL and TPLSimon Glass1-1/+1
At present there is only one control for this and it is used for both SPL and TPL. But SPL might have a lot more space than TPL so the extra cost of a full printf() might be acceptable. Split the option into two, providing separate SPL and TPL controls. The TPL setting defaults to the same as SPL. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2019-01-15xyz-modem: Fix timeout loop waiting with WATCHDOGLokesh Vutla1-0/+2
Commit 2c77c0d6524eb ("xyz-modem: Change getc timeout loop waiting") fixes the loop delay when using a hw watchdog, assuming that watchdog kicking is taken care of by getc(). But the xyzmodem driver tries to do a getc only after confirming that a character is available like below: while (!tstc()) { till timeout; } if (tstc()) *c = getc(); and getc() does a watchdog reset only if it fails to see a character. In this case, getc() always sees a character and never does a watchdog reset. So to make sure that watchdog doesn't get reset while loading the file, do a watchdog reset just before starting the image loading. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Vignesh R <vigneshr@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2018-12-08lib: merge CRC16-CCITT into u-boot/crc.hPhilipp Tomsich1-1/+1
This merges the CRC16-CCITT headers into u-boot/crc.h to prepare for rolling CRC16 into the hash infrastructure. Given that CRC8, CRC32 and CRC32-C already have their prototypes in a single header file, it seems a good idea to also include CRC16-CCITT in the same. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
2018-05-10xyz-modem: va_start() must be matched by va_end()Heinrich Schuchardt1-8/+9
Every va_start() call must be matched by a va_end() call. scripts/checkpatch.pl required reformatting the complete function zm_dprintf(). Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2018-05-10Fix Ymodem build when DEBUG and CONFIG_USE_TINY_PRINTF are selectedAlex Kiernan1-1/+1
Attempting to build with both DEBUG and CONFIG_USE_TINY_PRINTF along with CONFIG_SPL_YMODEM_SUPPORT fails at link time: common/built-in.o: In function `zm_dprintf': common/xyzModem.c:190: undefined reference to `vsprintf' Disable Ymodem debug if we don't have full vsprintf support. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini1-2/+1
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
2017-04-08common/xyzModem.c: Do not use hard-coded address for debug bufferAlexandru Gagniuc1-9/+3
Under the plethora of #ifdefs, the xyzModem code hid this pearl: static char *zm_out = (char *) 0x00380000; This was only enabled when DEBUG is defined, so it's probably why it went unnoticed for so long. No idea what platform had memory at that exact location, but the this approach is extremely hacky. Use a static buffer instead. Signed-off-by: Alexandru Gagniuc <alex.g@adaptrum.com>
2017-04-08common/xyzModem.c: unifdef (Remove useless #ifdefs)Alexandru Gagniuc1-103/+0
Signed-off-by: Alexandru Gagniuc <alex.g@adaptrum.com>
2016-11-28xyz-modem: Change getc timeout loop waitingtomas.melin@vaisala.com1-5/+5
This fixes the loop delay when using a hw watchdog. In case a watchdog is used that accesses CPU registers, the defined delay of 20us in a tight loop will cause a huge delay in the actual timeout seen. This is caused by the fact that udelay will inheritantly call WATCHDOG_RESET. Together with the omap wdt implementation, the seen timeout increases up to around 30s. This makes the loop very slow and causes long delays when using the modem. Instead, implement the 2 sec loop by using the timer interface to know when to break out of the timeout loop. Watchdog kicking is taken care of by getc(). Signed-off-by: Tomas Melin <tomas.melin@vaisala.com>
2016-03-14lib/crc16.c: Rename cyg_crc16() to crc16_ccitt() and add crc start valueStefan Roese1-1/+1
The original name of this function is unclear. This patch renames this CRC16 function to crc16_ccitt() matching its name with its implementation. To make the usage of this function more flexible, lets add the CRC start value as parameter to this function. This way it can be used by other functions requiring different start values than 0 as well. Signed-off-by: Stefan Roese <sr@denx.de> Reviewed-by: Tom Rini <trini@konsulko.com>
2014-06-11common/xyzModem.c: move empty statements to newlineJeroen Hofstee1-1/+2
To prevent a warning for clang the loop without a body is made more clear by moving it to a line of its own. This prevents a clang warning. cc: sbabic@denx.de Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
2013-07-24Add eCos-2.0 SPDX-License-Identifier to source filesWolfgang Denk1-33/+1
Signed-off-by: Wolfgang Denk <wd@denx.de>
2012-11-04common/misc: sparse fixesKim Phillips1-3/+3
command.c:44:38: error: bad constant expression dlmalloc.c:1468:2: warning: Using plain integer as NULL pointer dlmalloc.c:1468:5: warning: Using plain integer as NULL pointer dlmalloc.c:2176:12: warning: Using plain integer as NULL pointer dlmalloc.c:2179:31: warning: Using plain integer as NULL pointer dlmalloc.c:2382:14: warning: Using plain integer as NULL pointer dlmalloc.c:2436:14: warning: Using plain integer as NULL pointer dlmalloc.c:2582:31: warning: Using plain integer as NULL pointer dlmalloc.c:2585:17: warning: Using plain integer as NULL pointer dlmalloc.c:2646:14: warning: Using plain integer as NULL pointer dlmalloc.c:2659:19: warning: Using plain integer as NULL pointer dlmalloc.c:2692:19: warning: Using plain integer as NULL pointer dlmalloc.c:2707:19: warning: Using plain integer as NULL pointer dlmalloc.c:2708:14: warning: Using plain integer as NULL pointer dlmalloc.c:2786:31: warning: Using plain integer as NULL pointer dlmalloc.c:2801:12: warning: Using plain integer as NULL pointer dlmalloc.c:2801:22: warning: Using plain integer as NULL pointer dlmalloc.c:2926:27: warning: Using plain integer as NULL pointer dlmalloc.c:2928:14: warning: Using plain integer as NULL pointer dlmalloc.c:2929:12: warning: Using plain integer as NULL pointer dlmalloc.c:3075:14: warning: Using plain integer as NULL pointer hush.c:292:14: warning: symbol 'last_return_code' was not declared. Should it be static? hush.c:293:5: warning: symbol 'nesting_level' was not declared. Should it be static? hush.c:2175:20: warning: Using plain integer as NULL pointer hush.c:2175:34: warning: Using plain integer as NULL pointer hush.c:2210:41: warning: Using plain integer as NULL pointer hush.c:2216:45: warning: Using plain integer as NULL pointer hush.c:2249:25: warning: Using plain integer as NULL pointer hush.c:2332:13: warning: symbol 'new_pipe' was not declared. Should it be static? hush.c:2390:5: warning: symbol 'reserved_word' was not declared. Should it be static? hush.c:2927:5: warning: symbol 'parse_stream' was not declared. Should it be static? hush.c:3127:6: warning: symbol 'mapset' was not declared. Should it be static? hush.c:3133:6: warning: symbol 'update_ifs_map' was not declared. Should it be static? hush.c:3161:5: warning: symbol 'parse_stream_outer' was not declared. Should it be static? hush.c:3295:34: warning: Using plain integer as NULL pointer hush.c:3631:5: warning: symbol 'do_showvar' was not declared. Should it be static image.c:1282:29: warning: Using plain integer as NULL pointer image.c:1315:41: warning: Using plain integer as NULL pointer image.c:1330:25: warning: Using plain integer as NULL pointer image.c:1706:25: warning: Using plain integer as NULL pointer main.c:510:10: warning: symbol 'hist_num' was not declared. Should it be static? main.c:512:5: warning: symbol 'hist_list' was not declared. Should it be static? main.c:513:6: warning: symbol 'hist_lines' was not declared. Should it be static? usb_storage.c:195:6: warning: symbol 'usb_show_progress' was not declared. Should it be static? usb_storage.c:440:48: warning: Using plain integer as NULL pointer usb_storage.c:503:5: warning: symbol 'usb_stor_BBB_comdat' was not declared. Should it be static? usb_storage.c:551:5: warning: symbol 'usb_stor_CB_comdat' was not declared. Should it be static? usb_storage.c:629:55: warning: Using plain integer as NULL pointer usb_storage.c:620:5: warning: symbol 'usb_stor_CBI_get_status' was not declared. Should it be static? usb_storage.c:675:43: warning: Using plain integer as NULL pointer usb_storage.c:668:5: warning: symbol 'usb_stor_BBB_clear_endpt_stall' was not declared. Should it be static? usb_storage.c:679:5: warning: symbol 'usb_stor_BBB_transport' was not declared. Should it be static? usb_storage.c:801:5: warning: symbol 'usb_stor_CB_transport' was not declared. Sh xyzModem.c:104:1: warning: symbol 'CYGACC_COMM_IF_GETC_TIMEOUT' was not declared. Should it be static? xyzModem.c:122:1: warning: symbol 'CYGACC_COMM_IF_PUTC' was not declared. Should it be static? xyzModem.c:169:1: warning: symbol 'parse_num' was not declared. Should it be stat note: hush.c's nesting_level deleted because not used. Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
2011-07-28cleanup: Fix typos and misspellings in various files.Mike Williams1-1/+1
Recieve/Receive recieve/receive Interupt/Interrupt interupt/interrupt Addres/Address addres/address Signed-off-by: Mike Williams <mike@mikebwilliams.com>
2009-07-19common: fix 'dummy' is used uninitialized in this function warningKim Phillips1-1/+1
fix this gcc 4.4 warning: xyzModem.c: In function 'xyzModem_stream_open': xyzModem.c:564: warning: 'dummy' is used uninitialized in this function Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
2006-08-31Coding Style cleanup.Wolfgang Denk1-445/+548
Patch by Stefano Babic, 31 Aug 2006
2006-07-21More code cleanupWolfgang Denk1-1/+1
2006-05-10Fix compile warnings in common/xyzModem.cStefan Roese1-6/+9
Patch by Stefan Roese, 10 May 2006
2006-04-16Some code cleanupWolfgang Denk1-140/+144
2006-03-30Add support for ymodem protocol (loady command).Markus Klotzbuecher1-0/+739
Patch by Stefano Babic, 29 Mar 2006