All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v7 0/2] SPL: Add support to boot a partition type
@ 2017-02-10 22:58 Dalon Westergreen
  2017-02-10 22:58 ` [U-Boot] [PATCH v8 1/2] SPL: add support to boot from " Dalon Westergreen
  2017-02-10 22:58 ` [U-Boot] [PATCH v8 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig Dalon Westergreen
  0 siblings, 2 replies; 7+ messages in thread
From: Dalon Westergreen @ 2017-02-10 22:58 UTC (permalink / raw)
  To: u-boot

This adds support for the spl to seach for and boot from an arbitrary
partition type rather then a specific partition number.  When
USE_PARTITION_TYPE is enabled, spl will search for the partition type but
fallback to the specified partition number.
 
SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION is moved to a Kconfig and header and
defconfigs for the affected boards are updated.

Changes in v8:
 -> Move partition type default to arch/arm/mach-socfpga/Kconfig
Changes in v7:
 -> set part type to 0xa2 only if socfpga selected and merge previously split
    patch
Changes in V6:
 -> Fix unneeded backslash
 -> Move SPL socfpga Kconfig default to selec tin arch/arm/Kconfig
 -> Split out defconfig changes for affected boards into a separate patch

Dalon Westergreen (2):
  SPL: add support to boot from a partition type
  SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig

 arch/arm/Kconfig                 |  1 +
 common/spl/Kconfig               | 32 ++++++++++++++++++++++++++++++++
 common/spl/spl_mmc.c             | 27 ++++++++++++++++++---------
 configs/db-88f6820-gp_defconfig  |  1 +
 configs/kc1_defconfig            |  2 ++
 configs/sniper_defconfig         |  2 ++
 disk/part_dos.c                  |  1 +
 include/configs/db-88f6820-gp.h  |  1 -
 include/configs/kc1.h            |  2 --
 include/configs/sniper.h         |  2 --
 include/configs/socfpga_common.h |  2 --
 include/part.h                   |  3 +++
 12 files changed, 60 insertions(+), 16 deletions(-)

-- 
2.7.4

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

* [U-Boot] [PATCH v8 1/2] SPL: add support to boot from a partition type
  2017-02-10 22:58 [U-Boot] [PATCH v7 0/2] SPL: Add support to boot a partition type Dalon Westergreen
@ 2017-02-10 22:58 ` Dalon Westergreen
  2017-02-10 23:47   ` Marek Vasut
  2017-02-10 22:58 ` [U-Boot] [PATCH v8 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig Dalon Westergreen
  1 sibling, 1 reply; 7+ messages in thread
From: Dalon Westergreen @ 2017-02-10 22:58 UTC (permalink / raw)
  To: u-boot

the socfpga bootrom supports mmc booting from either a raw image
starting at 0x0, or from a partition of type 0xa2.  This patch
adds support for locating the boot image in the first type 0xa2
partition found.

Assigned a partition number of -1 will cause a search for a
partition of type CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
and use it to find the u-boot image

Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>

--
Changes in v8:
 - Move partition type default to arch/arm/mach-socfpga/Kconfig
Changes in v7:
 - set part type to 0xa2 only if socfpga selected
Changes in V6:
 - Remove unneeded backslash
Changes in V5:
 - fix styling in if (..) per Tom's request
Changes in V4:
 - Try search for partition type and failover to the defined
   partition number
Changes in V3:
 - Add depends on DOS_PARTITION
 - Ensure that PARTTION_TYPE defaults to non-zero
 - Add ifdef around sys_ind in disk_partition structure
Changes in V2:
 - Merge partition search into single partition function
---
 arch/arm/mach-socfpga/Kconfig |  3 +++
 common/spl/Kconfig            | 16 ++++++++++++++++
 common/spl/spl_mmc.c          | 15 +++++++++++++++
 disk/part_dos.c               |  1 +
 include/part.h                |  3 +++
 5 files changed, 38 insertions(+)

diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
index df9e8d4..6fd724e 100644
--- a/arch/arm/mach-socfpga/Kconfig
+++ b/arch/arm/mach-socfpga/Kconfig
@@ -27,6 +27,9 @@ config SPL_SPI_SUPPORT
 config SPL_WATCHDOG_SUPPORT
 	default y
 
+config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
+	default 0xa2
+
 config TARGET_SOCFPGA_ARRIA5
 	bool
 	select TARGET_SOCFPGA_GEN5
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index cf714c2..3cdd200 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -96,6 +96,22 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
 	  Address on the MMC to load U-Boot from, when the MMC is being used
 	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).
 
+config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
+	bool "MMC raw mode: by partition type"
+	depends on SPL && DOS_PARTITION
+	default y if ARCH_SOCFPGA
+	help
+	  Use partition type for specifying U-Boot partition on MMC/SD in
+	  raw mode. U-Boot will be loaded from the first partition of this
+	  type to be found.
+
+config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
+	hex "Partition Type on the MMC to load U-Boot from"
+	depends on SPL && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
+	help
+	  Partition Type on the MMC to load U-Boot from, when the MMC is being
+	  used in raw mode.
+
 config TPL
 	bool
 	depends on SPL && SUPPORT_TPL
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 0cd355c..fb51fd5 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -157,6 +157,21 @@ static int mmc_load_image_raw_partition(struct spl_image_info *spl_image,
 	disk_partition_t info;
 	int err;
 
+#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
+	int type_part;
+	/* Only support MBR so DOS_ENTRY_NUMBERS */
+	for (type_part = 1; type_part <= DOS_ENTRY_NUMBERS; type_part++) {
+		err = part_get_info(mmc_get_blk_desc(mmc), type_part, &info);
+		if (err)
+			continue;
+		if (info.sys_ind == 
+			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE) {
+			partition = type_part;
+			break;
+		}
+	}
+#endif
+
 	err = part_get_info(mmc_get_blk_desc(mmc), partition, &info);
 	if (err) {
 #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
diff --git a/disk/part_dos.c b/disk/part_dos.c
index c77d881..7ede15e 100644
--- a/disk/part_dos.c
+++ b/disk/part_dos.c
@@ -217,6 +217,7 @@ static int part_get_info_extended(struct blk_desc *dev_desc,
 #if CONFIG_IS_ENABLED(PARTITION_UUIDS)
 			sprintf(info->uuid, "%08x-%02x", disksig, part_num);
 #endif
+			info->sys_ind = pt->sys_ind;
 			return 0;
 		}
 
diff --git a/include/part.h b/include/part.h
index 9d0e20d..b6d1b33 100644
--- a/include/part.h
+++ b/include/part.h
@@ -59,6 +59,9 @@ typedef struct disk_partition {
 #ifdef CONFIG_PARTITION_TYPE_GUID
 	char	type_guid[37];	/* type GUID as string, if exists	*/
 #endif
+#ifdef CONFIG_DOS_PARTITION
+	uchar	sys_ind;	/* partition type 			*/
+#endif
 } disk_partition_t;
 
 /* Misc _get_dev functions */
-- 
2.7.4

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

* [U-Boot] [PATCH v8 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig
  2017-02-10 22:58 [U-Boot] [PATCH v7 0/2] SPL: Add support to boot a partition type Dalon Westergreen
  2017-02-10 22:58 ` [U-Boot] [PATCH v8 1/2] SPL: add support to boot from " Dalon Westergreen
@ 2017-02-10 22:58 ` Dalon Westergreen
  2017-02-11  3:25   ` Tom Rini
  1 sibling, 1 reply; 7+ messages in thread
From: Dalon Westergreen @ 2017-02-10 22:58 UTC (permalink / raw)
  To: u-boot

Added SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION and
SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig.

Due to SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION being moved to
Kconfig the board defconfigs for db-88f6820-gp_defconfig
kc1_defconfig and sniper_defconfig need to be updated.

Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>

--
Changes in v4:
  - merge defconfig changes into single patch
Changes in v3:
  - Split off defconfig changes for db-88f6820-gp_defconfig
    kc1_defconfig and sniper_defconfig into a separate patch
Changes in v2:
  - Remove SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION from socfpga_common.h
  - wrong ifdef around mmc_load_image_raw_partition should be
    CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
---
 arch/arm/Kconfig                 |  1 +
 common/spl/Kconfig               | 17 ++++++++++++++++-
 common/spl/spl_mmc.c             | 12 +++---------
 configs/db-88f6820-gp_defconfig  |  1 +
 configs/kc1_defconfig            |  2 ++
 configs/sniper_defconfig         |  2 ++
 include/configs/db-88f6820-gp.h  |  1 -
 include/configs/kc1.h            |  2 --
 include/configs/sniper.h         |  2 --
 include/configs/socfpga_common.h |  2 --
 10 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0229800..e84b74e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -633,6 +633,7 @@ config ARCH_SOCFPGA
 	select ENABLE_ARM_SOC_BOOT0_HOOK
 	select ARCH_EARLY_INIT_R
 	select ARCH_MISC_INIT
+	select SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
 
 config TARGET_CM_T43
 	bool "Support cm_t43"
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 3cdd200..8468ebf 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -96,9 +96,24 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
 	  Address on the MMC to load U-Boot from, when the MMC is being used
 	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).
 
