From: Sylwester Nawrocki Date: Wed, 25 Nov 2020 17:54:28 +0000 (+0100) Subject: thor: Add API for thor status notifications X-Git-Tag: accepted/tizen/unified/20241126.175211~309 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a5618693c41b83794928b91acc21768c9b4a37ec;p=platform%2Fkernel%2Fu-boot.git thor: Add API for thor status notifications This patch adds an empty by default thor_status_notify() function which can be reimplemented as required and which allows to add notifications of thor status and flashing progress, e.g. on external monitor. Change-Id: Ic1eaad7f3f5adbca404162b745a9287d5a9ae247 Signed-off-by: Sylwester Nawrocki --- diff --git a/cmd/thordown.c b/cmd/thordown.c index d1e1300957..17c0bb63cb 100644 --- a/cmd/thordown.c +++ b/cmd/thordown.c @@ -103,6 +103,8 @@ done: else lcd_clear(); #endif + if (ret != CMD_RET_SUCCESS) + thor_status_notify(THOR_NOTIFY_DOWNLOAD_FAILED, NULL); #endif bad_args: if (argc == 1) { @@ -113,6 +115,11 @@ bad_args: return ret; } +__weak void thor_status_notify(enum thor_notify_type type, + struct thor_notify_data *data) +{ +} + U_BOOT_CMD(thordown, CONFIG_SYS_MAXARGS, 1, do_thor_down, "TIZEN \"THOR\" downloader", " \n" diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c index 5b4b8b3106..ba7c90521d 100644 --- a/drivers/usb/gadget/f_thor.c +++ b/drivers/usb/gadget/f_thor.c @@ -554,6 +554,9 @@ static int thor_rx_data(struct udevice *udc) { struct thor_dev *dev = thor_func->dev; size_t data_to_rx, tmp; +#ifdef CONFIG_TIZEN + struct thor_notify_data nd; +#endif int status; data_to_rx = dev->out_req->length; @@ -581,6 +584,11 @@ static int thor_rx_data(struct udevice *udc) data_to_rx -= dev->out_req->actual; #ifdef CONFIG_TIZEN downloaded_file_size += dev->out_req->actual; + + nd.total_size = total_file_size; + nd.current_size = downloaded_file_size; + thor_status_notify(THOR_NOTIFY_PROGRESS, &nd); + #ifdef CONFIG_LCD /* TODO : Need to enable LCD*/ draw_thor_progress(total_file_size, downloaded_file_size); #endif @@ -713,6 +721,8 @@ int thor_init(struct udevice *udc) int power_key_cnt = 0; int ret; + thor_status_notify(THOR_NOTIFY_INIT, NULL); + #ifdef CONFIG_TIZEN #ifdef CONFIG_LCD /* TODO : Need to enable LCD*/ draw_thor_init_screen(); @@ -741,6 +751,8 @@ int thor_init(struct udevice *udc) draw_thor_connected(); #endif #endif + thor_status_notify(THOR_NOTIFY_CONNECTED, NULL); + thor_set_dma(thor_rx_data_buf, strlen("THOR")); /* detect the download request from Host PC */ ret = thor_rx_data(udc); diff --git a/include/thor.h b/include/thor.h index 3cb56b654a..1383f34ce8 100644 --- a/include/thor.h +++ b/include/thor.h @@ -17,4 +17,19 @@ int thor_handle(struct udevice *udc); int thor_init(struct udevice *udc); int thor_add(struct usb_configuration *c); + +enum thor_notify_type { + THOR_NOTIFY_INIT, + THOR_NOTIFY_CONNECTED, + THOR_NOTIFY_PROGRESS, + THOR_NOTIFY_DOWNLOAD_FAILED, +}; + +struct thor_notify_data { + u64 total_size; + u64 current_size; +}; + +void thor_status_notify(enum thor_notify_type type, + struct thor_notify_data *data); #endif /* __THOR_H_ */