From: Dalon Westergreen <dwesterg@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 1/2] SPL: add support to boot from a partition type
Date: Wed, 1 Feb 2017 08:45:37 -0800 [thread overview]
Message-ID: <1485967538-23563-1-git-send-email-dwesterg@gmail.com> (raw)
From: Dalon Westergreen <dalon.westergreen@intel.com>
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 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
---
common/spl/Kconfig | 17 +++++++++++++++++
common/spl/spl_mmc.c | 15 +++++++++++++++
disk/part_dos.c | 1 +
include/part.h | 3 +++
4 files changed, 36 insertions(+)
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index b2ba492..37e002f 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -96,6 +96,23 @@ 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
+ default 0xa2
+ 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..8119fc1 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
next reply other threads:[~2017-02-01 16:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-01 16:45 Dalon Westergreen [this message]
2017-02-01 16:45 ` [U-Boot] [PATCH v4 2/2] SPL: Move SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to Kconfig Dalon Westergreen
2017-02-03 17:05 ` Dinh Nguyen
2017-02-03 17:13 ` Dalon Westergreen
2017-02-03 17:17 ` Tom Rini
2017-02-03 19:15 ` Dalon Westergreen
-- strict thread matches above, loose matches on Subject: below --
2017-02-03 18:36 [U-Boot] [PATCH v4 0/2] SPL: Add support to boot a partition type Dalon Westergreen
2017-02-03 18:36 ` [U-Boot] [PATCH v4 1/2] SPL: add support to boot from " Dalon Westergreen
2017-02-09 10:04 ` Marek Vasut
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1485967538-23563-1-git-send-email-dwesterg@gmail.com \
--to=dwesterg@gmail.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.