All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mateusz Zalega <m.zalega@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 7/9] dfu:mmc: raw data write fix
Date: Mon, 13 Jan 2014 14:34:07 +0100	[thread overview]
Message-ID: <52D3EB4F.70403@samsung.com> (raw)
In-Reply-To: <52CF7F3A.9020706@samsung.com>

On 01/10/14 06:03, Jaehoon Chung wrote:
> This patch should be separated with dfu and mmc.

ACK, because we're going to remove the bl_len assertion, see below.

> On 01/09/2014 11:31 PM, Mateusz Zalega wrote:
>> When user attempted to perform a raw write using DFU (vide
>> dfu_fill_entity_mmc) with MMC interface not initialized before,
>> get_mmc_blk_size() reported invalid (zero) block size - it wasn't
>> possible to write ie. a new u-boot image.
>>
>> This commit fixes that by initializing device in get_mmc_blk_size() when
>> needed.
>>
>> Tested on Samsung Goni.
>>
>> v2 changes:
>> - code cleanup
>> - minor dfu_alt_info format change
>>
>> v3 changes:
>> - moved invalid block length check to mmc core
>> - removed redundant 'has_init' check
>>
>> Change-Id: Icb50bb9f805a9a78848acd19f682fad474cb9082
>> Signed-off-by: Mateusz Zalega <m.zalega@samsung.com>
>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>> Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
>> Cc: Minkyu Kang <mk7.kang@samsung.com>
>> ---
>>  drivers/dfu/dfu_mmc.c        | 106 ++++++++++++++++++++++++++-----------------
>>  drivers/mmc/mmc.c            |  13 ++++--
>>  include/configs/am335x_evm.h |   8 ++--
>>  include/configs/trats.h      |   2 +-
>>  include/configs/trats2.h     |   2 +-
>>  include/dfu.h                |   5 --
>>  6 files changed, 80 insertions(+), 56 deletions(-)
>>
>> diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c
(...)
>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>> index e1461a9..f2fa230 100644
>> --- a/drivers/mmc/mmc.c
>> +++ b/drivers/mmc/mmc.c
>> @@ -15,6 +15,7 @@
>>  #include <malloc.h>
>>  #include <linux/list.h>
>>  #include <div64.h>
>> +#include <errno.h>
>>  #include "mmc_private.h"
>>  
>>  /* Set block count limit because of 16 bit register limit on some hardware*/
>> @@ -1266,17 +1267,23 @@ static int mmc_complete_init(struct mmc *mmc)
>>  
>>  int mmc_init(struct mmc *mmc)
>>  {
>> +	if (mmc->has_init)
>> +		return 0;
>> +
> What difference before?

It doesn't have to go through get_timer(). The effect, although
negligible, saves some cycles.

>>  	int err = IN_PROGRESS;
>>  	unsigned start = get_timer(0);
>>  
>> -	if (mmc->has_init)
>> -		return 0;
>>  	if (!mmc->init_in_progress)
>>  		err = mmc_start_init(mmc);
>> -
> Need not to change.
> 
>>  	if (!err || err == IN_PROGRESS)
>>  		err = mmc_complete_init(mmc);
>> +
> Ditto.

NAK, it improves code readability.

>>  	debug("%s: %d, time %lu\n", __func__, err, get_timer(start));
>> +
>> +	if (!mmc->read_bl_len || !mmc->write_bl_len) {
>> +		error("invalid block length\n");
>> +		return -ENODEV;
>> +	}
> I know mmc->read_bl_len and write_bl_len is set at init time.
> Why this condition needs?

I added it as a countermeasure after fixing the bug and mistook its
purpose when writing a late update to this patch, my bad.

Given the circumstances it might be a sound assertion, but we shouldn't
clobber the codebase that we aim to optimize for size, should we.

ACK, will remove.

>>  	return err;
>>  }
>>  
>> diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
>> index 8af4d6a..d76962f 100644
>> --- a/include/configs/am335x_evm.h
>> +++ b/include/configs/am335x_evm.h
>> @@ -312,10 +312,10 @@
>>  	"boot part 0 1;" \
>>  	"rootfs part 0 2;" \
>>  	"MLO fat 0 1;" \
>> -	"MLO.raw mmc 100 100;" \
>> -	"u-boot.img.raw mmc 300 400;" \
>> -	"spl-os-args.raw mmc 80 80;" \
>> -	"spl-os-image.raw mmc 900 2000;" \
>> +	"MLO.raw mmc 0x100 0x100;" \
>> +	"u-boot.img.raw mmc 0x300 0x400;" \
>> +	"spl-os-args.raw mmc 0x80 0x80;" \
>> +	"spl-os-image.raw mmc 0x900 0x2000;" \
>>  	"spl-os-args fat 0 1;" \
>>  	"spl-os-image fat 0 1;" \
>>  	"u-boot.img fat 0 1;" \
>> diff --git a/include/configs/trats.h b/include/configs/trats.h
>> index 6cd15c2..ed3b278 100644
>> --- a/include/configs/trats.h
>> +++ b/include/configs/trats.h
>> @@ -140,7 +140,7 @@
>>  	"name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \
>>  
>>  #define CONFIG_DFU_ALT \
>> -	"u-boot mmc 80 400;" \
>> +	"u-boot raw 0x80 0x400;" \
>>  	"uImage ext4 0 2;" \
>>  	"exynos4210-trats.dtb ext4 0 2;" \
>>  	""PARTS_ROOT" part 0 5\0"
>> diff --git a/include/configs/trats2.h b/include/configs/trats2.h
>> index 5d86a3d..a22be63 100644
>> --- a/include/configs/trats2.h
>> +++ b/include/configs/trats2.h
>> @@ -169,7 +169,7 @@
>>  	"name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \
>>  
>>  #define CONFIG_DFU_ALT \
>> -	"u-boot mmc 80 800;" \
>> +	"u-boot mmc 0x80 0x800;" \
> 
> u-boot mmc? u-boot raw? what's correct?

