dfu: rename dfu_tftp_write() to dfu_write_by_name()

This function is essentially independent from tftp, and will also be
utilised in implementing UEFI capsule update in a later commit.
So just give it a more generic name.
In addition, a new configuration option, CONFIG_DFU_WRITE_ALT, was
introduced so that the file will be compiled with different options,
particularly one added in a later commit.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
AKASHI Takahiro 2020-10-29 13:47:41 +09:00 committed by Heinrich Schuchardt
parent 3139356446
commit 045fd8b13d
5 changed files with 41 additions and 22 deletions

View File

@ -324,8 +324,9 @@ got_update_file:
} }
} else if (fit_image_check_type(fit, noffset, } else if (fit_image_check_type(fit, noffset,
IH_TYPE_FIRMWARE)) { IH_TYPE_FIRMWARE)) {
ret = dfu_tftp_write(fit_image_name, update_addr, ret = dfu_write_by_name(fit_image_name, update_addr,
update_size, interface, devstring); update_size, interface,
devstring);
if (ret) if (ret)
return ret; return ret;
} }

View File

@ -14,8 +14,13 @@ config DFU_OVER_TFTP
depends on NET depends on NET
if DFU if DFU
config DFU_WRITE_ALT
bool
default n
config DFU_TFTP config DFU_TFTP
bool "DFU via TFTP" bool "DFU via TFTP"
select DFU_WRITE_ALT
select DFU_OVER_TFTP select DFU_OVER_TFTP
help help
This option allows performing update of DFU-managed medium with data This option allows performing update of DFU-managed medium with data

View File

@ -9,5 +9,5 @@ obj-$(CONFIG_$(SPL_)DFU_MTD) += dfu_mtd.o
obj-$(CONFIG_$(SPL_)DFU_NAND) += dfu_nand.o obj-$(CONFIG_$(SPL_)DFU_NAND) += dfu_nand.o
obj-$(CONFIG_$(SPL_)DFU_RAM) += dfu_ram.o obj-$(CONFIG_$(SPL_)DFU_RAM) += dfu_ram.o
obj-$(CONFIG_$(SPL_)DFU_SF) += dfu_sf.o obj-$(CONFIG_$(SPL_)DFU_SF) += dfu_sf.o
obj-$(CONFIG_$(SPL_)DFU_TFTP) += dfu_tftp.o obj-$(CONFIG_$(SPL_)DFU_WRITE_ALT) += dfu_alt.o
obj-$(CONFIG_$(SPL_)DFU_VIRT) += dfu_virt.o obj-$(CONFIG_$(SPL_)DFU_VIRT) += dfu_virt.o

View File

@ -10,8 +10,21 @@
#include <errno.h> #include <errno.h>
#include <dfu.h> #include <dfu.h>
int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len, /**
char *interface, char *devstring) * dfu_write_by_name() - write data to DFU medium
* @dfu_entity_name: Name of DFU entity to write
* @addr: Address of data buffer to write
* @len: Number of bytes
* @interface: Destination DFU medium (e.g. "mmc")
* @devstring: Instance number of destination DFU medium (e.g. "1")
*
* This function is storing data received on DFU supported medium which
* is specified by @dfu_entity_name.
*
* Return: 0 - on success, error code - otherwise
*/
int dfu_write_by_name(char *dfu_entity_name, unsigned int addr,
unsigned int len, char *interface, char *devstring)
{ {
char *s, *sb; char *s, *sb;
int alt_setting_num, ret; int alt_setting_num, ret;
@ -44,7 +57,7 @@ int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len,
free(sb); free(sb);
if (alt_setting_num < 0) { if (alt_setting_num < 0) {
pr_err("Alt setting [%d] to write not found!", pr_err("Alt setting [%d] to write not found!",
alt_setting_num); alt_setting_num);
ret = -ENODEV; ret = -ENODEV;
goto done; goto done;
} }

View File

@ -494,27 +494,27 @@ static inline int dfu_fill_entity_virt(struct dfu_entity *dfu, char *devstr,
#endif #endif
/** /**
* dfu_tftp_write() - write TFTP data to DFU medium * dfu_write_by_name() - write data to DFU medium
* @dfu_entity_name: Name of DFU entity to write
* @addr: Address of data buffer to write
* @len: Number of bytes
* @interface: Destination DFU medium (e.g. "mmc")
* @devstring: Instance number of destination DFU medium (e.g. "1")
* *
* This function is storing data received via TFTP on DFU supported medium. * This function is storing data received on DFU supported medium which
* is specified by @dfu_entity_name.
* *
* @dfu_entity_name: name of DFU entity to write * Return: 0 - on success, error code - otherwise
* @addr: address of data buffer to write
* @len: number of bytes
* @interface: destination DFU medium (e.g. "mmc")
* @devstring: instance number of destination DFU medium (e.g. "1")
*
* Return: 0 on success, otherwise error code
*/ */
#if CONFIG_IS_ENABLED(DFU_TFTP) #if CONFIG_IS_ENABLED(DFU_WRITE_ALT)
int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len, int dfu_write_by_name(char *dfu_entity_name, unsigned int addr,
char *interface, char *devstring); unsigned int len, char *interface, char *devstring);
#else #else
static inline int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, static inline int dfu_write_by_name(char *dfu_entity_name, unsigned int addr,
unsigned int len, char *interface, unsigned int len, char *interface,
char *devstring) char *devstring)
{ {
puts("TFTP write support for DFU not available!\n"); puts("write support for DFU not available!\n");
return -ENOSYS; return -ENOSYS;
} }
#endif #endif