+config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
+	bool "MMC Raw mode: by partition"
+	depends on SPL
+	help
+	  Use a partition for loading U-Boot when using MMC/SD in raw mode.
+
+config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
+	hex "Partition to use to load U-Boot from"
+	depends on SPL && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
+	default 1
+	help
+	  Partition on the MMC to load U-Boot from when the MMC is being
+	  used in raw mode
+
 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
 	bool "MMC raw mode: by partition type"
-	depends on SPL && DOS_PARTITION
+	depends on SPL && DOS_PARTITION && \
+		SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
 	default y if ARCH_SOCFPGA
 	help
 	  Use partition type for specifying U-Boot partition on MMC/SD in
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index fb51fd5..18c1b59 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -150,7 +150,7 @@ static int spl_mmc_find_device(struct mmc **mmcp, u32 boot_device)
 	return 0;
 }
 
-#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
+#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
 static int mmc_load_image_raw_partition(struct spl_image_info *spl_image,
 					struct mmc *mmc, int partition)
 {
@@ -187,13 +187,6 @@ static int mmc_load_image_raw_partition(struct spl_image_info *spl_image,
 	return mmc_load_image_raw_sector(spl_image, mmc, info.start);
 #endif
 }
-#else
-#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION -1
-static int mmc_load_image_raw_partition(struct spl_image_info *spl_image,
-					struct mmc *mmc, int partition)
-{
-	return -ENOSYS;
-}
 #endif
 
 #ifdef CONFIG_SPL_OS_BOOT
@@ -341,11 +334,12 @@ int spl_mmc_load_image(struct spl_image_info *spl_image,
 			if (!err)
 				return err;
 		}
-
+#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
 		err = mmc_load_image_raw_partition(spl_image, mmc,
 			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION);
 		if (!err)
 			return err;
+#endif
 #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
 		err = mmc_load_image_raw_sector(spl_image, mmc,
 			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
diff --git a/configs/db-88f6820-gp_defconfig b/configs/db-88f6820-gp_defconfig
index 1347550..fec5e56 100644
--- a/configs/db-88f6820-gp_defconfig
+++ b/configs/db-88f6820-gp_defconfig
@@ -51,3 +51,4 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
diff --git a/configs/kc1_defconfig b/configs/kc1_defconfig
index d9895d7..ffaaec3 100644
--- a/configs/kc1_defconfig
+++ b/configs/kc1_defconfig
@@ -36,3 +36,5 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_OF_LIBFDT=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=2
diff --git a/configs/sniper_defconfig b/configs/sniper_defconfig
index fbdbc0c..9dd737f 100644
--- a/configs/sniper_defconfig
+++ b/configs/sniper_defconfig
@@ -37,3 +37,5 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_OF_LIBFDT=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=2
diff --git a/include/configs/db-88f6820-gp.h b/include/configs/db-88f6820-gp.h
index 1fdeedd..cc2bfbe 100644
--- a/include/configs/db-88f6820-gp.h
+++ b/include/configs/db-88f6820-gp.h
@@ -123,7 +123,6 @@
 
 #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SDIO_MMC_CARD
 /* SPL related MMC defines */
-#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION 1
 #define CONFIG_SYS_MMC_U_BOOT_OFFS		(160 << 10)
 #define CONFIG_SYS_U_BOOT_OFFS			CONFIG_SYS_MMC_U_BOOT_OFFS
 #ifdef CONFIG_SPL_BUILD
diff --git a/include/configs/kc1.h b/include/configs/kc1.h
index 33b6a98..fed70f9 100644
--- a/include/configs/kc1.h
+++ b/include/configs/kc1.h
@@ -113,8 +113,6 @@
 #define CONFIG_SPL_LDSCRIPT		"arch/arm/mach-omap2/u-boot-spl.lds"
 #define CONFIG_SPL_BOARD_INIT
 
-#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION	2
-
 /*
  * Console
  */
diff --git a/include/configs/sniper.h b/include/configs/sniper.h
index 4f8a9f8..06519fb 100644
--- a/include/configs/sniper.h
+++ b/include/configs/sniper.h
@@ -121,8 +121,6 @@
 #define CONFIG_SPL_LDSCRIPT		"arch/arm/mach-omap2/u-boot-spl.lds"
 #define CONFIG_SPL_BOARD_INIT
 
-#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION	2
-
 #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION		1
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME			"u-boot.img"
 
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
index 8bbe3c5..a5725cb 100644
--- a/include/configs/socfpga_common.h
+++ b/include/configs/socfpga_common.h
@@ -311,8 +311,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
 #if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
 #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	2
 #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME		"u-boot-dtb.img"
-#else
-#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION	1
 #endif
 #endif
 
-- 
2.7.4

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

* [U-Boot] [PATCH v8 1/2] SPL: add support to boot from a partition type
  2017-02-10 22:58 ` [U-Boot] [PATCH v8 1/2] SPL: add support to boot from " Dalon Westergreen
@ 2017-02-10 23:47   ` Marek Vasut
  2017-02-11  0:04     ` Dalon Westergreen
  0 siblings, 1 reply; 7+ messages in thread
From: Marek Vasut @ 2017-02-10 23:47 UTC (permalink / raw)
  To: u-boot

On 02/10/2017 11:58 PM, Dalon Westergreen wrote:
> the socfpga bootrom supports mmc booting from either a raw image
> starting at 0x0, or from a partition of type 0xa2.  This patch
> adds support for locating the boot image in the first type 0xa2
> partition found.
> 
> Assigned a partition number of -1 will cause a search for a
> partition of type CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> and use it to find the u-boot image
> 
> Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>
> 
> --
> Changes in v8:
>  - Move partition type default to arch/arm/mach-socfpga/Kconfig
> Changes in v7:
>  - set part type to 0xa2 only if socfpga selected
> Changes in V6:
>  - Remove unneeded backslash
> Changes in V5:
>  - fix styling in if (..) per Tom's request
> Changes in V4:
>  - Try search for partition type and failover to the defined
>    partition number
> Changes in V3:
>  - Add depends on DOS_PARTITION
>  - Ensure that PARTTION_TYPE defaults to non-zero
>  - Add ifdef around sys_ind in disk_partition structure
> Changes in V2:
>  - Merge partition search into single partition function
> ---
>  arch/arm/mach-socfpga/Kconfig |  3 +++
>  common/spl/Kconfig            | 16 ++++++++++++++++
>  common/spl/spl_mmc.c          | 15 +++++++++++++++
>  disk/part_dos.c               |  1 +
>  include/part.h                |  3 +++
>  5 files changed, 38 insertions(+)
> 
> diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
> index df9e8d4..6fd724e 100644
> --- a/arch/arm/mach-socfpga/Kconfig
> +++ b/arch/arm/mach-socfpga/Kconfig
> @@ -27,6 +27,9 @@ config SPL_SPI_SUPPORT
>  config SPL_WATCHDOG_SUPPORT
>  	default y
>  
> +config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> +	default 0xa2
> +
>  config TARGET_SOCFPGA_ARRIA5
>  	bool
>  	select TARGET_SOCFPGA_GEN5
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index cf714c2..3cdd200 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -96,6 +96,22 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
>  	  Address on the MMC to load U-Boot from, when the MMC is being used
>  	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).
>  
> +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> +	bool "MMC raw mode: by partition type"
> +	depends on SPL && DOS_PARTITION
> +	default y if ARCH_SOCFPGA

SoCFPGA should select this, ARCH_SOCFPGA has nothing to do in common
stuff :)

> +	help
> +	  Use partition type for specifying U-Boot partition on MMC/SD in
> +	  raw mode. U-Boot will be loaded from the first partition of this
> +	  type to be found.
> +
> +config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> +	hex "Partition Type on the MMC to load U-Boot from"
> +	depends on SPL && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> +	help
> +	  Partition Type on the MMC to load U-Boot from, when the MMC is being
> +	  used in raw mode.
> +
>  config TPL
>  	bool
>  	depends on SPL && SUPPORT_TPL
> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> index 0cd355c..fb51fd5 100644
> --- a/common/spl/spl_mmc.c
> +++ b/common/spl/spl_mmc.c
> @@ -157,6 +157,21 @@ static int mmc_load_image_raw_partition(struct spl_image_info *spl_image,
>  	disk_partition_t info;
>  	int err;
>  
> +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> +	int type_part;
> +	/* Only support MBR so DOS_ENTRY_NUMBERS */
> +	for (type_part = 1; type_part <= DOS_ENTRY_NUMBERS; type_part++) {
> +		err = part_get_info(mmc_get_blk_desc(mmc), type_part, &info);
> +		if (err)
> +			continue;
> +		if (info.sys_ind == 
> +			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE) {
> +			partition = type_part;
> +			break;
> +		}
> +	}
> +#endif
> +
>  	err = part_get_info(mmc_get_blk_desc(mmc), partition, &info);
>  	if (err) {
>  #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> diff --git a/disk/part_dos.c b/disk/part_dos.c
> index c77d881..7ede15e 100644
> --- a/disk/part_dos.c
> +++ b/disk/part_dos.c
> @@ -217,6 +217,7 @@ static int part_get_info_extended(struct blk_desc *dev_desc,
>  #if CONFIG_IS_ENABLED(PARTITION_UUIDS)
>  			sprintf(info->uuid, "%08x-%02x", disksig, part_num);
>  #endif
> +			info->sys_ind = pt->sys_ind;
>  			return 0;
>  		}
>  
> diff --git a/include/part.h b/include/part.h
> index 9d0e20d..b6d1b33 100644
> --- a/include/part.h
> +++ b/include/part.h
> @@ -59,6 +59,9 @@ typedef struct disk_partition {
>  #ifdef CONFIG_PARTITION_TYPE_GUID
>  	char	type_guid[37];	/* type GUID as string, if exists	*/
>  #endif
> +#ifdef CONFIG_DOS_PARTITION
> +	uchar	sys_ind;	/* partition type 			*/
> +#endif
>  } disk_partition_t;
>  
>  /* Misc _get_dev functions */
> 


-- 
Best regards,
Marek Vasut

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

* [U-Boot] [PATCH v8 1/2] SPL: add support to boot from a partition type
  2017-02-10 23:47   ` Marek Vasut
@ 2017-02-11  0:04     ` Dalon Westergreen
  2017-02-11  3:25       ` Tom Rini
  0 siblings, 1 reply; 7+ messages in thread
From: Dalon Westergreen @ 2017-02-11  0:04 UTC (permalink / raw)
  To: u-boot

On Sat, 2017-02-11 at 00:47 +0100, Marek Vasut wrote:
> On 02/10/2017 11:58 PM, Dalon Westergreen wrote:
> > 
> > the socfpga bootrom supports mmc booting from either a raw image
> > starting at 0x0, or from a partition of type 0xa2.??This patch
> > adds support for locating the boot image in the first type 0xa2
> > partition found.
> > 
> > Assigned a partition number of -1 will cause a search for a
> > partition of type CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> > and use it to find the u-boot image
> > 
> > Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>
> > 
> > --
> > Changes in v8:
> > ?- Move partition type default to arch/arm/mach-socfpga/Kconfig
> > Changes in v7:
> > ?- set part type to 0xa2 only if socfpga selected
> > Changes in V6:
> > ?- Remove unneeded backslash
> > Changes in V5:
> > ?- fix styling in if (..) per Tom's request
> > Changes in V4:
> > ?- Try search for partition type and failover to the defined
> > ???partition number
> > Changes in V3:
> > ?- Add depends on DOS_PARTITION
> > ?- Ensure that PARTTION_TYPE defaults to non-zero
> > ?- Add ifdef around sys_ind in disk_partition structure
> > Changes in V2:
> > ?- Merge partition search into single partition function
> > ---
> > ?arch/arm/mach-socfpga/Kconfig |??3 +++
> > ?common/spl/Kconfig????????????| 16 ++++++++++++++++
> > ?common/spl/spl_mmc.c??????????| 15 +++++++++++++++
> > ?disk/part_dos.c???????????????|??1 +
> > ?include/part.h????????????????|??3 +++
> > ?5 files changed, 38 insertions(+)
> > 
> > diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
> > index df9e8d4..6fd724e 100644
> > --- a/arch/arm/mach-socfpga/Kconfig
> > +++ b/arch/arm/mach-socfpga/Kconfig
> > @@ -27,6 +27,9 @@ config SPL_SPI_SUPPORT
> > ?config SPL_WATCHDOG_SUPPORT
> > ?	default y
> > ?
> > +config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> > +	default 0xa2
> > +
> > ?config TARGET_SOCFPGA_ARRIA5
> > ?	bool
> > ?	select TARGET_SOCFPGA_GEN5
> > diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> > index cf714c2..3cdd200 100644
> > --- a/common/spl/Kconfig
> > +++ b/common/spl/Kconfig
> > @@ -96,6 +96,22 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
> > ?	??Address on the MMC to load U-Boot from, when the MMC is being
> > used
> > ?	??in raw mode. Units: MMC sectors (1 sector = 512 bytes).
> > ?
> > +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> > +	bool "MMC raw mode: by partition type"
> > +	depends on SPL && DOS_PARTITION
> > +	default y if ARCH_SOCFPGA
> 
> SoCFPGA should select this, ARCH_SOCFPGA has nothing to do in common
> stuff :)
> 
Odd, i did test it and it worked in hw

> > 
> > +	help
> > +	??Use partition type for specifying U-Boot partition on MMC/SD in
> > +	??raw mode. U-Boot will be loaded from the first partition of this
> > +	??type to be found.
> > +
> > +config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> > +	hex "Partition Type on the MMC to load U-Boot from"
> > +	depends on SPL && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> > +	help
> > +	??Partition Type on the MMC to load U-Boot from, when the MMC is
> > being
> > +	??used in raw mode.
> > +
> > ?config TPL
> > ?	bool
> > ?	depends on SPL && SUPPORT_TPL
> > diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> > index 0cd355c..fb51fd5 100644
> > --- a/common/spl/spl_mmc.c
> > +++ b/common/spl/spl_mmc.c
> > @@ -157,6 +157,21 @@ static int mmc_load_image_raw_partition(struct
> > spl_image_info *spl_image,
> > ?	disk_partition_t info;
> > ?	int err;
> > ?
> > +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> > +	int type_part;
> > +	/* Only support MBR so DOS_ENTRY_NUMBERS */
> > +	for (type_part = 1; type_part <= DOS_ENTRY_NUMBERS; type_part++) {
> > +		err = part_get_info(mmc_get_blk_desc(mmc), type_part,
> > &info);
> > +		if (err)
> > +			continue;
> > +		if (info.sys_ind ==?
> > +			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE) {
> > +			partition = type_part;
> > +			break;
> > +		}
> > +	}
> > +#endif
> > +
> > ?	err = part_get_info(mmc_get_blk_desc(mmc), partition, &info);
> > ?	if (err) {
> > ?#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> > diff --git a/disk/part_dos.c b/disk/part_dos.c
> > index c77d881..7ede15e 100644
> > --- a/disk/part_dos.c
> > +++ b/disk/part_dos.c
> > @@ -217,6 +217,7 @@ static int part_get_info_extended(struct blk_desc
> > *dev_desc,
> > ?#if CONFIG_IS_ENABLED(PARTITION_UUIDS)
> > ?			sprintf(info->uuid, "%08x-%02x", disksig,
> > part_num);
> > ?#endif
> > +			info->sys_ind = pt->sys_ind;
> > ?			return 0;
> > ?		}
> > ?
> > diff --git a/include/part.h b/include/part.h
> > index 9d0e20d..b6d1b33 100644
> > --- a/include/part.h
> > +++ b/include/part.h
> > @@ -59,6 +59,9 @@ typedef struct disk_partition {
> > ?#ifdef CONFIG_PARTITION_TYPE_GUID
> > ?	char	type_guid[37];	/* type GUID as string, if exists
> > 	*/
> > ?#endif
> > +#ifdef CONFIG_DOS_PARTITION
> > +	uchar	sys_ind;	/* partition type?			
> > */
> > +#endif
> > ?} disk_partition_t;
> > ?
> > ?/* Misc _get_dev functions */
> > 
> 
> 

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

* [U-Boot] [PATCH v8 1/2] SPL: add support to boot from a partition type
  2017-02-11  0:04     ` Dalon Westergreen
@ 2017-02-11  3:25       ` Tom Rini
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Rini @ 2017-02-11  3:25 UTC (permalink / raw)
  To: u-boot

On Fri, Feb 10, 2017 at 04:04:48PM -0800, Dalon Westergreen wrote:
> On Sat, 2017-02-11 at 00:47 +0100, Marek Vasut wrote:
> > On 02/10/2017 11:58 PM, Dalon Westergreen wrote:
> > > 
> > > the socfpga bootrom supports mmc booting from either a raw image
> > > starting at 0x0, or from a partition of type 0xa2.??This patch
> > > adds support for locating the boot image in the first type 0xa2
> > > partition found.
> > > 
> > > Assigned a partition number of -1 will cause a search for a
> > > partition of type CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> > > and use it to find the u-boot image
> > > 
> > > Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>
> > > 
> > > --
> > > Changes in v8:
> > > ?- Move partition type default to arch/arm/mach-socfpga/Kconfig
> > > Changes in v7:
> > > ?- set part type to 0xa2 only if socfpga selected
> > > Changes in V6:
> > > ?- Remove unneeded backslash
> > > Changes in V5:
> > > ?- fix styling in if (..) per Tom's request
> > > Changes in V4:
> > > ?- Try search for partition type and failover to the defined
> > > ???partition number
> > > Changes in V3:
> > > ?- Add depends on DOS_PARTITION
> > > ?- Ensure that PARTTION_TYPE defaults to non-zero
> > > ?- Add ifdef around sys_ind in disk_partition structure
> > > Changes in V2:
> > > ?- Merge partition search into single partition function
> > > ---
> > > ?arch/arm/mach-socfpga/Kconfig |??3 +++
> > > ?common/spl/Kconfig????????????| 16 ++++++++++++++++
> > > ?common/spl/spl_mmc.c??????????| 15 +++++++++++++++
> > > ?disk/part_dos.c???????????????|??1 +
> > > ?include/part.h????????????????|??3 +++
> > > ?5 files changed, 38 insertions(+)
> > > 
> > > diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
> > > index df9e8d4..6fd724e 100644
> > > --- a/arch/arm/mach-socfpga/Kconfig
> > > +++ b/arch/arm/mach-socfpga/Kconfig
> > > @@ -27,6 +27,9 @@ config SPL_SPI_SUPPORT
> > > ?config SPL_WATCHDOG_SUPPORT
> > > ?	default y
> > > ?
> > > +config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
> > > +	default 0xa2
> > > +
> > > ?config TARGET_SOCFPGA_ARRIA5
> > > ?	bool
> > > ?	select TARGET_SOCFPGA_GEN5
> > > diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> > > index cf714c2..3cdd200 100644
> > > --- a/common/spl/Kconfig
> > > +++ b/common/spl/Kconfig
> > > @@ -96,6 +96,22 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
> > > ?	??Address on the MMC to load U-Boot from, when the MMC is being
> > > used
> > > ?	??in raw mode. Units: MMC sectors (1 sector = 512 bytes).
> > > ?
> > > +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> > > +	bool "MMC raw mode: by partition type"
> > > +	depends on SPL && DOS_PARTITION
> > > +	default y if ARCH_SOCFPGA
> > 
> > SoCFPGA should select this, ARCH_SOCFPGA has nothing to do in common
> > stuff :)
> > 
> Odd, i did test it and it worked in hw

Lets just set this part aside.  The most correct answer is that once the
'imply' keyword is in our Kconfig support we'll move this and tons of
other stuff up to the right level Kconfig where SoCs and boards can say
what reasonable things are based on what's optional and non-optional.

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170210/b98b341e/attachment.sig>

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

* [U-Boot] [PATCH v8 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig
  2017-02-10 22:58 ` [U-Boot] [PATCH v8 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig Dalon Westergreen
@ 2017-02-11  3:25   ` Tom Rini
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Rini @ 2017-02-11  3:25 UTC (permalink / raw)
  To: u-boot

On Fri, Feb 10, 2017 at 02:58:40PM -0800, Dalon Westergreen wrote:

> Added SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION and
> SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig.
> 
> Due to SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION being moved to
> Kconfig the board defconfigs for db-88f6820-gp_defconfig
> kc1_defconfig and sniper_defconfig need to be updated.
> 
> Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>
> 
> --
> Changes in v4:
>   - merge defconfig changes into single patch
> Changes in v3:
>   - Split off defconfig changes for db-88f6820-gp_defconfig
>     kc1_defconfig and sniper_defconfig into a separate patch
> Changes in v2:
>   - Remove SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION from socfpga_common.h
>   - wrong ifdef around mmc_load_image_raw_partition should be
>     CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170210/94c72c06/attachment.sig>

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

end of thread, other threads:[~2017-02-11  3:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-10 22:58 [U-Boot] [PATCH v7 0/2] SPL: Add support to boot a partition type Dalon Westergreen
2017-02-10 22:58 ` [U-Boot] [PATCH v8 1/2] SPL: add support to boot from " Dalon Westergreen
2017-02-10 23:47   ` Marek Vasut
2017-02-11  0:04     ` Dalon Westergreen
2017-02-11  3:25       ` Tom Rini
2017-02-10 22:58 ` [U-Boot] [PATCH v8 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig Dalon Westergreen
2017-02-11  3:25   ` Tom Rini

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.