From patchwork Mon Dec 11 11:56:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 846930 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ywM3L39HPz9s5L for ; Mon, 11 Dec 2017 23:00:30 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 29062C21D75; Mon, 11 Dec 2017 11:58:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5F2B0C21DC5; Mon, 11 Dec 2017 11:57:10 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id ACB2FC21C41; Mon, 11 Dec 2017 11:57:02 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 2A8B5C21CEC for ; Mon, 11 Dec 2017 11:57:02 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0MRkhB-1eV99n3q2r-00Sv3D; Mon, 11 Dec 2017 12:56:51 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 11 Dec 2017 12:56:39 +0100 Message-Id: <20171211115644.14015-2-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171211115644.14015-1-xypron.glpk@gmx.de> References: <20171211115644.14015-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:+Y1bFO25XlXC5J5ohZPu8fIwLPxmLaVJ4GoRtvoOo7PueqomXQp zEeyPyQ4/G4B2HZiX5S3hB4jI+fBJWsnzWkcMYHVmpI+HL9RNWoI6939bvK70KMtF/0X86a SvugPEWbPjnxpi5q5Hyj1bS+fYBpFF6bEM0R4O/QiK3mV42CSov8VqQClSQGSaBnpZ51Oqx qUEtH+CYZAA2jU7NC34Qw== X-UI-Out-Filterresults: notjunk:1; V01:K0:N/XRUuCI1HA=:XfluIBGswd12rnrdNr9yPC tzpg9IxUfpNG0AqVQg8xtCuSK1qsCx6pH8T2W53dHVawgoUgaD7TyMwNtMHKBhuNsj34PT/Ef OxmxRrD/4elwOidcuDtLgtFeSFJu/sGuW+jq+yFpi3mMqSf2EmsV+Sl65CcK2mqdlR9Ty/2VR xdgnuIRdEn9B/30kgrrxPsIqfbiZ6/WjfLWTucStwAaKo/q+6/ru0MG3G2cFT5ury1Om5Ielf /LAOSRW0hug803qAUyeN2PcSUIDA6fJ6s/cnYer1oYtzc2p3hdM1sOplI3FUHcmrACAfM7RlG 6ejC23NMbyPgrVWZLPt7IDPnedle+u/sKZHf/Vupc7LOJAyMq6JoFx1BGaWEXCPrhWwhAgVCo ZnCL+RfeZvhsgPW0fcq4YoW3Nd7hJXhuZDKYD9eAX+ZxFyOnzH/gNaxPJHgjRng8b7sf+3yl1 IQP/gZn8maHqHA8kVXeS4Ej0a3EmDyU9fszbZAbRCDQ+Is7vm6Z6HOEBXF+11LMc5Tz9Tcogq ELPVTAZAyEli4rjajNRuOfXWxxys53A/yJgNuZ1M1j8bo2QLNPjeB3vOu6pGJeXRj34M9XBUQ FVHQIz90kuMPCh4QsZMz7xbEHHGijhURFFoqC4E7ndRp3u7usHEN0iJ23gqPbaaAswQRnBdaW gAwRYO2VwSRraZdw+Ixg1g/ToAaL0BJu1uRkSZMYsZ0jRXzCb0Mog+BRicDhTFkk+Pc15m6Ws Akeo+pzGmw/8D1VhHHBcz7uEN3/wQZV3Rdc0lm/ye5X90t5PRt5FvtOhEOoJftfdp9oCQBTBk 5nnvQ3R8vcaJDGTZObLXBhLi0a0+Q== Cc: u-boot@lists.denx.de, Jonathan Gray , Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 1/6] efi_loader: correctly determine if an MMC device is an SD-card X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" The SD cards and eMMC devices have different device nodes. The current coding interpretes all MMC devices as eMMC. Signed-off-by: Heinrich Schuchardt --- v3 no change v2 no change --- lib/efi_loader/efi_device_path.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index b4e2f933cb..42fe6e1185 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -36,6 +36,24 @@ static const struct efi_device_path_vendor ROOT = { .guid = U_BOOT_GUID, }; +#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC) +/* + * Determine if an MMC device is an SD card. + * + * @desc block device descriptor + * @return true if the device is an SD card + */ +static bool is_sd(struct blk_desc *desc) +{ + struct mmc *mmc = find_mmc_device(desc->devnum); + + if (!mmc) + return false; + + return IS_SD(mmc) != 0U; +} +#endif + static void *dp_alloc(size_t sz) { void *buf; @@ -298,9 +316,9 @@ static void *dp_fill(void *buf, struct udevice *dev) struct blk_desc *desc = mmc_get_blk_desc(mmc); sddp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; - sddp->dp.sub_type = (desc->if_type == IF_TYPE_MMC) ? - DEVICE_PATH_SUB_TYPE_MSG_MMC : - DEVICE_PATH_SUB_TYPE_MSG_SD; + sddp->dp.sub_type = is_sd(desc) ? + DEVICE_PATH_SUB_TYPE_MSG_SD : + DEVICE_PATH_SUB_TYPE_MSG_MMC; sddp->dp.length = sizeof(*sddp); sddp->slot_number = dev->seq; From patchwork Mon Dec 11 11:56:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 846927 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ywLzk3yVhz9s5L for ; Mon, 11 Dec 2017 22:57:21 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id B32E3C21DB2; Mon, 11 Dec 2017 11:57:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 3B0B9C21C57; Mon, 11 Dec 2017 11:57:03 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EDB19C21C41; Mon, 11 Dec 2017 11:57:01 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 77F1BC21C4C for ; Mon, 11 Dec 2017 11:57:01 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0M4ScS-1fGKH11Idg-00yfJW; Mon, 11 Dec 2017 12:56:51 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 11 Dec 2017 12:56:40 +0100 Message-Id: <20171211115644.14015-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171211115644.14015-1-xypron.glpk@gmx.de> References: <20171211115644.14015-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:FslOMlwEIUbXxaKjX4i9Kh6ODGJG5iNBmMHv+JmIN4Z0d73eu0g SxnxbSydNBMJnlcre1TUfEEunyDbXp2zAcvA2FIXa0W4Qb+k+4XHjnEEefAhldLp486209D leoGFGmyK12XQox/4E+rZZpc1bcm6F1Lx/ZO4a8yhtuaBulxQ0wY/180tq0M/hFedxByVQw 6SC1FJgZl1Zrv2vA3Swmg== X-UI-Out-Filterresults: notjunk:1; V01:K0:IJArW8wk+TA=:2wtEYKvDnes6VDWPaCHbNy DPGS4V5oGnX1/qPQqDNEbAc1LDFjVr9cCQfi+wX+Ge+sQCjJmeQ6KtS6fKJzgzmRC7SIHHHVD DaBw8mhY3ftAPRsbwJE86l479y3iadl+mtkTCTKhDkCJK8khlfjpPdzuVIQWKZN13p0lTtl2N 8rwIqgElaGTRhvJY/6s+lj+dec/TsfJlw/aOXpYS2AHO7TECP5mnWfZwY9MN7jR1I0QeXRJOL t/YlMx2+IiJ4Zew5TgY/a3du7hZCfPkEKHlp3EflRdGUetiPfpqN0pKkj2AeAw5eSzBoSs7PO mqo4MHi/45MUKhMoBYTYYvHU47z7V1xmtSBcinZAeMHWn1zCfzk/S3r3j9X01JdYGS7AKrqob 564+RZ9JP5P9BxyIHxZYlsw6qAx7Tm4JoqhBarqj9BU8ZVt/uKBL+57VtFAjfvlNAsAlJK3UJ IrYKV8eq6H+2kvUfo30VSWBUE8/G9Bj5sdxqPQkk+sVyj7EQISvvETVTTN0cD1BZf6gxx+BKr azT/OYZPUyRAA5jKK0unrH1/nwrrMzL3nTrTBiN5W1Z10u4SHcbMLxYChQuI7fPywzf4q39zA QrVwNqXFakx5SZUvCKf5uZkzDBMbcqvXg7YqfFspWNWXIAAiqWZQm1jjqIH+Hq7IoY8B+3YG/ H6TwJ//OG98m9N6vx01KJnJnyMEIbQESPoUirvABMglD3/K3QNiEuiEz8JR7N6Lals1qLaTjq 1Xm6CAoRfYQRNPtUaNPOJ7Qen6GMW5IbLCc1L512IhKODs7qVAb8omJUpC9LW07HbD5ddRMfc d8X38qwlVYIzsuABLPo/jIR1FQ2mw== Cc: u-boot@lists.denx.de, Jonathan Gray , Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 2/6] efi_loader: correctly setup device paths for block devices X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" According to the UEFI spec the numbering of partitions has to start with 1. Partion number 0 is reserved for the optional device path for the complete block device. Signed-off-by: Heinrich Schuchardt --- v3 no change v2 Do not generate optional device path with partion number 0. --- lib/efi_loader/efi_device_path.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 42fe6e1185..6461ea9abc 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -420,7 +420,7 @@ static void *dp_part_fill(void *buf, struct blk_desc *desc, int part) if (desc->part_type == PART_TYPE_ISO) { struct efi_device_path_cdrom_path *cddp = buf; - cddp->boot_entry = part - 1; + cddp->boot_entry = part; cddp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE; cddp->dp.sub_type = DEVICE_PATH_SUB_TYPE_CDROM_PATH; cddp->dp.length = sizeof(*cddp); @@ -434,7 +434,7 @@ static void *dp_part_fill(void *buf, struct blk_desc *desc, int part) hddp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE; hddp->dp.sub_type = DEVICE_PATH_SUB_TYPE_HARD_DRIVE_PATH; hddp->dp.length = sizeof(*hddp); - hddp->partition_number = part - 1; + hddp->partition_number = part; hddp->partition_start = info.start; hddp->partition_end = info.size; if (desc->part_type == PART_TYPE_EFI) From patchwork Mon Dec 11 11:56:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 846928 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ywM0S5LJFz9s7f for ; Mon, 11 Dec 2017 22:58:00 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 31513C21D95; Mon, 11 Dec 2017 11:57:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 12FB8C21D6A; Mon, 11 Dec 2017 11:57:04 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1CF22C21CB1; Mon, 11 Dec 2017 11:57:01 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lists.denx.de (Postfix) with ESMTPS id 73A05C21C41 for ; Mon, 11 Dec 2017 11:57:01 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0LiHc7-1esyMy2uBv-00nTo9; Mon, 11 Dec 2017 12:56:51 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 11 Dec 2017 12:56:41 +0100 Message-Id: <20171211115644.14015-4-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171211115644.14015-1-xypron.glpk@gmx.de> References: <20171211115644.14015-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:5llGJoxGkd1HRew9dBk/pxkZ/JvS4zTlhTT9xvkBI0e7gFeUrp/ rrSw/kh0aLOkEMjNBZiiRtPj5jdg7wYbNE/r4GAWkwP5QNu64oZV14im6G4yuPseMcFc4L4 ZOW5+43wOYAcULqz85/qvArUK4/RF6KcM/ixVA1+12c9dkED1i4UyuY6kZ++QTUVvieVBHi I9A7TAql9IIsSzvO5TsDw== X-UI-Out-Filterresults: notjunk:1; V01:K0:AaVtXue1Bbg=:oFYUSJVYFHOhrKP2enZlfw HWJImgqd8+POM/73dZ13sdehzm8tXSeIzpPuI8FYyde6ZhM/E7udhIKKPnNNczldcTBCG3JpO 20WgbbkDyNOTdFGJAlKVjHC52jpaUa8zoI4LCe3Oc+ZUNzOVVxiKAj8Pwtkk2Fo4hWrNQmG6c i7oidLeWr4RIQfL/+t/3zPuxi+wvfAGmw1jjfDgynlgYxzShwIw1axD9tfU0viukJ3UfN/Gbz 7ieesAkJjI65iyOzBPeTyxoTIqfaJ/77gP7Ah3bQJhvdASZ3abhy/A3MF0tGAiJ+E14HL7GKi UhXOVWDHnHnB1z7qn61ZKvrwvFKEJqEna7vV79KQm03SRYyhYQL82FMG9S6JqlDPaDFRV4lc3 uKhobgCPIzG75E1PMOIEIggKkwsMSPOeUtA3n9Z365aiXrqGzeH8syB0DsFNNOT6+VCwYdGXS 1MPHEblTp0afZgWdykD+BdG2moAr4ziCfJ1yLlBXJ49c19ryJ1/oWF31ujEZbrEO+iil2wdh4 ZC8/I2pmCwA8ruD1ILOm4G3IubMF81hlwmhjiyuqDaxVxqb6AbaWY/zrnqTJg/dDycpsncoSO XMhfQCyjJWrtMjWFXum2WAD1OQyZpbU5u6NxsJK2o40+UtSXxe1MRqQw29rESR4PJoo/inoDl V4jSX/HcgyosxQlGV0KN6EFR9zOqfNLdwSXhXjixUwj2FG8a7wxjLcbXxPmcoiw9mDijAmFKi b9oGT93/Bu0SgAetCnkr3yHFitFnryv7XIhApr+AxbR9TAZBOW/YFcjR+fY6TnlTBNqL6Pg3X hfgfiDPzIUT0k8Kn6qLrXWSw1kRww== Cc: u-boot@lists.denx.de, Jonathan Gray , Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 3/6] efi_loader: correct DeviceNodeToText for media types X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" When converting device nodes and paths to text we should stick to the UEFI spec. Signed-off-by: Heinrich Schuchardt --- v3 Copy from packed structure to aligned memory to avoid unaligned memory access. v2 no change --- lib/efi_loader/efi_device_path_to_text.c | 43 +++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/efi_loader/efi_device_path_to_text.c b/lib/efi_loader/efi_device_path_to_text.c index 7159c974d4..50d9e911c0 100644 --- a/lib/efi_loader/efi_device_path_to_text.c +++ b/lib/efi_loader/efi_device_path_to_text.c @@ -90,7 +90,7 @@ static char *dp_msging(char *s, struct efi_device_path *dp) case DEVICE_PATH_SUB_TYPE_MSG_USB: { struct efi_device_path_usb *udp = (struct efi_device_path_usb *)dp; - s += sprintf(s, "Usb(0x%x,0x%x)", udp->parent_port_number, + s += sprintf(s, "USB(0x%x,0x%x)", udp->parent_port_number, udp->usb_interface); break; } @@ -124,10 +124,10 @@ static char *dp_msging(char *s, struct efi_device_path *dp) case DEVICE_PATH_SUB_TYPE_MSG_MMC: { const char *typename = (dp->sub_type == DEVICE_PATH_SUB_TYPE_MSG_SD) ? - "SDCard" : "MMC"; + "SD" : "eMMC"; struct efi_device_path_sd_mmc_path *sddp = (struct efi_device_path_sd_mmc_path *)dp; - s += sprintf(s, "%s(Slot%u)", typename, sddp->slot_number); + s += sprintf(s, "%s(%u)", typename, sddp->slot_number); break; } default: @@ -137,6 +137,13 @@ static char *dp_msging(char *s, struct efi_device_path *dp) return s; } +/* + * Convert a media device path node to text. + * + * @s output buffer + * @dp device path node + * @return next unused buffer address + */ static char *dp_media(char *s, struct efi_device_path *dp) { switch (dp->sub_type) { @@ -144,21 +151,33 @@ static char *dp_media(char *s, struct efi_device_path *dp) struct efi_device_path_hard_drive_path *hddp = (struct efi_device_path_hard_drive_path *)dp; void *sig = hddp->partition_signature; + u64 start; + u64 end; + + /* Copy from packed structure to aligned memory */ + memcpy(&start, &hddp->partition_start, sizeof(start)); + memcpy(&end, &hddp->partition_end, sizeof(end)); switch (hddp->signature_type) { - case SIG_TYPE_MBR: - s += sprintf(s, "HD(Part%d,Sig%08x)", - hddp->partition_number, - *(uint32_t *)sig); + case SIG_TYPE_MBR: { + u32 signature; + + memcpy(&signature, sig, sizeof(signature)); + s += sprintf( + s, "HD(%d,MBR,0x%08x,0x%llx,0x%llx)", + hddp->partition_number, signature, start, end); break; + } case SIG_TYPE_GUID: - s += sprintf(s, "HD(Part%d,Sig%pUl)", - hddp->partition_number, sig); + s += sprintf( + s, "HD(%d,GPT,%pUl,0x%llx,0x%llx)", + hddp->partition_number, sig, start, end); break; default: - s += sprintf(s, "HD(Part%d,MBRType=%02x,SigType=%02x)", - hddp->partition_number, hddp->partmap_type, - hddp->signature_type); + s += sprintf( + s, "HD(%d,0x%02x,0,0x%llx,0x%llx)", + hddp->partition_number, hddp->partmap_type, + start, end); break; } From patchwork Mon Dec 11 11:56:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 846932 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ywM4X1MKPz9s5L for ; Mon, 11 Dec 2017 23:01:32 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id DDBA8C21DC8; Mon, 11 Dec 2017 11:58:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8F116C21DB5; Mon, 11 Dec 2017 11:57:07 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 79760C21C4C; Mon, 11 Dec 2017 11:57:02 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 16402C21C93 for ; Mon, 11 Dec 2017 11:57:02 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0LyR1G-1f98D40Km6-015q2W; Mon, 11 Dec 2017 12:56:52 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 11 Dec 2017 12:56:42 +0100 Message-Id: <20171211115644.14015-5-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171211115644.14015-1-xypron.glpk@gmx.de> References: <20171211115644.14015-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:BZQodP3uo4RZfY+oO4zisDEOLWK3EhxV6Ej9IX9a5NQbqX+0R+I gxQ9yk7875GzWeUqsho+FLANOuh5adw1FuOHcqJECI0t60kquNqerwRjtNup/0XjVZVt/Dn 5INTE4f9z0gsxrjZyMXGJeyyqwhLAmrVVLwumx+Dzk57xhbBkdhnX+vfb3Xbc1mHhjdWaet BV28a74UppcrldiNwXMew== X-UI-Out-Filterresults: notjunk:1; V01:K0:1ECB0JGdqds=:+DPgOQuPK/vI6A/aEaTU08 oDzhknSLEFXQ2hzuIEGRSjAc3l0Z1pA7ZTc1FeHqyDYPrbs2xfS1hGdC3vHfNxSbkk5hKYPn9 1Bj4qq1OaTyd9dGEKaNydf8FhH5EfbkPLS0lJxZcVYhRd2MFzWXQcLBA2Bs1ssPlQDS/ZPnkZ L8W/nPuIjTO39wwp2sIZ2Bjed+LQa8eMXTrUp3bG5K1g5n2szwgzQBqiOdW2NiLBIqWPCyzGx 5SsyPcALfzPU8S8P8+bFuJ4Hl2I1PQ5cpRKNmkC894dgzy2kYqH/k9yfCtDWt+vfCLBMm51Jx 1Aq5x8Rds8k1eVW9UBa0C+Kyano9VMlWJl6bwNqQvtxRj4NxeO56n3JYU8TvROvI1mSX0sN6w Pul+QsO4YSbNed6kYcpzxLEAfRMkk4VQ7hBy4u3fwe0R8ISayNa9/oQXQSGqCysiQ/tSfJlvO uWmQRgMJXbPhWeiYjFi0nm9NfbDsPa+SnuhhaExE1tZg7NjnmiQZ+pWoHmHET/FiBv+Tzr4lw U7Gf4xE5hB9nrodxn9ktIEJ9qbYZkCwkFt0MWIBFO1+XVarXo/xlBHNmJBJLMxTw2+vg4h/99 9BdFvJWxHzGZcIUMTomQ0AmD5F3POaW715aZ+wa3WEZBhRq+ntnqXGsJE9ny6sWFNngBs45vq wCfxrOyhVoVdjSDEYggfCvNMRkqmOxwT9gSzVj8rXqegbgeEfHMxYeeDqt/hkfAYPU+fiSZn7 +Mf/EJdMwJ1DDG0CMEHiL60CRYxNCIEgWyrU2bQi03HvCCkSBc87E2rQHzDVL39cenYmRVq4z bITdwd1u8EA1hpkDcoBzjM/v3g/hA== Cc: u-boot@lists.denx.de, Jonathan Gray , Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 4/6] efi_loader: comments for dp_part_fill() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Add a description for dp_part_fill(). Reword a comment in the function. Signed-off-by: Heinrich Schuchardt --- v3 new patch --- lib/efi_loader/efi_device_path.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 6461ea9abc..31cdd38773 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -384,6 +384,13 @@ static unsigned dp_part_size(struct blk_desc *desc, int part) return dpsize; } +/* + * Create a device path for a block device or one of its partitions. + * + * @buf buffer to which the device path is wirtten + * @desc block device descriptor + * @part partition number, 0 identifies a block device + */ static void *dp_part_fill(void *buf, struct blk_desc *desc, int part) { disk_partition_t info; @@ -396,7 +403,7 @@ static void *dp_part_fill(void *buf, struct blk_desc *desc, int part) * and handling all the different cases like we do for non- * legacy (ie CONFIG_BLK=y) case. But most important thing * is just to have a unique device-path for if_type+devnum. - * So map things to a fictional USB device: + * So map things to a fictitious USB device. */ struct efi_device_path_usb *udp; From patchwork Mon Dec 11 11:56:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 846929 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ywM0x406yz9s5L for ; Mon, 11 Dec 2017 22:58:25 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 27A46C21DA2; Mon, 11 Dec 2017 11:57:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id CE81DC21D9F; Mon, 11 Dec 2017 11:57:04 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 49A3EC21C41; Mon, 11 Dec 2017 11:57:02 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id B6323C21C57 for ; Mon, 11 Dec 2017 11:57:01 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0Lkjuq-1ewbWS1uqK-00aVeQ; Mon, 11 Dec 2017 12:56:52 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 11 Dec 2017 12:56:43 +0100 Message-Id: <20171211115644.14015-6-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171211115644.14015-1-xypron.glpk@gmx.de> References: <20171211115644.14015-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:I141GzJLzrG90fHxlC3wcnOnWmKOAkMVvf1/6P2XpBNEyQFPmTj ugXd6jEQwjuLkEwh7VJUqhwzDnwwl/h8Wh3G6LT+LGlGSmAhPemnYW7eO+bxprcyY2yfSVG ahaR3pnucUW/DcdnGMuQglOuzJc1FqPmeudqq2DIAuGZnBJbdXY59Y9ZJxGoD2QDSmG3i6r eavn5f5c47Ed4mWeq+rfg== X-UI-Out-Filterresults: notjunk:1; V01:K0:VdZos3HF97w=:ZZTlgAK7RBYklG0Ra+cqN7 FNqkszs5D0XBD7Gkrh5qsVd2TR+GDHZ9Lc4Cpl9DSaiixo1Dpa4gOviANeH3WMyiZxVfaueTX OUpLD3ooNs8NsNKF4CuL2pd1BmWmtqwVKXY2hr3E9nC7vJncU+isCu8bULC5wp10ED0oRs5JC +pZrkomNlXGCJ3S/4oI4XmHqsFICcnfkV1+nJ0kgpcjpWVwmPwfu/ffwEvkNujlc41/4ha8mL tk97/q5U3jNz1WO06vZ2Gv2RYiKEkQkLnnKnqYTDxuxlkLu2AFiqGYWao08a+upm8tfUnfVmn W6YysUl0E52hQQBVG+E8SDefviM6Ah62FRlCTL3X92CeBpOuxI5BF6WN8Ha5W6hkZDUrKF9dm 2dPOOed6NK5Vkj2gnmD+qYRuFs0mOcsu9hcapRek66R70qS5VNloT7Jt7xhi/akeMQRjoB6z1 vugq5aRfwhO+3U7IqBfk1wjO7vY7+RP6ipYy24AOH9xuz0wcjiFVR0+fJkvhwUXnayZl6rmWZ Bfka9qJPt6FbVQjx8W4h5Bsmh5P6rytIMr97JHYXlHEf2vqZTstDklRZnQOwngKKcBHql/7K+ iPLKgOZyf4w+uoX7cv9Zg84ySpLYwEWtJ8P7NuB2gxPQyg6m/DUY6RLbSol4A5PYGfA0WiN11 B3OYND4m84EXJrWb/9ttkadaE1T60J0/lsEbmDf4J4NE40254vX55Fiet6v9yHuofRGF5phf9 wsM6zEbf0UQY3gxiDiykga2SCR26yCA8GzFmbobaJ4VqVn5FmFPrRdexplXB9u6NCm6n6FpsG EkEMbTbIMrOaePmWqRz75Dq7jB/vA== Cc: u-boot@lists.denx.de, Jonathan Gray , Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 5/6] efi_loader: create full device path for block devices X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" When creating the device path of a block device it has to comprise the block device itself and should not end at its parent. Signed-off-by: Heinrich Schuchardt --- v3 new patch --- lib/efi_loader/efi_device_path.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 31cdd38773..492a7643e6 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -368,7 +368,14 @@ static unsigned dp_part_size(struct blk_desc *desc, int part) unsigned dpsize; #ifdef CONFIG_BLK - dpsize = dp_size(desc->bdev->parent); + { + struct udevice *dev; + int ret = blk_find_device(desc->if_type, desc->devnum, &dev); + + if (ret) + dev = desc->bdev->parent; + dpsize = dp_size(dev); + } #else dpsize = sizeof(ROOT) + sizeof(struct efi_device_path_usb); #endif @@ -396,7 +403,14 @@ static void *dp_part_fill(void *buf, struct blk_desc *desc, int part) disk_partition_t info; #ifdef CONFIG_BLK - buf = dp_fill(buf, desc->bdev->parent); + { + struct udevice *dev; + int ret = blk_find_device(desc->if_type, desc->devnum, &dev); + + if (ret) + dev = desc->bdev->parent; + buf = dp_fill(buf, dev); + } #else /* * We *could* make a more accurate path, by looking at if_type From patchwork Mon Dec 11 11:56:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 846933 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ywM4Z6WDFz9s5L for ; Mon, 11 Dec 2017 23:01:34 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 9C00CC21DB5; Mon, 11 Dec 2017 11:58:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 01EF0C21C41; Mon, 11 Dec 2017 11:57:09 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 8A21EC21C71; Mon, 11 Dec 2017 11:57:02 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 0C4CAC21C4C for ; Mon, 11 Dec 2017 11:57:01 +0000 (UTC) Received: from LPT2.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0M5q45-1fHhJl3YxV-00xpxz; Mon, 11 Dec 2017 12:56:53 +0100 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 11 Dec 2017 12:56:44 +0100 Message-Id: <20171211115644.14015-7-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171211115644.14015-1-xypron.glpk@gmx.de> References: <20171211115644.14015-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:3uXXFOjUHfqRYOyC2c5yB/BqOd+m661SWHEpbaDhzD5vzQ08cJp S0no2AT58I745O4Gbb9KeouKt97YkxSynsY2hJ4sdQPtAbpogf+1UF1L01+Pbf4ZyVuoG0K 40w9PlPyGSPC8fXG/tbRxdCHDlSTxgepJlMOJmsnDO/U/V2hK9OjadUWYHMfATZq+BIjAtz fQsEqPVKI2kavr6I1ji1Q== X-UI-Out-Filterresults: notjunk:1; V01:K0:+JfNRly9jSI=:kCrRUGXdXBWY5aqshNndPw eon5wW1jqM4RU3DuiZ2iH3LADJzwAxt2mSxPEzujdWHfzSm8v1gxUVt/XJ7KXsJrVe7V7WAa7 9IIF/JWijxbzpnJnHfOFT/zk4pIW+evxcwwIvti219AaCh3tRW8xEjUCwfBJnrPJwovZSlNiM 82Q9a33H09sxrIuJZ5V3NZvqHWeeOykJZut9U5KD398bQnNw6lYT71mrjKdWRSDciO8o5H5dN G3VvB9Bo44rAxR7X1GkA2Z+NX3mVlI9+hr5dyFD+7v6rqdPpGHQ/liFBCXX7cZCZMd8OnQPJv 3zl8FZG7jV+ukOwAXVfJamHFaSDIw6rd05us4fsdSySxKhNRVohObx3R+RRwtbUIMA4+kYu97 oaVJLFyCOup7lfhM1nJ8Oojrht84+E40BkCmq4L8FMgl2Ui8be9CUIQ2zSmoXadtJamKnXLuJ qgQJT5hCjFxP5jeBKVN36dXEO8a+i1VhGdOTc/QdgIwVCqF0gElBO82OZaIecsBoqOsfE2wGY 4E1u+8PNFr9K7vriJCh9re0v2JGjRKQTNKSIvDiN2YAbNFst7SM+ZzQTqq5+bGJ5M+ebiPhKr L2EGKgOpRMq89PZoc7nRi7C5lHosGiWRpwkuKR0UF4GQryDyia2/NJHp7YxcUdXvXRGQVDwx9 9qPHLWpyRvL4xqt1WvmbyLKFVHgnh5PfTb3EDjtg8oMmSeaDi/Mra34RDSyjUfV4WkJyKMv6F Y0E6MvdkwSu6rudFvA9yKV3+dvR/ty/bbf/rcEiC5dwmlU2BGc+IXMVzy2Cd6rdERnEhxV+Ye Pyca8x+isyyd/D4mdzg1buUREKWVQ== Cc: u-boot@lists.denx.de, Jonathan Gray , Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 6/6] efi_loader: support device path for IDE and SCSI disks X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Correctly create the device path for IDE and SCSI disks. Support for SATA remains to be done in a future patch. Signed-off-by: Heinrich Schuchardt --- v3 new patch --- include/efi_api.h | 15 ++++++++ lib/efi_loader/efi_device_path.c | 64 ++++++++++++++++++++++++++++++++ lib/efi_loader/efi_device_path_to_text.c | 14 +++++++ 3 files changed, 93 insertions(+) diff --git a/include/efi_api.h b/include/efi_api.h index 584016dc30..46963f2891 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -329,12 +329,27 @@ struct efi_device_path_acpi_path { } __packed; #define DEVICE_PATH_TYPE_MESSAGING_DEVICE 0x03 +# define DEVICE_PATH_SUB_TYPE_MSG_ATAPI 0x01 +# define DEVICE_PATH_SUB_TYPE_MSG_SCSI 0x02 # define DEVICE_PATH_SUB_TYPE_MSG_USB 0x05 # define DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR 0x0b # define DEVICE_PATH_SUB_TYPE_MSG_USB_CLASS 0x0f # define DEVICE_PATH_SUB_TYPE_MSG_SD 0x1a # define DEVICE_PATH_SUB_TYPE_MSG_MMC 0x1d +struct efi_device_path_atapi { + struct efi_device_path dp; + u8 primary_secondary; + u8 slave_master; + u16 logical_unit_number; +} __packed; + +struct efi_device_path_scsi { + struct efi_device_path dp; + u16 target_id; + u16 logical_unit_number; +} __packed; + struct efi_device_path_usb { struct efi_device_path dp; u8 parent_port_number; diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 492a7643e6..ed30f1cabf 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -282,6 +282,23 @@ static unsigned dp_size(struct udevice *dev) case UCLASS_SIMPLE_BUS: /* stop traversing parents at this point: */ return sizeof(ROOT); +#ifdef CONFIG_BLK + case UCLASS_BLK: + switch (dev->parent->uclass->uc_drv->id) { +#ifdef CONFIG_IDE + case UCLASS_IDE: + return dp_size(dev->parent) + + sizeof(struct efi_device_path_atapi); +#endif +#if defined(CONFIG_SCSI) && defined(CONFIG_DM_SCSI) + case UCLASS_SCSI: + return dp_size(dev->parent) + + sizeof(struct efi_device_path_scsi); +#endif + default: + return dp_size(dev->parent); + } +#endif case UCLASS_MMC: return dp_size(dev->parent) + sizeof(struct efi_device_path_sd_mmc_path); @@ -295,6 +312,13 @@ static unsigned dp_size(struct udevice *dev) } } +/* + * Recursively build a device path. + * + * @buf pointer to the end of the device path + * @dev device + * @return pointer to the end of the device path + */ static void *dp_fill(void *buf, struct udevice *dev) { if (!dev || !dev->driver) @@ -308,6 +332,46 @@ static void *dp_fill(void *buf, struct udevice *dev) *vdp = ROOT; return &vdp[1]; } +#ifdef CONFIG_BLK + case UCLASS_BLK: + switch (dev->parent->uclass->uc_drv->id) { +#ifdef CONFIG_IDE + case UCLASS_IDE: { + struct efi_device_path_atapi *dp = + dp_fill(buf, dev->parent); + struct blk_desc *desc = dev_get_uclass_platdata(dev); + + dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; + dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_ATAPI; + dp->dp.length = sizeof(*dp); + dp->logical_unit_number = desc->devnum; + dp->primary_secondary = IDE_BUS(desc->devnum); + dp->slave_master = desc->devnum % + (CONFIG_SYS_IDE_MAXDEVICE / + CONFIG_SYS_IDE_MAXBUS); + return &dp[1]; + } +#endif +#if defined(CONFIG_SCSI) && defined(CONFIG_DM_SCSI) + case UCLASS_SCSI: { + struct efi_device_path_scsi *dp = + dp_fill(buf, dev->parent); + struct blk_desc *desc = dev_get_uclass_platdata(dev); + + dp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE; + dp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_SCSI; + dp->dp.length = sizeof(*dp); + dp->logical_unit_number = desc->lun; + dp->target_id = desc->target; + return &dp[1]; + } +#endif + default: + printf("unhandled parent class: %s (%u)\n", + dev->name, dev->driver->id); + return dp_fill(buf, dev->parent); + } +#endif #if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC) case UCLASS_MMC: { struct efi_device_path_sd_mmc_path *sddp = diff --git a/lib/efi_loader/efi_device_path_to_text.c b/lib/efi_loader/efi_device_path_to_text.c index 50d9e911c0..40eae730ed 100644 --- a/lib/efi_loader/efi_device_path_to_text.c +++ b/lib/efi_loader/efi_device_path_to_text.c @@ -87,6 +87,20 @@ static char *dp_acpi(char *s, struct efi_device_path *dp) static char *dp_msging(char *s, struct efi_device_path *dp) { switch (dp->sub_type) { + case DEVICE_PATH_SUB_TYPE_MSG_ATAPI: { + struct efi_device_path_atapi *ide = + (struct efi_device_path_atapi *)dp; + s += sprintf(s, "Ata(%d,%d,%d)", ide->primary_secondary, + ide->slave_master, ide->logical_unit_number); + break; + } + case DEVICE_PATH_SUB_TYPE_MSG_SCSI: { + struct efi_device_path_scsi *ide = + (struct efi_device_path_scsi *)dp; + s += sprintf(s, "Scsi(%u,%u)", ide->target_id, + ide->logical_unit_number); + break; + } case DEVICE_PATH_SUB_TYPE_MSG_USB: { struct efi_device_path_usb *udp = (struct efi_device_path_usb *)dp;