mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [RFC PATCH 1/1] omap: xload: switch to generic bootstrap
@ 2013-01-21 14:38 Jean-Christophe PLAGNIOL-VILLARD
  2013-01-22 14:36 ` Jean-Christophe PLAGNIOL-VILLARD
  2013-01-30 22:13 ` Sascha Hauer
  0 siblings, 2 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-01-21 14:38 UTC (permalink / raw)
  To: barebox

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
Hi,

	just compiled not tested

Best Regards,
J.
 .../configs/am335x_beaglebone_mlo_small_defconfig  |    2 +
 arch/arm/configs/archosg9_xload_defconfig          |    2 +
 arch/arm/configs/omap3530_beagle_xload_defconfig   |    3 +
 arch/arm/configs/panda_xload_defconfig             |    2 +
 arch/arm/configs/pcm049_xload_defconfig            |    3 +
 arch/arm/configs/phycard_a_l1_xload_defconfig      |    3 +
 arch/arm/configs/phycard_a_xl2_xload_defconfig     |    3 +
 arch/arm/mach-omap/xload.c                         |  292 +++++---------------
 8 files changed, 88 insertions(+), 222 deletions(-)
 rewrite arch/arm/mach-omap/xload.c (70%)

diff --git a/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig b/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
index 886dad9..91c18a5 100644
--- a/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
+++ b/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
@@ -29,3 +29,5 @@ CONFIG_MCI_OMAP_HSMMC=y
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_FAT=y
 CONFIG_FS_FAT_LFN=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/configs/archosg9_xload_defconfig b/arch/arm/configs/archosg9_xload_defconfig
index 6c6782f..26de57e 100644
--- a/arch/arm/configs/archosg9_xload_defconfig
+++ b/arch/arm/configs/archosg9_xload_defconfig
@@ -22,3 +22,5 @@ CONFIG_DRIVER_SERIAL_OMAP4_USBBOOT=y
 # CONFIG_FS_RAMFS is not set
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_OMAP4_USBBOOT=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/configs/omap3530_beagle_xload_defconfig b/arch/arm/configs/omap3530_beagle_xload_defconfig
index d951b1c..2164208 100644
--- a/arch/arm/configs/omap3530_beagle_xload_defconfig
+++ b/arch/arm/configs/omap3530_beagle_xload_defconfig
@@ -36,3 +36,6 @@ CONFIG_MCI_OMAP_HSMMC=y
 # CONFIG_FS_RAMFS is not set
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_FAT=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DEVFS=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/configs/panda_xload_defconfig b/arch/arm/configs/panda_xload_defconfig
index fec09ce..84cebbf 100644
--- a/arch/arm/configs/panda_xload_defconfig
+++ b/arch/arm/configs/panda_xload_defconfig
@@ -25,3 +25,5 @@ CONFIG_MCI_OMAP_HSMMC=y
 # CONFIG_FS_RAMFS is not set
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_FAT=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/configs/pcm049_xload_defconfig b/arch/arm/configs/pcm049_xload_defconfig
index b6d3a7a..44f9194 100644
--- a/arch/arm/configs/pcm049_xload_defconfig
+++ b/arch/arm/configs/pcm049_xload_defconfig
@@ -39,3 +39,6 @@ CONFIG_MCI_OMAP_HSMMC=y
 # CONFIG_FS_RAMFS is not set
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_FAT=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DEVFS=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/configs/phycard_a_l1_xload_defconfig b/arch/arm/configs/phycard_a_l1_xload_defconfig
index 30253cb..d1e3bed 100644
--- a/arch/arm/configs/phycard_a_l1_xload_defconfig
+++ b/arch/arm/configs/phycard_a_l1_xload_defconfig
@@ -41,3 +41,6 @@ CONFIG_MCI_OMAP_HSMMC=y
 # CONFIG_FS_RAMFS is not set
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_FAT=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DEVFS=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/configs/phycard_a_xl2_xload_defconfig b/arch/arm/configs/phycard_a_xl2_xload_defconfig
index 7975220..d6b5daa 100644
--- a/arch/arm/configs/phycard_a_xl2_xload_defconfig
+++ b/arch/arm/configs/phycard_a_xl2_xload_defconfig
@@ -39,3 +39,6 @@ CONFIG_MCI_OMAP_HSMMC=y
 # CONFIG_FS_RAMFS is not set
 # CONFIG_FS_DEVFS is not set
 CONFIG_FS_FAT=y
