[PATCH] xyz-modem: Select CRC16
Tom Rini
trini at konsulko.com
Sun Jun 7 16:55:44 CEST 2026
On Sun, Jun 07, 2026 at 11:56:50AM +0900, Daniel Palmer wrote:
> CONFIG_LOADB causes the xyzModem code to get built and that code depends
> on CONFIG_CRC16. If you don't have something else that selects CONFIG_CRC16
> you can unselect it and then the final link will fail:
>
> LD u-boot
> /usr/bin/m68k-linux-gnu-ld.bfd: common/xyzModem.o: in function `xyzModem_get_hdr':
> u-boot/common/xyzModem.c:388:(.text.xyzModem_get_hdr+0x17a): undefined reference to `crc16_ccitt'
>
> Since SPL/TPL can also use the xyzModem code create a Kconfig symbol for
> it, select CONFIG_CRC16 there and then select the new symbol from all of
> the users.
>
> Signed-off-by: Daniel Palmer <daniel at thingy.jp>
> ---
> cmd/Kconfig | 1 +
> common/Kconfig | 6 ++++++
> common/Makefile | 3 +--
> common/spl/Kconfig | 1 +
> common/spl/Kconfig.tpl | 1 +
> 5 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/cmd/Kconfig b/cmd/Kconfig
> index c71c6824a196..7e6044bad952 100644
> --- a/cmd/Kconfig
> +++ b/cmd/Kconfig
> @@ -1412,6 +1412,7 @@ config CMD_W1
> config CMD_LOADB
> bool "loadb"
> default y
> + select YMODEM
> help
> Load a binary file over serial line.
>
> diff --git a/common/Kconfig b/common/Kconfig
> index 8e8c733aa295..5eafe05047dc 100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -1274,3 +1274,9 @@ config IO_TRACE
> confirm that the driver behaves the same way before and after a code
> change. To add support for your architecture, add '#include
> <iotrace.h>' to the bottom of arch/<arch>/include/asm/io.h and test.
> +
> +config YMODEM
> + bool
> + select CRC16
> + help
> + Enable xyzModem library code
> diff --git a/common/Makefile b/common/Makefile
> index d62ea34599ed..bd809e2f34e9 100644
> --- a/common/Makefile
> +++ b/common/Makefile
> @@ -99,8 +99,7 @@ obj-$(CONFIG_$(PHASE_)LOG) += log.o
> obj-$(CONFIG_$(PHASE_)LOG_CONSOLE) += log_console.o
> obj-$(CONFIG_$(PHASE_)LOG_SYSLOG) += log_syslog.o
> obj-y += s_record.o
> -obj-$(CONFIG_CMD_LOADB) += xyzModem.o
> -obj-$(CONFIG_$(PHASE_)YMODEM_SUPPORT) += xyzModem.o
> +obj-$(CONFIG_YMODEM) += xyzModem.o
>
> obj-$(CONFIG_$(PHASE_)AVB_VERIFY) += avb_verify.o
> obj-$(CONFIG_$(PHASE_)STACKPROTECTOR) += stackprot.o
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index 5fa94098e498..2bd413cbdf12 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -1655,6 +1655,7 @@ config SPL_WATCHDOG
> config SPL_YMODEM_SUPPORT
> bool "Support loading using Ymodem"
> depends on SPL_SERIAL
> + select YMODEM
> help
> While loading from serial is slow it can be a useful backup when
> there is no other option. The Ymodem protocol provides a reliable
> diff --git a/common/spl/Kconfig.tpl b/common/spl/Kconfig.tpl
> index a535b61ecd35..7ab4666d3705 100644
> --- a/common/spl/Kconfig.tpl
> +++ b/common/spl/Kconfig.tpl
> @@ -336,6 +336,7 @@ config TPL_DM_SPI_FLASH
> config TPL_YMODEM_SUPPORT
> bool "Support loading using Ymodem"
> depends on TPL_SERIAL
> + select YMODEM
> help
> While loading from serial is slow it can be a useful backup when
> there is no other option. The Ymodem protocol provides a reliable
Good catch. But, as the Makefile hunk shows, we should be using
$(PHASE_) here for everything, so we need to add YMODEM_SUPPORT as a
main U-Boot symbol (CND_LOADB should select that) and the existing
xPL_YMODEM_SUPPORT should also select CRC16/xPL_CRC16 (so we're missing
TPL_CRC16, but have SPL_CRC16). Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20260607/3c755a59/attachment.sig>
More information about the U-Boot
mailing list