[RFC PATCH 2/2] commands: add bootmode command

Sascha Hauer s.hauer at pengutronix.de
Mon Jan 27 03:46:33 EST 2014


Hi Philipp,

On Thu, Jan 23, 2014 at 12:01:31AM +0100, Philipp Zabel wrote:
> On some SoCs the boot rom can be instructed to boot from a specific
> device, once, after the next reset. The bootmode command allows to
> list boot device candidates and to set up one of those devices as
> boot source after the next reset.
> 
> Signed-off-by: Philipp Zabel <philipp.zabel at gmail.com>
> ---
>  commands/Kconfig    |   9 ++++
>  commands/Makefile   |   1 +
>  commands/bootmode.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  common/Kconfig      |   3 ++
>  common/Makefile     |   1 +
>  5 files changed, 157 insertions(+)
>  create mode 100644 commands/bootmode.c
> 
> diff --git a/commands/Kconfig b/commands/Kconfig
> index 1e07b5b..851a14a 100644
> --- a/commands/Kconfig
> +++ b/commands/Kconfig
> @@ -770,6 +770,15 @@ config CMD_WD_DEFAULT_TIMOUT
>  	  enabled and re-triggered with the default timeout value).
>  endif
>  
> +config CMD_BOOTMODE
> +	bool
> +	depends on OFTREE
> +	prompt "bootmode command"
> +	select BOOTMODE
> +	help
> +	  The 'bootmode' command on some SoCs allows to instruct the boot rom
> +	  from which bootsource to boot, once, after the next reset.
> +
>  endmenu
>  
>  endif
> diff --git a/commands/Makefile b/commands/Makefile
> index 58d27fa..9e63e3f 100644
> --- a/commands/Makefile
> +++ b/commands/Makefile
> @@ -93,3 +93,4 @@ obj-$(CONFIG_CMD_MIITOOL)	+= miitool.o
>  obj-$(CONFIG_CMD_DETECT)	+= detect.o
>  obj-$(CONFIG_CMD_BOOT)		+= boot.o
>  obj-$(CONFIG_CMD_DEVINFO)	+= devinfo.o
> +obj-$(CONFIG_CMD_BOOTMODE)	+= bootmode.o
> diff --git a/commands/bootmode.c b/commands/bootmode.c
> +
> +static struct bootsource_name bootsources[] = {
> +	{ BOOTSOURCE_NAND,   "nand" },
> +	{ BOOTSOURCE_NOR,    "nor"  },
> +	{ BOOTSOURCE_MMC,    "mmc"  },
> +	{ BOOTSOURCE_I2C,    "i2c"  },
> +	{ BOOTSOURCE_SPI,    "m25p" },
> +	{ BOOTSOURCE_SERIAL, "cs"   },
> +	{ BOOTSOURCE_HD,     "ahci" },
> +};
> +
> +static enum bootsource get_bootsource(struct device_d *dev, int *instance)
> +{

For bootsource we currently have bootsource/instance for referring to a
bootsource. Using a struct device_d (and therefore also struct
device_node) is pretty cool, but should be introduced consistently. With
the function above we have to use a devicename to specify the
bootsource, but a devicename is not what we get as current bootsource. I
suggest to either switch to devicenames completely or to let the
bootmode command just understand bootmode <type> <instance>, like
bootmode mmc 2.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list