* [U-Boot] [PATCH] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
@ 2014-04-17 17:31 Przemyslaw Marczak
2014-04-17 18:11 ` Marek Vasut
2014-04-18 7:48 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
0 siblings, 2 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-17 17:31 UTC (permalink / raw)
To: u-boot
Since dfu read/write operations needs to be flushed manually,
writing to filesystem on MMC by thor was broken. MMC raw write
actually is working fine because current dfu_flush() function
writes filesystem only. This commit adds dfu_flush() to f_thor
and now filesystem write is working.
This change was tested on Trats2 board.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
drivers/usb/gadget/f_thor.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index f5c0224..ba47945 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -204,14 +204,14 @@ static long long int download_head(unsigned long long total,
static int download_tail(long long int left, int cnt)
{
+ struct dfu_entity *dfu_entity = dfu_get_entity(alt_setting_num);
void *transfer_buffer = dfu_get_buf();
int ret;
debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
if (left) {
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, left, cnt++);
+ ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
if (ret) {
error("DFU write failed [%d]: left: %llu", ret, left);
return ret;
@@ -225,11 +225,16 @@ static int download_tail(long long int left, int cnt)
* This also frees memory malloc'ed by dfu_get_buf(), so no explicit
* need fo call dfu_free_buf() is needed.
*/
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, 0, cnt);
+ ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
if (ret)
error("DFU write failed [%d] cnt: %d", ret, cnt);
+ ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
+ if (ret) {
+ error("DFU flush failed!");
+ return ret;
+ }
+
return ret;
}
--
1.8.3.2
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-17 17:31 [U-Boot] [PATCH] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
@ 2014-04-17 18:11 ` Marek Vasut
2014-04-18 7:48 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
1 sibling, 0 replies; 17+ messages in thread
From: Marek Vasut @ 2014-04-17 18:11 UTC (permalink / raw)
To: u-boot
On Thursday, April 17, 2014 at 07:31:00 PM, Przemyslaw Marczak wrote:
> Since dfu read/write operations needs to be flushed manually,
> writing to filesystem on MMC by thor was broken. MMC raw write
> actually is working fine because current dfu_flush() function
> writes filesystem only. This commit adds dfu_flush() to f_thor
> and now filesystem write is working.
>
> This change was tested on Trats2 board.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Tom Rini <trini@ti.com>
> ---
> drivers/usb/gadget/f_thor.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
> index f5c0224..ba47945 100644
> --- a/drivers/usb/gadget/f_thor.c
> +++ b/drivers/usb/gadget/f_thor.c
> @@ -204,14 +204,14 @@ static long long int download_head(unsigned long long
> total,
>
> static int download_tail(long long int left, int cnt)
> {
> + struct dfu_entity *dfu_entity = dfu_get_entity(alt_setting_num);
> void *transfer_buffer = dfu_get_buf();
> int ret;
>
> debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
>
> if (left) {
> - ret = dfu_write(dfu_get_entity(alt_setting_num),
> - transfer_buffer, left, cnt++);
> + ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
> if (ret) {
> error("DFU write failed [%d]: left: %llu", ret, left);
> return ret;
> @@ -225,11 +225,16 @@ static int download_tail(long long int left, int cnt)
> * This also frees memory malloc'ed by dfu_get_buf(), so no explicit
> * need fo call dfu_free_buf() is needed.
> */
> - ret = dfu_write(dfu_get_entity(alt_setting_num),
> - transfer_buffer, 0, cnt);
> + ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
> if (ret)
> error("DFU write failed [%d] cnt: %d", ret, cnt);
Please split this into two patches, one which does cleanup (that's the part
above) and one which fixes the functionality (that's the part below).
> + ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
> + if (ret) {
> + error("DFU flush failed!");
> + return ret;
> + }
> +
> return ret;
> }
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail()
2014-04-17 17:31 [U-Boot] [PATCH] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-17 18:11 ` Marek Vasut
@ 2014-04-18 7:48 ` Przemyslaw Marczak
2014-04-18 7:48 ` [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
` (2 more replies)
1 sibling, 3 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-18 7:48 UTC (permalink / raw)
To: u-boot
In thor's download_tail() function, dfu_get_entity() is called
before each dfu_write() call and the returned entity pointers
are the same. So dfu_get_entity() can be called just once and
this patch changes this.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
Changes v2:
- separate fix and cleanup into two commits
drivers/usb/gadget/f_thor.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index f5c0224..231f9c0 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -204,14 +204,14 @@ static long long int download_head(unsigned long long total,
static int download_tail(long long int left, int cnt)
{
+ struct dfu_entity *dfu_entity = dfu_get_entity(alt_setting_num);
void *transfer_buffer = dfu_get_buf();
int ret;
debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
if (left) {
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, left, cnt++);
+ ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
if (ret) {
error("DFU write failed [%d]: left: %llu", ret, left);
return ret;
@@ -225,8 +225,7 @@ static int download_tail(long long int left, int cnt)
* This also frees memory malloc'ed by dfu_get_buf(), so no explicit
* need fo call dfu_free_buf() is needed.
*/
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, 0, cnt);
+ ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
if (ret)
error("DFU write failed [%d] cnt: %d", ret, cnt);
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-18 7:48 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
@ 2014-04-18 7:48 ` Przemyslaw Marczak
2014-04-21 15:08 ` Marek Vasut
2014-04-21 15:08 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Marek Vasut
2014-04-23 9:43 ` [U-Boot] [PATCH v3 " Przemyslaw Marczak
2 siblings, 1 reply; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-18 7:48 UTC (permalink / raw)
To: u-boot
Since dfu read/write operations needs to be flushed manually,
writing to filesystem on MMC by thor was broken. MMC raw write
actually is working fine because current dfu_flush() function
writes filesystem only. This commit adds dfu_flush() to f_thor
and now filesystem write is working.
This change was tested on Trats2 board.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
Changes v2:
- separate fix and cleanup into two commits
drivers/usb/gadget/f_thor.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index 231f9c0..ba47945 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -229,6 +229,12 @@ static int download_tail(long long int left, int cnt)
if (ret)
error("DFU write failed [%d] cnt: %d", ret, cnt);
+ ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
+ if (ret) {
+ error("DFU flush failed!");
+ return ret;
+ }
+
return ret;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-18 7:48 ` [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
@ 2014-04-21 15:08 ` Marek Vasut
0 siblings, 0 replies; 17+ messages in thread
From: Marek Vasut @ 2014-04-21 15:08 UTC (permalink / raw)
To: u-boot
On Friday, April 18, 2014 at 09:48:25 AM, Przemyslaw Marczak wrote:
> Since dfu read/write operations needs to be flushed manually,
> writing to filesystem on MMC by thor was broken. MMC raw write
> actually is working fine because current dfu_flush() function
> writes filesystem only. This commit adds dfu_flush() to f_thor
> and now filesystem write is working.
>
> This change was tested on Trats2 board.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Tom Rini <trini@ti.com>
Acked-by: Marek Vasut <marex@denx.de>
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail()
2014-04-18 7:48 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-04-18 7:48 ` [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
@ 2014-04-21 15:08 ` Marek Vasut
2014-04-23 9:43 ` [U-Boot] [PATCH v3 " Przemyslaw Marczak
2 siblings, 0 replies; 17+ messages in thread
From: Marek Vasut @ 2014-04-21 15:08 UTC (permalink / raw)
To: u-boot
On Friday, April 18, 2014 at 09:48:24 AM, Przemyslaw Marczak wrote:
> In thor's download_tail() function, dfu_get_entity() is called
> before each dfu_write() call and the returned entity pointers
> are the same. So dfu_get_entity() can be called just once and
> this patch changes this.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Tom Rini <trini@ti.com>
Acked-by: Marek Vasut <marex@denx.de>
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH v3 1/2] usb:gadget:f_thor: code cleanup in function download_tail()
2014-04-18 7:48 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-04-18 7:48 ` [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-21 15:08 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Marek Vasut
@ 2014-04-23 9:43 ` Przemyslaw Marczak
2014-04-23 9:43 ` [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2 siblings, 2 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-23 9:43 UTC (permalink / raw)
To: u-boot
In thor's download_tail() function, dfu_get_entity() is called
before each dfu_write() call and the returned entity pointers
are the same. So dfu_get_entity() can be called just once and
this patch changes this.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
Changes v2:
- separate fix and cleanup into two commits
Changes v3:
- download_tail(): add exit label
---
drivers/usb/gadget/f_thor.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index f5c0224..1190c74 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -204,17 +204,17 @@ static long long int download_head(unsigned long long total,
static int download_tail(long long int left, int cnt)
{
+ struct dfu_entity *dfu_entity = dfu_get_entity(alt_setting_num);
void *transfer_buffer = dfu_get_buf();
int ret;
debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
if (left) {
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, left, cnt++);
+ ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
if (ret) {
error("DFU write failed [%d]: left: %llu", ret, left);
- return ret;
+ goto exit;
}
}
@@ -225,11 +225,11 @@ static int download_tail(long long int left, int cnt)
* This also frees memory malloc'ed by dfu_get_buf(), so no explicit
* need fo call dfu_free_buf() is needed.
*/
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, 0, cnt);
+ ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
if (ret)
error("DFU write failed [%d] cnt: %d", ret, cnt);
+exit:
return ret;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-23 9:43 ` [U-Boot] [PATCH v3 " Przemyslaw Marczak
@ 2014-04-23 9:43 ` Przemyslaw Marczak
2014-04-23 12:40 ` Lukasz Majewski
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
1 sibling, 1 reply; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-23 9:43 UTC (permalink / raw)
To: u-boot
Since dfu read/write operations needs to be flushed manually,
writing to filesystem on MMC by thor was broken. MMC raw write
actually is working fine because current dfu_flush() function
writes filesystem only. This commit adds dfu_flush() to f_thor
and now filesystem write is working.
This change was tested on Trats2 board.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
Changes v2:
- separate fix and cleanup into two commits
Changes v3:
- none
---
drivers/usb/gadget/f_thor.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index 1190c74..1420606 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -226,8 +226,14 @@ static int download_tail(long long int left, int cnt)
* need fo call dfu_free_buf() is needed.
*/
ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
- if (ret)
+ if (ret) {
error("DFU write failed [%d] cnt: %d", ret, cnt);
+ goto exit;
+ }
+
+ ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
+ if (ret)
+ error("DFU flush failed!");
exit:
return ret;
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-23 9:43 ` [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
@ 2014-04-23 12:40 ` Lukasz Majewski
2014-04-23 12:46 ` Marek Vasut
0 siblings, 1 reply; 17+ messages in thread
From: Lukasz Majewski @ 2014-04-23 12:40 UTC (permalink / raw)
To: u-boot
Hi Przemyslaw,
> Since dfu read/write operations needs to be flushed manually,
> writing to filesystem on MMC by thor was broken. MMC raw write
> actually is working fine because current dfu_flush() function
> writes filesystem only. This commit adds dfu_flush() to f_thor
> and now filesystem write is working.
>
> This change was tested on Trats2 board.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Tom Rini <trini@ti.com>
>
> ---
> Changes v2:
> - separate fix and cleanup into two commits
>
> Changes v3:
> - none
>
> ---
> drivers/usb/gadget/f_thor.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
> index 1190c74..1420606 100644
> --- a/drivers/usb/gadget/f_thor.c
> +++ b/drivers/usb/gadget/f_thor.c
> @@ -226,8 +226,14 @@ static int download_tail(long long int left, int
> cnt)
> * need fo call dfu_free_buf() is needed.
> */
> ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
I think this dfu_write() call can be now removed, since what we
expect now is to call the dfu_flush() here.
After this change please accordingly update the above comment.
> - if (ret)
> + if (ret) {
> error("DFU write failed [%d] cnt: %d", ret, cnt);
> + goto exit;
> + }
> +
> + ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
> + if (ret)
> + error("DFU flush failed!");
>
> exit:
> return ret;
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
^ permalink raw reply [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-23 12:40 ` Lukasz Majewski
@ 2014-04-23 12:46 ` Marek Vasut
0 siblings, 0 replies; 17+ messages in thread
From: Marek Vasut @ 2014-04-23 12:46 UTC (permalink / raw)
To: u-boot
On Wednesday, April 23, 2014 at 02:40:52 PM, Lukasz Majewski wrote:
> Hi Przemyslaw,
>
> > Since dfu read/write operations needs to be flushed manually,
> > writing to filesystem on MMC by thor was broken. MMC raw write
> > actually is working fine because current dfu_flush() function
> > writes filesystem only. This commit adds dfu_flush() to f_thor
> > and now filesystem write is working.
> >
> > This change was tested on Trats2 board.
> >
> > Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> > Cc: Lukasz Majewski <l.majewski@samsung.com>
> > Cc: Marek Vasut <marex@denx.de>
> > Cc: Heiko Schocher <hs@denx.de>
> > Cc: Tom Rini <trini@ti.com>
Please submit new patches on top of u-boot-usb/master , thanks.
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail()
2014-04-23 9:43 ` [U-Boot] [PATCH v3 " Przemyslaw Marczak
2014-04-23 9:43 ` [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
@ 2014-04-28 16:57 ` Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 2/3] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
` (3 more replies)
1 sibling, 4 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-28 16:57 UTC (permalink / raw)
To: u-boot
In thor's download_tail() function, dfu_get_entity() is called
before each dfu_write() call and the returned entity pointers
are the same. So dfu_get_entity() can be called just once and
this patch changes this.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
Changes v2:
- separate fix and cleanup into two commits
Changes v3:
- download_tail(): add exit label
Changes v4:
- none
---
drivers/usb/gadget/f_thor.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index f5c0224..1190c74 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -204,17 +204,17 @@ static long long int download_head(unsigned long long total,
static int download_tail(long long int left, int cnt)
{
+ struct dfu_entity *dfu_entity = dfu_get_entity(alt_setting_num);
void *transfer_buffer = dfu_get_buf();
int ret;
debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
if (left) {
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, left, cnt++);
+ ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
if (ret) {
error("DFU write failed [%d]: left: %llu", ret, left);
- return ret;
+ goto exit;
}
}
@@ -225,11 +225,11 @@ static int download_tail(long long int left, int cnt)
* This also frees memory malloc'ed by dfu_get_buf(), so no explicit
* need fo call dfu_free_buf() is needed.
*/
- ret = dfu_write(dfu_get_entity(alt_setting_num),
- transfer_buffer, 0, cnt);
+ ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
if (ret)
error("DFU write failed [%d] cnt: %d", ret, cnt);
+exit:
return ret;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v4 2/3] usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
@ 2014-04-28 16:57 ` Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 3/3] drivers:dfu: dfu_flush(): add raw data flush to complete Przemyslaw Marczak
` (2 subsequent siblings)
3 siblings, 0 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-28 16:57 UTC (permalink / raw)
To: u-boot
Since dfu read/write operations needs to be flushed manually,
writing to filesystem on MMC by thor was broken. MMC raw write
actually is working fine because current dfu_flush() function
writes filesystem only. This commit adds dfu_flush() to f_thor
and now filesystem write is working.
This change was tested on Trats2 board.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
---
Changes v2:
- separate fix and cleanup into two commits
Changes v3:
- none
Changes v4:
- download_tail(): remove dfu_write with 0 size
---
drivers/usb/gadget/f_thor.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c
index 1190c74..a3ab6b9 100644
--- a/drivers/usb/gadget/f_thor.c
+++ b/drivers/usb/gadget/f_thor.c
@@ -219,15 +219,15 @@ static int download_tail(long long int left, int cnt)
}
/*
- * To store last "packet" DFU storage backend requires dfu_write with
- * size parameter equal to 0
+ * To store last "packet" or write file from buffer to filesystem
+ * DFU storage backend requires dfu_flush
*
* This also frees memory malloc'ed by dfu_get_buf(), so no explicit
* need fo call dfu_free_buf() is needed.
*/
- ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
+ ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
if (ret)
- error("DFU write failed [%d] cnt: %d", ret, cnt);
+ error("DFU flush failed!");
exit:
return ret;
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v4 3/3] drivers:dfu: dfu_flush(): add raw data flush to complete
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 2/3] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
@ 2014-04-28 16:57 ` Przemyslaw Marczak
2014-05-06 6:30 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-05-09 7:21 ` Przemyslaw Marczak
3 siblings, 0 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-04-28 16:57 UTC (permalink / raw)
To: u-boot
Before dfu write and flush operations separation,
dfu write data was flushed by host download request
with len of zero size.
Since above change manually calling dfu write with zero
size has non sense (e.g. in THOR). This should be done by
flush operation.
So now dfu_write_buffer_drain() is called in dfu_flush().
If there is any raw data to flush (like it can be in thor)
then it will be physically written to medium.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
---
Changes v4:
- new commit
---
drivers/dfu/dfu.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 8a09aaf..94e9116 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -131,6 +131,10 @@ int dfu_flush(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
{
int ret = 0;
+ ret = dfu_write_buffer_drain(dfu);
+ if (ret)
+ return ret;
+
if (dfu->flush_medium)
ret = dfu->flush_medium(dfu);
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail()
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 2/3] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 3/3] drivers:dfu: dfu_flush(): add raw data flush to complete Przemyslaw Marczak
@ 2014-05-06 6:30 ` Przemyslaw Marczak
2014-05-09 7:21 ` Przemyslaw Marczak
3 siblings, 0 replies; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-05-06 6:30 UTC (permalink / raw)
To: u-boot
Hello Heiko,
On 04/28/2014 06:57 PM, Przemyslaw Marczak wrote:
> In thor's download_tail() function, dfu_get_entity() is called
> before each dfu_write() call and the returned entity pointers
> are the same. So dfu_get_entity() can be called just once and
> this patch changes this.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Tom Rini <trini@ti.com>
>
> ---
> Changes v2:
> - separate fix and cleanup into two commits
>
> Changes v3:
> - download_tail(): add exit label
>
> Changes v4:
> - none
> ---
Could you look at those changes, please?
Thank you
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail()
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
` (2 preceding siblings ...)
2014-05-06 6:30 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
@ 2014-05-09 7:21 ` Przemyslaw Marczak
2014-05-09 8:35 ` Lukasz Majewski
3 siblings, 1 reply; 17+ messages in thread
From: Przemyslaw Marczak @ 2014-05-09 7:21 UTC (permalink / raw)
To: u-boot
Hello Marek,
On 04/28/2014 06:57 PM, Przemyslaw Marczak wrote:
> In thor's download_tail() function, dfu_get_entity() is called
> before each dfu_write() call and the returned entity pointers
> are the same. So dfu_get_entity() can be called just once and
> this patch changes this.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Lukasz Majewski <l.majewski@samsung.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Tom Rini <trini@ti.com>
>
> ---
> Changes v2:
> - separate fix and cleanup into two commits
>
> Changes v3:
> - download_tail(): add exit label
>
> Changes v4:
> - none
I've checked the u-boot-usb/master tree and I found that one commit of
this patch set is missed, because it is v3 (there was only two commits).
Could you please apply the patch set version 4?
Thank you,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
^ permalink raw reply [flat|nested] 17+ messages in thread* [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail()
2014-05-09 7:21 ` Przemyslaw Marczak
@ 2014-05-09 8:35 ` Lukasz Majewski
2014-05-10 9:41 ` Marek Vasut
0 siblings, 1 reply; 17+ messages in thread
From: Lukasz Majewski @ 2014-05-09 8:35 UTC (permalink / raw)
To: u-boot
Hi Przemyslaw, Marek,
> Hello Marek,
>
> On 04/28/2014 06:57 PM, Przemyslaw Marczak wrote:
> > In thor's download_tail() function, dfu_get_entity() is called
> > before each dfu_write() call and the returned entity pointers
> > are the same. So dfu_get_entity() can be called just once and
> > this patch changes this.
> >
> > Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> > Cc: Lukasz Majewski <l.majewski@samsung.com>
> > Cc: Marek Vasut <marex@denx.de>
> > Cc: Heiko Schocher <hs@denx.de>
> > Cc: Tom Rini <trini@ti.com>
> >
> > ---
> > Changes v2:
> > - separate fix and cleanup into two commits
> >
> > Changes v3:
> > - download_tail(): add exit label
> >
> > Changes v4:
> > - none
>
> I've checked the u-boot-usb/master tree and I found that one commit
> of this patch set is missed, because it is v3 (there was only two
> commits). Could you please apply the patch set version 4?
I've discussed this issue with Przemek, and we agreed that Przemek will
prepare diff patch between version 3, which is already in mainline and
version 4.
Then, after ML review, I will pull them to u-boot-dfu branch.
Marek, does it work for you?
>
> Thank you,
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail()
2014-05-09 8:35 ` Lukasz Majewski
@ 2014-05-10 9:41 ` Marek Vasut
0 siblings, 0 replies; 17+ messages in thread
From: Marek Vasut @ 2014-05-10 9:41 UTC (permalink / raw)
To: u-boot
On Friday, May 09, 2014 at 10:35:54 AM, Lukasz Majewski wrote:
> Hi Przemyslaw, Marek,
>
> > Hello Marek,
> >
> > On 04/28/2014 06:57 PM, Przemyslaw Marczak wrote:
> > > In thor's download_tail() function, dfu_get_entity() is called
> > > before each dfu_write() call and the returned entity pointers
> > > are the same. So dfu_get_entity() can be called just once and
> > > this patch changes this.
> > >
> > > Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> > > Cc: Lukasz Majewski <l.majewski@samsung.com>
> > > Cc: Marek Vasut <marex@denx.de>
> > > Cc: Heiko Schocher <hs@denx.de>
> > > Cc: Tom Rini <trini@ti.com>
> > >
> > > ---
> > > Changes v2:
> > > - separate fix and cleanup into two commits
> > >
> > > Changes v3:
> > > - download_tail(): add exit label
> > >
> > > Changes v4:
> > > - none
> >
> > I've checked the u-boot-usb/master tree and I found that one commit
> > of this patch set is missed, because it is v3 (there was only two
> > commits). Could you please apply the patch set version 4?
>
> I've discussed this issue with Przemek, and we agreed that Przemek will
> prepare diff patch between version 3, which is already in mainline and
> version 4.
>
> Then, after ML review, I will pull them to u-boot-dfu branch.
>
> Marek, does it work for you?
Yes, thanks.
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2014-05-10 9:41 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-17 17:31 [U-Boot] [PATCH] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-17 18:11 ` Marek Vasut
2014-04-18 7:48 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-04-18 7:48 ` [U-Boot] [PATCH v2 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-21 15:08 ` Marek Vasut
2014-04-21 15:08 ` [U-Boot] [PATCH v2 1/2] usb:gadget:f_thor: code cleanup in function download_tail() Marek Vasut
2014-04-23 9:43 ` [U-Boot] [PATCH v3 " Przemyslaw Marczak
2014-04-23 9:43 ` [U-Boot] [PATCH v3 2/2] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-23 12:40 ` Lukasz Majewski
2014-04-23 12:46 ` Marek Vasut
2014-04-28 16:57 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 2/3] usb:gadget:f_thor: fix write to filesystem by add dfu_flush() Przemyslaw Marczak
2014-04-28 16:57 ` [U-Boot] [PATCH v4 3/3] drivers:dfu: dfu_flush(): add raw data flush to complete Przemyslaw Marczak
2014-05-06 6:30 ` [U-Boot] [PATCH v4 1/3] usb:gadget:f_thor: code cleanup in function download_tail() Przemyslaw Marczak
2014-05-09 7:21 ` Przemyslaw Marczak
2014-05-09 8:35 ` Lukasz Majewski
2014-05-10 9:41 ` Marek Vasut
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox