From patchwork Wed Feb 1 16:45:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dalon Westergreen X-Patchwork-Id: 722616 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3vD8Cc4hPzz9sdn for ; Thu, 2 Feb 2017 03:46:20 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LKmYg+Ol"; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EEA564A08A; Wed, 1 Feb 2017 17:46:18 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OMjOAZn_mj3Z; Wed, 1 Feb 2017 17:46:18 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 30EC44A068; Wed, 1 Feb 2017 17:46:18 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D9BCD4A068 for ; Wed, 1 Feb 2017 17:45:50 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RkYlGrEG1C_7 for ; Wed, 1 Feb 2017 17:45:50 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-pf0-f195.google.com (mail-pf0-f195.google.com [209.85.192.195]) by theia.denx.de (Postfix) with ESMTPS id 1FF8A4A01E for ; Wed, 1 Feb 2017 17:45:47 +0100 (CET) Received: by mail-pf0-f195.google.com with SMTP id e4so32080345pfg.0 for ; Wed, 01 Feb 2017 08:45:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=b7prymz41xcsSaKBCREST1DZ7jC9kXdMnrqDcH0uP0Q=; b=LKmYg+Ol1Wsffm3nDDAjBZfCH4Hfq+sXGum9GuB1RLCepQ6SB8zbDJvDfwLuBcXrcH j7OFj7x/suJC+vNOjp9YhfXrlgzfCf9JNaypeEbYGBMCBCk6ZNEWKwDwMcZmmwoAlqlu m/Ti3C/qdx19L7NejvUHYNCxh2wAAOcWYpJy/xNkuvUjfqYAQfJKdACd1LCNp8ndB06G dh7KLNnFHVSOHiP3WaabwAnl8H/XkJEltPHUBeaXWkvmrmNLg8lAo2pcdJSHX8opNfn3 9jD4F5v1ioRz0u/wAed/ull5nXaJu7mNHAOVYwi0A+y2RCUNztQiv4izVBvYBY2/GLg9 /f6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=b7prymz41xcsSaKBCREST1DZ7jC9kXdMnrqDcH0uP0Q=; b=hJ0IZJdR6/fOxJU73n04yqRV90vyb/krWc0EIAKqiNKcYQhPOSfGnKPMkNIR1AgbnZ kZGtxvxMNEjDGnXoQETymhqIYy6sTCsLZhHJdXFpG6Apol1r97NtdzlWZAZXIvNz96Bh z2NK/Xe6PhDCd+iTnrHOXkHw62Ys1hXvJPa8Nw2Vc0F4CxI6yLvCD5iEET7lleTgX5I/ FttAWtjJgJVo6Q66BI016aQB+QFYT6F42IAlU11xAQFxlwv843YiMLd+xMWjcg4Rn8ow QqtgzWAtzOE0JxYHmw8KyhFrXPu/VAUeWadW2xJ7plcK0+LYuUAp9wZzidttU4D3VxIm cOkg== X-Gm-Message-State: AIkVDXLsgRRK19a+usm/rTX9Od476rcAFpNYFLXIvrbBrmUNj5CVOrnW0AjLmlZAlqSMyQ== X-Received: by 10.84.218.5 with SMTP id q5mr5799466pli.80.1485967545735; Wed, 01 Feb 2017 08:45:45 -0800 (PST) Received: from dwesterg-mobl1.amr.corp.intel.com ([134.134.139.78]) by smtp.gmail.com with ESMTPSA id g87sm50959782pfj.20.2017.02.01.08.45.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Feb 2017 08:45:45 -0800 (PST) From: Dalon Westergreen To: agraf@suse.de, trini@konsulko.com, dinguyen@kernel.org, marex@denx.de, u-boot@lists.denx.de Date: Wed, 1 Feb 2017 08:45:37 -0800 Message-Id: <1485967538-23563-1-git-send-email-dwesterg@gmail.com> X-Mailer: git-send-email 2.7.4 Cc: Dalon Westergreen Subject: [U-Boot] [PATCH v4 1/2] SPL: add support to boot from a partition type X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Dalon Westergreen 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 --- 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 */