From: Sylwester Nawrocki Date: Wed, 25 Nov 2020 17:54:28 +0000 (+0100) Subject: thor: Add API for thor status notifications X-Git-Tag: submit/tizen/20211123.233157~72 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6f5ca13421aada6383999a69699ffabe1964c057;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 de00600c15..c1dc115db6 100644 --- a/cmd/thordown.c +++ b/cmd/thordown.c @@ -100,6 +100,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) { @@ -110,6 +112,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 30f764f79f..31cbb07d76 100644 --- a/drivers/usb/gadget/f_thor.c +++ b/drivers/usb/gadget/f_thor.c @@ -551,6 +551,9 @@ static struct usb_request *alloc_ep_req(struct usb_ep *ep, unsigned length) static int thor_rx_data(size_t *received) { struct thor_dev *dev = thor_func->dev; +#ifdef CONFIG_TIZEN + struct thor_notify_data nd; +#endif size_t data_to_rx; int status; @@ -579,6 +582,11 @@ static int thor_rx_data(size_t *received) 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 @@ -712,6 +720,8 @@ int thor_init(void) size_t received; int ret; + thor_status_notify(THOR_NOTIFY_INIT, NULL); + #ifdef CONFIG_TIZEN #ifdef CONFIG_LCD /* TODO : Need to enable LCD*/ draw_thor_init_screen(); @@ -738,6 +748,8 @@ int thor_init(void) 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(&received); diff --git a/include/thor.h b/include/thor.h index ee67ab0a27..171b8b8827 100644 --- a/include/thor.h +++ b/include/thor.h @@ -17,4 +17,19 @@ int thor_handle(void); int thor_init(void); 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_ */