raw - ACK

>>  	"uImage ext4 0 2;" \
>>  	"exynos4412-trats2.dtb ext4 0 2;" \
>>  	""PARTS_ROOT" part 0 5\0"
>> diff --git a/include/dfu.h b/include/dfu.h
>> index f973426..f2e83db 100644
>> --- a/include/dfu.h
>> +++ b/include/dfu.h
>> @@ -64,11 +64,6 @@ struct ram_internal_data {
>>  	unsigned int	size;
>>  };
>>  
>> -static inline unsigned int get_mmc_blk_size(int dev)
>> -{
>> -	return find_mmc_device(dev)->read_bl_len;
>> -}
>> -
>>  #define DFU_NAME_SIZE			32
>>  #define DFU_CMD_BUF_SIZE		128
>>  #ifndef CONFIG_SYS_DFU_DATA_BUF_SIZE
>>
> 
> 


-- 
Mateusz Zalega
Samsung R&D Institute Poland

  reply	other threads:[~2014-01-13 13:34 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-09 14:31 [U-Boot] [PATCH 1/9] mmc: mmc header fix Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH 2/9] part: " Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH v3 3/9] arm:goni: Update configuration for goni target Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH 4/9] arm:goni:dfu Add support for DFU to Goni target Mateusz Zalega
2014-01-10  4:55   ` Jaehoon Chung
2014-01-13 14:45     ` Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH 5/9] arm:goni: enable GPT command Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH 6/9] arm:goni: enable USB Mass Storage Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH v3 7/9] dfu:mmc: raw data write fix Mateusz Zalega
2014-01-10  5:03   ` Jaehoon Chung
2014-01-13 13:34     ` Mateusz Zalega [this message]
2014-01-09 14:31 ` [U-Boot] [PATCH 8/9] ums: always initialize mmc before ums_disk_init() Mateusz Zalega
2014-01-10  5:08   ` Jaehoon Chung
2014-01-13 14:39     ` Mateusz Zalega
2014-01-13 14:43       ` Michael Trimarchi
2014-01-13 15:00         ` Mateusz Zalega
2014-01-13 10:16   ` Lukasz Majewski
2014-01-14  0:49   ` Minkyu Kang
2014-01-14 10:55     ` Mateusz Zalega
2014-01-09 14:31 ` [U-Boot] [PATCH 9/9] USB: gadget: added a saner gadget downloader registration API Mateusz Zalega
2014-01-10  8:23   ` Lukasz Majewski
2014-01-13  7:07     ` Heiko Schocher
2014-01-13 10:16   ` Lukasz Majewski
2014-01-10  4:46 ` [U-Boot] [PATCH 1/9] mmc: mmc header fix Jaehoon Chung
2014-02-04 17:02 ` [U-Boot] [PATCH v2 00/12] Series v2 Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 01/12] mmc: mmc header fix Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 02/12] part: " Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 03/12] arm:goni: Update configuration for goni target Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 04/12] dfu: fix boards wo USB cable detection Mateusz Zalega
2014-02-22  5:06     ` Marek Vasut
2014-02-04 17:02   ` [U-Boot] [PATCH v2 05/12] am335x: dfu: disable DFU in am335x_evm SPL build Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 06/12] USB: gadget: added a saner gadget downloader registration API Mateusz Zalega
2014-02-05  7:13     ` Marek Vasut
2014-02-05 12:40       ` Mateusz Zalega
2014-02-05 18:00         ` Marek Vasut
2014-02-06 11:56           ` Mateusz Zalega
2014-02-06 19:59             ` Marek Vasut
2014-02-04 17:02   ` [U-Boot] [PATCH v2 07/12] arm:goni:dfu Add support for DFU to Goni target Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 08/12] arm:goni: enable GPT command Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 09/12] arm:goni: enable USB Mass Storage Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 10/12] dfu:mmc: raw data write fix Mateusz Zalega
2014-02-22  5:09     ` Marek Vasut
2014-02-04 17:02   ` [U-Boot] [PATCH v2 11/12] mmc: postponed needless timer initialization Mateusz Zalega
2014-02-04 17:02   ` [U-Boot] [PATCH v2 12/12] ums: always initialize mmc before ums_disk_init() Mateusz Zalega
2014-02-22  5:12     ` Marek Vasut
2014-03-31 15:48 ` [U-Boot] [PATCH v3 00/13] DFU, MMC, Gadget, Goni, misc Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 01/13] mmc: mmc header fix Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 02/13] part: " Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 03/13] arm:goni: Update configuration for goni target Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 04/13] dfu: fix boards wo USB cable detection Mateusz Zalega
2014-04-02  6:33     ` Lukasz Majewski
2014-03-31 15:49   ` [U-Boot] [PATCH v3 05/13] am335x: dfu: disable DFU in am335x_evm SPL build Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 06/13] USB: gadget: added a saner gadget downloader registration API Mateusz Zalega
2014-03-31 16:14     ` Marek Vasut
2014-04-02  6:35     ` Lukasz Majewski
2014-04-02 22:28       ` Marek Vasut
2014-04-03  7:46         ` Lukasz Majewski
2014-04-03  8:52           ` Marek Vasut
2014-04-11 11:43             ` Mateusz Zalega
2014-04-11 12:02               ` Marek Vasut
2014-04-15 11:04                 ` Mateusz Zalega
2014-04-15 13:26                   ` Marek Vasut
2014-03-31 15:49   ` [U-Boot] [PATCH v3 07/13] arm:goni:dfu Add support for DFU to Goni target Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 08/13] arm:goni: enable GPT command Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 09/13] arm:goni: enable USB Mass Storage Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 10/13] dfu:mmc: raw data write fix Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 11/13] mmc: postponed needless timer initialization Mateusz Zalega
2014-03-31 15:49   ` [U-Boot] [PATCH v3 12/13] ums: always initialize mmc before ums_disk_init() Mateusz Zalega
2014-04-02  6:36     ` Lukasz Majewski
2014-03-31 15:49   ` [U-Boot] [PATCH v3 13/13] common: fixed linker-list example Mateusz Zalega
2014-03-31 16:12     ` Marek Vasut
2014-04-01  7:42       ` Lukasz Majewski
2014-04-15 13:06 ` [U-Boot] [PATCH v4 00/13] DFU, MMC, Gadget, Goni, misc Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 01/13] mmc: mmc header fix Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 02/13] part: " Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 03/13] common: fixed linker-list example Mateusz Zalega
2014-04-15 13:36     ` Marek Vasut
2014-04-15 13:06   ` [U-Boot] [PATCH v4 04/13] usb: dfu: fix boards wo USB cable detection Mateusz Zalega
2014-04-15 13:38     ` Marek Vasut
2014-04-15 14:23     ` Lukasz Majewski
2014-04-15 13:06   ` [U-Boot] [PATCH v4 05/13] mmc: postponed needless timer initialization Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 06/13] dfu: mmc: raw data write fix Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 07/13] ums: always initialize mmc before ums_disk_init() Mateusz Zalega
2014-04-15 14:24     ` Lukasz Majewski
2014-04-15 13:06   ` [U-Boot] [PATCH v4 08/13] am335x: dfu: disable DFU in am335x_evm SPL build Mateusz Zalega
2014-04-15 14:25     ` Lukasz Majewski
2014-04-15 13:06   ` [U-Boot] [PATCH v4 09/13] USB: gadget: added a saner gadget downloader registration API Mateusz Zalega
2014-04-15 13:39     ` Marek Vasut
2014-04-15 14:28     ` Lukasz Majewski
2014-04-16  4:23     ` Jaehoon Chung
2014-04-16  9:25       ` Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 10/13] arm: goni: Update configuration for Goni target Mateusz Zalega
2014-04-15 13:06   ` [U-Boot] [PATCH v4 11/13] arm: goni: dfu: Add support for DFU to " Mateusz Zalega
2014-04-15 13:07   ` [U-Boot] [PATCH v4 12/13] arm: goni: enable GPT command Mateusz Zalega
2014-04-15 13:07   ` [U-Boot] [PATCH v4 13/13] arm: goni: enable USB Mass Storage Mateusz Zalega
2014-04-28 19:13 ` [U-Boot] [PATCH v5 00/12] DFU, MMC, Gadget, Goni, misc Mateusz Zalega
2014-04-28 19:13   ` [U-Boot] [PATCH v5 01/12] mmc: mmc header fix Mateusz Zalega
2014-04-30  8:35     ` Lukasz Majewski
2014-04-30 10:02       ` Pantelis Antoniou
2014-05-05  7:45     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 02/12] part: " Mateusz Zalega
2014-04-30  8:33     ` Lukasz Majewski
2014-05-05  7:48     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 03/12] usb: dfu: fix boards wo USB cable detection Mateusz Zalega
2014-04-30  8:18     ` Marek Vasut
2014-05-05  7:50     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 04/12] dfu: mmc: raw data write fix Mateusz Zalega
2014-05-05  8:00     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 05/12] dfu: mmc: change offset base handling Mateusz Zalega
2014-05-05  8:03     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 06/12] ums: always initialize mmc before ums_disk_init() Mateusz Zalega
2014-05-01 20:03     ` Stephen Warren
2014-05-05  8:05     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 07/12] am335x: dfu: disable DFU in am335x_evm SPL build Mateusz Zalega
2014-05-05  8:06     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 08/12] USB: gadget: added a saner gadget downloader registration API Mateusz Zalega
2014-05-05  8:07     ` Lukasz Majewski
2014-04-28 19:13   ` [U-Boot] [PATCH v5 09/12] arm: goni: Update configuration for Goni target Mateusz Zalega
2014-04-30 11:24     ` Lukasz Majewski
2014-04-30 11:55       ` Minkyu Kang
2014-05-16  6:53     ` Minkyu Kang
2014-04-28 19:13   ` [U-Boot] [PATCH v5 10/12] arm: goni: dfu: Add support for DFU to " Mateusz Zalega
2014-05-16  6:53     ` Minkyu Kang
2014-04-28 19:13   ` [U-Boot] [PATCH v5 11/12] arm: goni: enable GPT command Mateusz Zalega
2014-05-16  6:53     ` Minkyu Kang
2014-04-28 19:13   ` [U-Boot] [PATCH v5 12/12] arm: goni: enable USB Mass Storage Mateusz Zalega
2014-05-16  6:53     ` Minkyu Kang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52D3EB4F.70403@samsung.com \
    --to=m.zalega@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.