+CONFIG_BOOTSTRAP=y
+CONFIG_BOOTSTRAP_DEVFS=y
+CONFIG_BOOTSTRAP_DISK=y
diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
dissimilarity index 70%
index 41533a9..c02e37e 100644
--- a/arch/arm/mach-omap/xload.c
+++ b/arch/arm/mach-omap/xload.c
@@ -1,222 +1,70 @@
-#include <common.h>
-#include <partition.h>
-#include <nand.h>
-#include <init.h>
-#include <driver.h>
-#include <linux/mtd/mtd.h>
-#include <fs.h>
-#include <fcntl.h>
-#include <mach/xload.h>
-#include <sizes.h>
-#include <filetype.h>
-
-static void *read_image_head(const char *name)
-{
-	void *header = xmalloc(ARM_HEAD_SIZE);
-	struct cdev *cdev;
-	int ret;
-
-	cdev = cdev_open(name, O_RDONLY);
-	if (!cdev) {
-		printf("failed to open partition\n");
-		return NULL;
-	}
-
-	ret = cdev_read(cdev, header, ARM_HEAD_SIZE, 0, 0);
-	cdev_close(cdev);
-
-	if (ret != ARM_HEAD_SIZE) {
-		printf("failed to read from partition\n");
-		return NULL;
-	}
-
-	return header;
-}
-
-static unsigned int get_image_size(void *head)
-{
-	unsigned int ret = 0;
-	unsigned int *psize = head + ARM_HEAD_SIZE_OFFSET;
-
-	if (is_barebox_arm_head(head))
-		ret = *psize;
-	debug("Detected barebox image size %u\n", ret);
-
-	return ret;
-}
-
-static void *omap_xload_boot_nand(int offset)
-{
-	int ret;
-	int size;
-	void *to, *header;
-	struct cdev *cdev;
-
-	devfs_add_partition("nand0", offset, SZ_1M, DEVFS_PARTITION_FIXED, "x");
-	dev_add_bb_dev("x", "bbx");
-
-	header = read_image_head("bbx");
-	if (header == NULL)
-		return NULL;
-
-	size = get_image_size(header);
-	if (!size) {
-		printf("failed to get image size\n");
-		return NULL;
-	}
-
-	to = xmalloc(size);
-
-	cdev = cdev_open("bbx", O_RDONLY);
-	if (!cdev) {
-		printf("failed to open nand\n");
-		return NULL;
-	}
-
-	ret = cdev_read(cdev, to, size, 0, 0);
-	if (ret != size) {
-		printf("failed to read from nand\n");
-		return NULL;
-	}
-
-	return to;
-}
-
-static void *omap_xload_boot_mmc(void)
-{
-	int ret;
-	void *buf;
-	int len;
-	const char *diskdev = "disk0.0";
-
-	ret = mount(diskdev, "fat", "/");
-	if (ret) {
-		printf("Unable to mount %s (%d)\n", diskdev, ret);
-		return NULL;
-	}
-
-	buf = read_file("/barebox.bin", &len);
-	if (!buf) {
-		printf("could not read barebox.bin from sd card\n");
-		return NULL;
-	}
-
-	return buf;
-}
-
-static void *omap_xload_boot_spi(int offset)
-{
-	int ret;
-	int size;
-	void *to, *header;
-	struct cdev *cdev;
-
-	devfs_add_partition("m25p0", offset, SZ_1M, DEVFS_PARTITION_FIXED, "x");
-
-	header = read_image_head("x");
-	if (header == NULL)
-		return NULL;
-
-	size = get_image_size(header);
-	if (!size) {
-		printf("failed to get image size\n");
-		return NULL;
-	}
-
-	to = xmalloc(size);
-
-	cdev = cdev_open("x", O_RDONLY);
-	if (!cdev) {
-		printf("failed to open spi flash\n");
-		return NULL;
-	}
-
-	ret = cdev_read(cdev, to, size, 0, 0);
-	if (ret != size) {
-		printf("failed to read from spi flash\n");
-		return NULL;
-	}
-
-	return to;
-}
-
-static void *omap4_xload_boot_usb(void){
-	int ret;
-	void *buf;
-	int len;
-
-	ret = mount("omap4_usbboot", "omap4_usbbootfs", "/");
-	if (ret) {
-		printf("Unable to mount omap4_usbbootfs (%d)\n", ret);
-		return NULL;
-	}
-
-	buf = read_file("/barebox.bin", &len);
-	if (!buf)
-		printf("could not read barebox.bin from omap4_usbbootfs\n");
-
-	return buf;
-}
-
-enum omap_boot_src omap_bootsrc(void)
-{
-#if defined(CONFIG_ARCH_OMAP3)
-	return omap3_bootsrc();
-#elif defined(CONFIG_ARCH_OMAP4)
-	return omap4_bootsrc();
-#elif defined(CONFIG_ARCH_AM33XX)
-	return am33xx_bootsrc();
-#endif
-}
-
-/*
- * Replaces the default shell in xload configuration
- */
-static __noreturn int omap_xload(void)
-{
-	int (*func)(void) = NULL;
-
-	switch (omap_bootsrc())
-	{
-	case OMAP_BOOTSRC_MMC1:
-		printf("booting from MMC1\n");
-		func = omap_xload_boot_mmc();
-		break;
-	case OMAP_BOOTSRC_USB1:
-		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
-			printf("booting from USB1\n");
-			func = omap4_xload_boot_usb();
-			break;
-		} else {
-			printf("booting from usb1 not enabled\n");
-		}
-	case OMAP_BOOTSRC_UNKNOWN:
-		printf("unknown boot source. Fall back to nand\n");
-	case OMAP_BOOTSRC_NAND:
-		printf("booting from NAND\n");
-		func = omap_xload_boot_nand(SZ_128K);
-		break;
-	case OMAP_BOOTSRC_SPI1:
-		printf("booting from SPI1\n");
-		func = omap_xload_boot_spi(SZ_128K);
-		break;
-	}
-
-	if (!func) {
-		printf("booting failed\n");
-		while (1);
-	}
-
-	shutdown_barebox();
-	func();
-
-	while (1);
-}
-
-static int omap_set_xload(void)
-{
-	barebox_main = omap_xload;
-
-	return 0;
-}
-late_initcall(omap_set_xload);
+#include <common.h>
+#include <partition.h>
+#include <nand.h>
+#include <init.h>
+#include <driver.h>
+#include <linux/mtd/mtd.h>
+#include <fs.h>
+#include <fcntl.h>
+#include <mach/xload.h>
+#include <sizes.h>
+#include <filetype.h>
+#include <bootstrap.h>
+
+enum omap_boot_src omap_bootsrc(void)
+{
+#if defined(CONFIG_ARCH_OMAP3)
+	return omap3_bootsrc();
+#elif defined(CONFIG_ARCH_OMAP4)
+	return omap4_bootsrc();
+#elif defined(CONFIG_ARCH_AM33XX)
+	return am33xx_bootsrc();
+#endif
+}
+
+/*
+ * Replaces the default shell in xload configuration
+ */
+static __noreturn int omap_xload(void)
+{
+	int (*func)(void) = NULL;
+
+	switch (omap_bootsrc())
+	{
+	case OMAP_BOOTSRC_MMC1:
+		printf("booting from MMC1\n");
+		func = bootstrap_read_disk("disk0.0", NULL);
+		break;
+	case OMAP_BOOTSRC_USB1:
+		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
+			printf("booting from USB1\n");
+			func = bootstrap_read_disk("omap4_usbboot", "omap4_usbbootfs");
+			break;
+		} else {
+			printf("booting from usb1 not enabled\n");
+		}
+	case OMAP_BOOTSRC_UNKNOWN:
+		printf("unknown boot source. Fall back to nand\n");
+	case OMAP_BOOTSRC_NAND:
+		printf("booting from NAND\n");
+		func = bootstrap_read_devfs("nand0", true, SZ_128K, SZ_256K, SZ_1M);
+		break;
+	case OMAP_BOOTSRC_SPI1:
+		printf("booting from SPI1\n");
+		func = bootstrap_read_devfs("m25p0", false, SZ_128K, SZ_256K, SZ_1M);
+		break;
+	}
+
+	bootstrap_boot(func, false);
+	bootstrap_err("... failed\n");
+
+	while (1);
+}
+
+static int omap_set_xload(void)
+{
+	barebox_main = omap_xload;
+
+	return 0;
+}
+late_initcall(omap_set_xload);
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC PATCH 1/1] omap: xload: switch to generic bootstrap
  2013-01-21 14:38 [RFC PATCH 1/1] omap: xload: switch to generic bootstrap Jean-Christophe PLAGNIOL-VILLARD
