diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/Makefile | 1 | ||||
-rw-r--r-- | common/bootsource.c | 53 |
2 files changed, 54 insertions, 0 deletions
diff --git a/common/Makefile b/common/Makefile index 1b3b009a3a..dcb07c271c 100644 --- a/common/Makefile +++ b/common/Makefile @@ -40,6 +40,7 @@ obj-$(CONFIG_PASSWORD) += password.o obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_FLEXIBLE_BOOTARGS) += bootargs.o obj-$(CONFIG_BAREBOX_UPDATE) += bbu.o +obj-y += bootsource.o extra-$(CONFIG_MODULES) += module.lds extra-y += barebox_default_env barebox_default_env.h diff --git a/common/bootsource.c b/common/bootsource.c new file mode 100644 index 0000000000..6f9ae54ceb --- /dev/null +++ b/common/bootsource.c @@ -0,0 +1,53 @@ +/* + * + * Copyright (C) 2011 Marc Reilly <marc@cpdesign.com.au> + * Copyright (C) 2013 Marc Kleine-Budde <mkl@pengutronix.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include <common.h> +#include <bootsource.h> +#include <environment.h> +#include <magicvar.h> + +static const char *bootsource_str[] = { + [BOOTSOURCE_UNKNOWN] = "unknown", + [BOOTSOURCE_NAND] = "nand", + [BOOTSOURCE_NOR] = "nor", + [BOOTSOURCE_MMC] = "mmc", + [BOOTSOURCE_I2C] = "i2c", + [BOOTSOURCE_SPI] = "spi", + [BOOTSOURCE_SERIAL] = "serial", + [BOOTSOURCE_ONENAND] = "onenand", + [BOOTSOURCE_HD] = "harddisk", +}; + +static enum bootsource bootsource = BOOTSOURCE_UNKNOWN; + +void bootsource_set(enum bootsource src) +{ + if (src >= ARRAY_SIZE(bootsource_str)) + src = BOOTSOURCE_UNKNOWN; + + bootsource = src; + + setenv("bootsource", bootsource_str[src]); + export("bootsource"); +} + +enum bootsource bootsource_get(void) +{ + return bootsource; +} + +BAREBOX_MAGICVAR(bootsource, "The source barebox has been booted from"); |