[U-Boot] [PATCH 5/5] nand: sunxi: And a20_nandread command utilizing spl nand read driver

Hans de Goede hdegoede at redhat.com
Mon May 4 16:20:48 CEST 2015


Hi,

On 05/02/2015 04:26 PM, Ian Campbell wrote:
> On Wed, 2015-04-29 at 17:03 +0200, Daniel Kochmański wrote:
>> This patch adds a20_nandread command. It is simple function utilizing
>> function from SPL nand driver `nand_spl_load_image`.
>>
>> Usage: a20_nandread <address> <offset> <bytes>
>
> This stuff should really be integrated with cmd_nand.c rather than
> adding an adhoc SoC specific interface.

I want to go even further and I see that this really needs to be integrated
with the blkdev code so that one can just do:

ls nand 0:1

And things will just work, these way we can also just have the standard
boot cmds from config_distro_bootcmd.h work rather then needing special
nand boot commands.

Regards,

Hans



>
>>
>> Signed-off-by: Daniel Kochmański <dkochmanski at turtle-solutions.eu>
>> Cc: Ian Campbell <ijc at hellion.org.uk>
>> Cc: Hans De Goede <hdegoede at redhat.com>
>> ---
>>
>>   common/Kconfig            |  7 +++++++
>>   common/Makefile           |  1 +
>>   common/cmd_a20_nandread.c | 27 +++++++++++++++++++++++++++
>>   3 files changed, 35 insertions(+)
>>   create mode 100644 common/cmd_a20_nandread.c
>>
>> diff --git a/common/Kconfig b/common/Kconfig
>> index 5d7e48a..8edabb6 100644
>> --- a/common/Kconfig
>> +++ b/common/Kconfig
>> @@ -204,6 +204,13 @@ config CMD_NAND
>>   	help
>>   	  NAND support.
>>
>> +config CMD_A20_NANDREAD
>> +	depends on SPL_NAND_SUPPORT
>> +	bool "a20_nandread"
>> +	help
>> +	  NAND read support for A20 SoC. Depends on SPL driver.
>> +	  Usage: a20_nandread <address> <offset> <size>
>> +
>>   config CMD_SPI
>>   	bool "sspi"
>>   	help
>> diff --git a/common/Makefile b/common/Makefile
>> index fba3830..9286518 100644
>> --- a/common/Makefile
>> +++ b/common/Makefile
>> @@ -138,6 +138,7 @@ obj-$(CONFIG_CMD_MMC) += cmd_mmc.o
>>   obj-$(CONFIG_CMD_MMC_SPI) += cmd_mmc_spi.o
>>   obj-$(CONFIG_MP) += cmd_mp.o
>>   obj-$(CONFIG_CMD_MTDPARTS) += cmd_mtdparts.o
>> +obj-$(CONFIG_CMD_A20_NANDREAD) += cmd_a20_nandread.o
>>   obj-$(CONFIG_CMD_NAND) += cmd_nand.o
>>   obj-$(CONFIG_CMD_NET) += cmd_net.o
>>   obj-$(CONFIG_CMD_ONENAND) += cmd_onenand.o
>> diff --git a/common/cmd_a20_nandread.c b/common/cmd_a20_nandread.c
>> new file mode 100644
>> index 0000000..7361be7
>> --- /dev/null
>> +++ b/common/cmd_a20_nandread.c
>> @@ -0,0 +1,27 @@
>> +#include <common.h>
>> +#include <command.h>
>> +
>> +int nand_spl_load_image(uint32_t offs, unsigned int size, void *dest);
>> +
>> +static int do_a20_nandread(cmd_tbl_t *cmdtp, int flag,
>> +			   int argc, char *const argv[])
>> +{
>> +	if (argc != 4) {
>> +		printf("usage: a20_nandread <address> <offset> <bytes>\n");
>> +		return 1;
>> +	}
>> +
>> +	uint32_t dst = simple_strtoul(argv[1], NULL, 16);
>> +	uint32_t src = simple_strtoul(argv[2], NULL, 16);
>> +	uint32_t cnt = simple_strtoul(argv[3], NULL, 16);
>> +	printf("Loading 0x%08XB @ 0x%08X -> 0x%08X...\n", cnt, src, dst);
>> +	nand_spl_load_image(src, cnt, (void *)dst);
>> +	return 0;
>> +}
>> +
>> +U_BOOT_CMD(
>> +	a20_nandread,	CONFIG_SYS_MAXARGS,	3,	do_a20_nandread,
>> +	"a20_nandread",
>> +	"[offset size bytes]\n"
>> +	"   "
>> +);
>
>


More information about the U-Boot mailing list