@ 2013-01-22 14:36 ` Jean-Christophe PLAGNIOL-VILLARD
  2013-01-30 22:13 ` Sascha Hauer
  1 sibling, 0 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-01-22 14:36 UTC (permalink / raw)
  To: barebox

On 15:38 Mon 21 Jan     , Jean-Christophe PLAGNIOL-VILLARD wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> Hi,
> 
> 	just compiled not tested
Sascha can you test it on panda or beagle?

Best Regards,
J.
>  .../configs/am335x_beaglebone_mlo_small_defconfig  |    2 +
>  arch/arm/configs/archosg9_xload_defconfig          |    2 +
>  arch/arm/configs/omap3530_beagle_xload_defconfig   |    3 +
>  arch/arm/configs/panda_xload_defconfig             |    2 +
>  arch/arm/configs/pcm049_xload_defconfig            |    3 +
>  arch/arm/configs/phycard_a_l1_xload_defconfig      |    3 +
>  arch/arm/configs/phycard_a_xl2_xload_defconfig     |    3 +
>  arch/arm/mach-omap/xload.c                         |  292 +++++---------------
>  8 files changed, 88 insertions(+), 222 deletions(-)
>  rewrite arch/arm/mach-omap/xload.c (70%)
> 
> diff --git a/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig b/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
> index 886dad9..91c18a5 100644
> --- a/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
> +++ b/arch/arm/configs/am335x_beaglebone_mlo_small_defconfig
> @@ -29,3 +29,5 @@ CONFIG_MCI_OMAP_HSMMC=y
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_FAT=y
>  CONFIG_FS_FAT_LFN=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/configs/archosg9_xload_defconfig b/arch/arm/configs/archosg9_xload_defconfig
> index 6c6782f..26de57e 100644
> --- a/arch/arm/configs/archosg9_xload_defconfig
> +++ b/arch/arm/configs/archosg9_xload_defconfig
> @@ -22,3 +22,5 @@ CONFIG_DRIVER_SERIAL_OMAP4_USBBOOT=y
>  # CONFIG_FS_RAMFS is not set
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_OMAP4_USBBOOT=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/configs/omap3530_beagle_xload_defconfig b/arch/arm/configs/omap3530_beagle_xload_defconfig
> index d951b1c..2164208 100644
> --- a/arch/arm/configs/omap3530_beagle_xload_defconfig
> +++ b/arch/arm/configs/omap3530_beagle_xload_defconfig
> @@ -36,3 +36,6 @@ CONFIG_MCI_OMAP_HSMMC=y
>  # CONFIG_FS_RAMFS is not set
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_FAT=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DEVFS=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/configs/panda_xload_defconfig b/arch/arm/configs/panda_xload_defconfig
> index fec09ce..84cebbf 100644
> --- a/arch/arm/configs/panda_xload_defconfig
> +++ b/arch/arm/configs/panda_xload_defconfig
> @@ -25,3 +25,5 @@ CONFIG_MCI_OMAP_HSMMC=y
>  # CONFIG_FS_RAMFS is not set
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_FAT=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/configs/pcm049_xload_defconfig b/arch/arm/configs/pcm049_xload_defconfig
> index b6d3a7a..44f9194 100644
> --- a/arch/arm/configs/pcm049_xload_defconfig
> +++ b/arch/arm/configs/pcm049_xload_defconfig
> @@ -39,3 +39,6 @@ CONFIG_MCI_OMAP_HSMMC=y
>  # CONFIG_FS_RAMFS is not set
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_FAT=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DEVFS=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/configs/phycard_a_l1_xload_defconfig b/arch/arm/configs/phycard_a_l1_xload_defconfig
> index 30253cb..d1e3bed 100644
> --- a/arch/arm/configs/phycard_a_l1_xload_defconfig
> +++ b/arch/arm/configs/phycard_a_l1_xload_defconfig
> @@ -41,3 +41,6 @@ CONFIG_MCI_OMAP_HSMMC=y
>  # CONFIG_FS_RAMFS is not set
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_FAT=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DEVFS=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/configs/phycard_a_xl2_xload_defconfig b/arch/arm/configs/phycard_a_xl2_xload_defconfig
> index 7975220..d6b5daa 100644
> --- a/arch/arm/configs/phycard_a_xl2_xload_defconfig
> +++ b/arch/arm/configs/phycard_a_xl2_xload_defconfig
> @@ -39,3 +39,6 @@ CONFIG_MCI_OMAP_HSMMC=y
>  # CONFIG_FS_RAMFS is not set
>  # CONFIG_FS_DEVFS is not set
>  CONFIG_FS_FAT=y
> +CONFIG_BOOTSTRAP=y
> +CONFIG_BOOTSTRAP_DEVFS=y
> +CONFIG_BOOTSTRAP_DISK=y
> diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
> dissimilarity index 70%
> index 41533a9..c02e37e 100644
> --- a/arch/arm/mach-omap/xload.c
> +++ b/arch/arm/mach-omap/xload.c
> @@ -1,222 +1,70 @@
> -#include <common.h>
> -#include <partition.h>
> -#include <nand.h>
> -#include <init.h>
> -#include <driver.h>
> -#include <linux/mtd/mtd.h>
> -#include <fs.h>
> -#include <fcntl.h>
> -#include <mach/xload.h>
> -#include <sizes.h>
> -#include <filetype.h>
> -
> -static void *read_image_head(const char *name)
> -{
> -	void *header = xmalloc(ARM_HEAD_SIZE);
> -	struct cdev *cdev;
> -	int ret;
> -
> -	cdev = cdev_open(name, O_RDONLY);
> -	if (!cdev) {
> -		printf("failed to open partition\n");
> -		return NULL;
> -	}
> -
> -	ret = cdev_read(cdev, header, ARM_HEAD_SIZE, 0, 0);
> -	cdev_close(cdev);
> -
> -	if (ret != ARM_HEAD_SIZE) {
> -		printf("failed to read from partition\n");
> -		return NULL;
> -	}
> -
> -	return header;
> -}
> -
> -static unsigned int get_image_size(void *head)
> -{
> -	unsigned int ret = 0;
> -	unsigned int *psize = head + ARM_HEAD_SIZE_OFFSET;
> -
> -	if (is_barebox_arm_head(head))
> -		ret = *psize;
> -	debug("Detected barebox image size %u\n", ret);
> -
> -	return ret;
> -}
> -
> -static void *omap_xload_boot_nand(int offset)
> -{
> -	int ret;
> -	int size;
> -	void *to, *header;
> -	struct cdev *cdev;
> -
> -	devfs_add_partition("nand0", offset, SZ_1M, DEVFS_PARTITION_FIXED, "x");
> -	dev_add_bb_dev("x", "bbx");
> -
> -	header = read_image_head("bbx");
> -	if (header == NULL)
> -		return NULL;
> -
> -	size = get_image_size(header);
> -	if (!size) {
> -		printf("failed to get image size\n");
> -		return NULL;
> -	}
> -
> -	to = xmalloc(size);
> -
> -	cdev = cdev_open("bbx", O_RDONLY);
> -	if (!cdev) {
> -		printf("failed to open nand\n");
> -		return NULL;
> -	}
> -
> -	ret = cdev_read(cdev, to, size, 0, 0);
> -	if (ret != size) {
> -		printf("failed to read from nand\n");
> -		return NULL;
> -	}
> -
> -	return to;
> -}
> -
> -static void *omap_xload_boot_mmc(void)
> -{
> -	int ret;
> -	void *buf;
> -	int len;
> -	const char *diskdev = "disk0.0";
> -
> -	ret = mount(diskdev, "fat", "/");
> -	if (ret) {
> -		printf("Unable to mount %s (%d)\n", diskdev, ret);
> -		return NULL;
> -	}
> -
> -	buf = read_file("/barebox.bin", &len);
> -	if (!buf) {
> -		printf("could not read barebox.bin from sd card\n");
> -		return NULL;
> -	}
> -
> -	return buf;
> -}
> -
> -static void *omap_xload_boot_spi(int offset)
> -{
> -	int ret;
> -	int size;
> -	void *to, *header;
> -	struct cdev *cdev;
> -
> -	devfs_add_partition("m25p0", offset, SZ_1M, DEVFS_PARTITION_FIXED, "x");
> -
> -	header = read_image_head("x");
> -	if (header == NULL)
> -		return NULL;
> -
> -	size = get_image_size(header);
> -	if (!size) {
> -		printf("failed to get image size\n");
> -		return NULL;
> -	}
> -
> -	to = xmalloc(size);
> -
> -	cdev = cdev_open("x", O_RDONLY);
> -	if (!cdev) {
> -		printf("failed to open spi flash\n");
> -		return NULL;
> -	}
> -
> -	ret = cdev_read(cdev, to, size, 0, 0);
> -	if (ret != size) {
> -		printf("failed to read from spi flash\n");
> -		return NULL;
> -	}
> -
> -	return to;
> -}
> -
> -static void *omap4_xload_boot_usb(void){
> -	int ret;
> -	void *buf;
> -	int len;
> -
> -	ret = mount("omap4_usbboot", "omap4_usbbootfs", "/");
> -	if (ret) {
> -		printf("Unable to mount omap4_usbbootfs (%d)\n", ret);
> -		return NULL;
> -	}
> -
> -	buf = read_file("/barebox.bin", &len);
> -	if (!buf)
> -		printf("could not read barebox.bin from omap4_usbbootfs\n");
> -
> -	return buf;
> -}
> -
> -enum omap_boot_src omap_bootsrc(void)
> -{
> -#if defined(CONFIG_ARCH_OMAP3)
> -	return omap3_bootsrc();
> -#elif defined(CONFIG_ARCH_OMAP4)
> -	return omap4_bootsrc();
> -#elif defined(CONFIG_ARCH_AM33XX)
> -	return am33xx_bootsrc();
> -#endif
> -}
> -
> -/*
> - * Replaces the default shell in xload configuration
> - */
> -static __noreturn int omap_xload(void)
> -{
> -	int (*func)(void) = NULL;
> -
> -	switch (omap_bootsrc())
> -	{
> -	case OMAP_BOOTSRC_MMC1:
> -		printf("booting from MMC1\n");
> -		func = omap_xload_boot_mmc();
> -		break;
> -	case OMAP_BOOTSRC_USB1:
> -		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
> -			printf("booting from USB1\n");
> -			func = omap4_xload_boot_usb();
> -			break;
> -		} else {
> -			printf("booting from usb1 not enabled\n");
> -		}
> -	case OMAP_BOOTSRC_UNKNOWN:
> -		printf("unknown boot source. Fall back to nand\n");
> -	case OMAP_BOOTSRC_NAND:
> -		printf("booting from NAND\n");
> -		func = omap_xload_boot_nand(SZ_128K);
> -		break;
> -	case OMAP_BOOTSRC_SPI1:
> -		printf("booting from SPI1\n");
> -		func = omap_xload_boot_spi(SZ_128K);
> -		break;
> -	}
> -
> -	if (!func) {
> -		printf("booting failed\n");
> -		while (1);
> -	}
> -
> -	shutdown_barebox();
> -	func();
> -
> -	while (1);
> -}
> -
> -static int omap_set_xload(void)
> -{
> -	barebox_main = omap_xload;
> -
> -	return 0;
> -}
> -late_initcall(omap_set_xload);
> +#include <common.h>
> +#include <partition.h>
> +#include <nand.h>
> +#include <init.h>
> +#include <driver.h>
> +#include <linux/mtd/mtd.h>
> +#include <fs.h>
> +#include <fcntl.h>
> +#include <mach/xload.h>
> +#include <sizes.h>
> +#include <filetype.h>
> +#include <bootstrap.h>
> +
> +enum omap_boot_src omap_bootsrc(void)
> +{
> +#if defined(CONFIG_ARCH_OMAP3)
> +	return omap3_bootsrc();
> +#elif defined(CONFIG_ARCH_OMAP4)
> +	return omap4_bootsrc();
> +#elif defined(CONFIG_ARCH_AM33XX)
> +	return am33xx_bootsrc();
> +#endif
> +}
> +
> +/*
> + * Replaces the default shell in xload configuration
> + */
> +static __noreturn int omap_xload(void)
> +{
> +	int (*func)(void) = NULL;
> +
> +	switch (omap_bootsrc())
> +	{
> +	case OMAP_BOOTSRC_MMC1:
> +		printf("booting from MMC1\n");
> +		func = bootstrap_read_disk("disk0.0", NULL);
> +		break;
> +	case OMAP_BOOTSRC_USB1:
> +		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
> +			printf("booting from USB1\n");
> +			func = bootstrap_read_disk("omap4_usbboot", "omap4_usbbootfs");
> +			break;
> +		} else {
> +			printf("booting from usb1 not enabled\n");
> +		}
> +	case OMAP_BOOTSRC_UNKNOWN:
> +		printf("unknown boot source. Fall back to nand\n");
> +	case OMAP_BOOTSRC_NAND:
> +		printf("booting from NAND\n");
> +		func = bootstrap_read_devfs("nand0", true, SZ_128K, SZ_256K, SZ_1M);
> +		break;
> +	case OMAP_BOOTSRC_SPI1:
> +		printf("booting from SPI1\n");
> +		func = bootstrap_read_devfs("m25p0", false, SZ_128K, SZ_256K, SZ_1M);
> +		break;
> +	}
> +
> +	bootstrap_boot(func, false);
> +	bootstrap_err("... failed\n");
> +
> +	while (1);
> +}
> +
> +static int omap_set_xload(void)
> +{
> +	barebox_main = omap_xload;
> +
> +	return 0;
> +}
> +late_initcall(omap_set_xload);
> -- 
> 1.7.10.4
> 

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC PATCH 1/1] omap: xload: switch to generic bootstrap
  2013-01-21 14:38 [RFC PATCH 1/1] omap: xload: switch to generic bootstrap Jean-Christophe PLAGNIOL-VILLARD
  2013-01-22 14:36 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2013-01-30 22:13 ` Sascha Hauer
  2013-01-31 13:16   ` Jean-Christophe PLAGNIOL-VILLARD
  2013-01-31 13:20   ` Jean-Christophe PLAGNIOL-VILLARD
  1 sibling, 2 replies; 5+ messages in thread
From: Sascha Hauer @ 2013-01-30 22:13 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

On Mon, Jan 21, 2013 at 03:38:01PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> Hi,
> 
> 	just compiled not tested

Just tested on panda, this does not work.

> +static __noreturn int omap_xload(void)
> +{
> +	int (*func)(void) = NULL;
> +
> +	switch (omap_bootsrc())
> +	{

{ should be in the previous line.

> +	case OMAP_BOOTSRC_MMC1:
> +		printf("booting from MMC1\n");
> +		func = bootstrap_read_disk("disk0.0", NULL);

For some reason the autodetection does not work, with "fat" it works. I
haven't investigated why. Anything else but fat does not make sense
anyway since the OMAP ROM code expects a FAT for the MLO here and barebox
is on the same partition.

> +		break;
> +	case OMAP_BOOTSRC_USB1:
> +		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
> +			printf("booting from USB1\n");
> +			func = bootstrap_read_disk("omap4_usbboot", "omap4_usbbootfs");

'func' is set but not used now.

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 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC PATCH 1/1] omap: xload: switch to generic bootstrap
  2013-01-30 22:13 ` Sascha Hauer
@ 2013-01-31 13:16   ` Jean-Christophe PLAGNIOL-VILLARD
  2013-01-31 13:20   ` Jean-Christophe PLAGNIOL-VILLARD
  1 sibling, 0 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-01-31 13:16 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 23:13 Wed 30 Jan     , Sascha Hauer wrote:
> On Mon, Jan 21, 2013 at 03:38:01PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> > ---
> > Hi,
> > 
> > 	just compiled not tested
> 
> Just tested on panda, this does not work.
> 
> > +static __noreturn int omap_xload(void)
> > +{
> > +	int (*func)(void) = NULL;
> > +
> > +	switch (omap_bootsrc())
> > +	{
> 
> { should be in the previous line.
> 
> > +	case OMAP_BOOTSRC_MMC1:
> > +		printf("booting from MMC1\n");
> > +		func = bootstrap_read_disk("disk0.0", NULL);
> 
> For some reason the autodetection does not work, with "fat" it works. I
> haven't investigated why. Anything else but fat does not make sense
> anyway since the OMAP ROM code expects a FAT for the MLO here and barebox
> is on the same partition.

and so I update the code and re-resend it

btw the binary is smaller with the new bootstrap code

Best Regards,
J.
> 
> > +		break;
> > +	case OMAP_BOOTSRC_USB1:
> > +		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
> > +			printf("booting from USB1\n");
> > +			func = bootstrap_read_disk("omap4_usbboot", "omap4_usbbootfs");
> 
> 'func' is set but not used now.
> 
> 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 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC PATCH 1/1] omap: xload: switch to generic bootstrap
  2013-01-30 22:13 ` Sascha Hauer
  2013-01-31 13:16   ` Jean-Christophe PLAGNIOL-VILLARD
@ 2013-01-31 13:20   ` Jean-Christophe PLAGNIOL-VILLARD
  1 sibling, 0 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-01-31 13:20 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 23:13 Wed 30 Jan     , Sascha Hauer wrote:
> On Mon, Jan 21, 2013 at 03:38:01PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> > ---
> > Hi,
> > 
> > 	just compiled not tested
> 
> Just tested on panda, this does not work.
> 
> > +static __noreturn int omap_xload(void)
> > +{
> > +	int (*func)(void) = NULL;
> > +
> > +	switch (omap_bootsrc())
> > +	{
> 
> { should be in the previous line.
> 
> > +	case OMAP_BOOTSRC_MMC1:
> > +		printf("booting from MMC1\n");
> > +		func = bootstrap_read_disk("disk0.0", NULL);
> 
> For some reason the autodetection does not work, with "fat" it works. I
> haven't investigated why. Anything else but fat does not make sense
> anyway since the OMAP ROM code expects a FAT for the MLO here and barebox
> is on the same partition.
> 
> > +		break;
> > +	case OMAP_BOOTSRC_USB1:
> > +		if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
> > +			printf("booting from USB1\n");
> > +			func = bootstrap_read_disk("omap4_usbboot", "omap4_usbbootfs");
> 
> 'func' is set but not used now.
it's 

	bootstrap_boot(func, false);

ligne 57

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-01-31 13:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-21 14:38 [RFC PATCH 1/1] omap: xload: switch to generic bootstrap Jean-Christophe PLAGNIOL-VILLARD
2013-01-22 14:36 ` Jean-Christophe PLAGNIOL-VILLARD
2013-01-30 22:13 ` Sascha Hauer
2013-01-31 13:16   ` Jean-Christophe PLAGNIOL-VILLARD
2013-01-31 13:20   ` Jean-Christophe PLAGNIOL-VILLARD

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox