Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2228792/?format=api
{ "id": 2228792, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2228792/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260427-fb_gpt-v2-2-9e7fe3c1649a@oss.qualcomm.com/", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/1.1/projects/18/?format=api", "name": "U-Boot", "link_name": "uboot", "list_id": "u-boot.lists.denx.de", "list_email": "u-boot@lists.denx.de", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20260427-fb_gpt-v2-2-9e7fe3c1649a@oss.qualcomm.com>", "date": "2026-04-27T12:06:43", "name": "[v2,2/4] fastboot: Add GPT/MBR partition table flashing helper functions", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "85bc31626d5b179b04812442a1f8548919f9d4b6", "submitter": { "id": 90810, "url": "http://patchwork.ozlabs.org/api/1.1/people/90810/?format=api", "name": "Balaji Selvanathan", "email": "balaji.selvanathan@oss.qualcomm.com" }, "delegate": { "id": 117687, "url": "http://patchwork.ozlabs.org/api/1.1/users/117687/?format=api", "username": "mkorpershoek", "first_name": "Mattijs", "last_name": "Korpershoek", "email": "mkorpershoek@baylibre.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260427-fb_gpt-v2-2-9e7fe3c1649a@oss.qualcomm.com/mbox/", "series": [ { "id": 501635, "url": "http://patchwork.ozlabs.org/api/1.1/series/501635/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=501635", "date": "2026-04-27T12:06:41", "name": "fastboot: block: Add GPT/MBR and device selection", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/501635/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2228792/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2228792/checks/", "tags": {}, "headers": { "Return-Path": "<u-boot-bounces@lists.denx.de>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=WMtR6sTx;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=S90aiBd/;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)", "phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=oss.qualcomm.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de", "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"WMtR6sTx\";\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"S90aiBd/\";\n\tdkim-atps=neutral", "phobos.denx.de; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com", "phobos.denx.de; spf=pass\n smtp.mailfrom=balaji.selvanathan@oss.qualcomm.com" ], "Received": [ "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g42PG3G1gz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 22:07:14 +1000 (AEST)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id C612984178;\n\tMon, 27 Apr 2026 14:07:05 +0200 (CEST)", "by phobos.denx.de (Postfix, from userid 109)\n id 1FA0080433; Mon, 27 Apr 2026 14:07:04 +0200 (CEST)", "from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 2F0B883AA9\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 14:07:00 +0200 (CEST)", "from pps.filterd (m0279862.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63R8TNIZ665837\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 12:06:58 GMT", "from mail-pj1-f71.google.com (mail-pj1-f71.google.com\n [209.85.216.71])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dt30n18xs-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 12:06:58 +0000 (GMT)", "by mail-pj1-f71.google.com with SMTP id\n 98e67ed59e1d1-35fb969a4c0so11068819a91.3\n for <u-boot@lists.denx.de>; Mon, 27 Apr 2026 05:06:58 -0700 (PDT)", "from hu-bselvana-blr.qualcomm.com\n (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19])\n by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-36140feea38sm31832910a91.6.2026.04.27.05.06.53\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 27 Apr 2026 05:06:56 -0700 (PDT)" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de", "X-Spam-Level": "", "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n G2FyCqvVEZxx0KR8u1AMr6abjhvNsK1ubOfsU7Ff64w=; b=WMtR6sTxMK7gh701\n jlrCVCmjNrJHcN8R+UUAYkI3fy07RuQAjigqnc8TRYQKCwO0h+wqbFaz4ROkSGsm\n YBEONz2JZnxfriZ9vhDMwHCcnQWaorX46BVpOl3kXBZxy6UYSL/hdaALsMb35Bil\n HiirO3pEXvuh0ru+B9mwMyQZ46TJZX7Zr7mse1LcDIark0f6c4qDcyOGcIk+ojc3\n 0LX3Pma38a1t73aQrfIqXmdugUbni1J/G0RaB5KQ+2Wd9sB/4KTeqREAH7vwaFnl\n j2tNz+CIO3eZcZQQhFkh/jfPNbG6CbzbiaOYQu96wqn1agyhWpA9qjytX1T1TlMg\n mLyjEg==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1777291618; x=1777896418; darn=lists.denx.de;\n h=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n :mime-version:subject:date:from:from:to:cc:subject:date:message-id\n :reply-to; bh=G2FyCqvVEZxx0KR8u1AMr6abjhvNsK1ubOfsU7Ff64w=;\n b=S90aiBd/PwH6pcTK5sP90jJqWecAeZVH0WAFtxPeaQq0g3SJQFaH/U7TrrlIpSKCRV\n uz4tZq48+EzFjvQL1Iiv7PX3a76lJGA9f+ZvjcHZ2+4t4FX7s7MHas+kDFH/cQwR4Cmm\n qYM8mvJda2e3HeWsUTuuZRrqujy4rNNQdNOAiQf3NPMOdJz/MzR3anDIrdBmNlsH5gxZ\n Zg0RtNDVxUglTN0KtT01+XVTd1fN9yf8Onhlibz6b49odHXQdB9OjHRuAJmtcKNSPngD\n OwSvVM1QhV3gu7Tztik5i544GY4UjUa65fF2y0l0s/OHjAycWzeE9a4aRi5xyXpREhE7\n ghQg==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777291618; x=1777896418;\n h=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=G2FyCqvVEZxx0KR8u1AMr6abjhvNsK1ubOfsU7Ff64w=;\n b=sKnpo8OMPXLOCMWVs33qfqkj/fSl8GFsSXIChMQu0puA3PIF6x9YEv8RAO0tpiig2i\n ImZGMi/Cr9FNSmCX+iXw/0P366KBgnS7yOYWXempRStidwfaL6nVGcJyKDSfasJ2Mmac\n h597XBD7DmT10iSlnY9F3w8wwgB84jalolYWrBq8BfQ0yOwwXaD5TlVcyqXoc35zpgti\n Ser4If6AdX7nMebZR6JCRurfuHw0bwoYa7fOTEicK7MPRKkcf/GBpkcSDdYer77yU4Y9\n 1VreNIbLzJB3Pa7UEtc++tj+PGbDO9xEJQdrM8m+mBYTFhVDackiKFZC2IXDJ/lmKLKR\n 4AWw==", "X-Gm-Message-State": "AOJu0YxPp3ScFUf4h6paLVfU0N2ZdQPSwipPcogDLwx35572aWSgcdsM\n qWmu5sOhSuFPmlPwfduFse1bscVE1D6kMC5gfX/z/IHFbbExfbkMOBUXaTOi3PGUQH89q0WiYXM\n lBS3rcdKjEY3LE9X2Kb6Jv4zBkTL1uIXKy8mTt1OdIzY5us8PUk/f+/6E", "X-Gm-Gg": "AeBDievXaMFLeJtcKTmBDlw0OxwJSBJ8m0PLG2UFUtZO5mMvA4Rv7zltgYeU/3h4+YZ\n i2biXRisrVN/p/ejiNt0dF4zZ6nx6lmSUjlsLcbevyLbr8LEKmSjr0aRwYOJoAOVGOJtbK+0PdE\n 8ccRQARRhyajMzXRtjN7SKqpmYPvfIwy6zqPIY1npGOtNBOPJwChNCbtm9LnnC9LmMcyVkg8m9r\n VqDYNE0g+ff1dPatxC72d7rRUWMGj8i2wLliuHoR9jgM3FCxQ/CqHiG+JYo4pUD3nS5YoTOn8IV\n n0X4anf+Eh5/OcB2ma4mbM8M3ZWqWFZE8nxLOjXotguK1D/sKiXbWhfKGoW8VeOaBmfBNnIPo99\n xLZWxjBT00Hbf8ansvDF/QJr2n2jb3fQEkDlwLM3MjyS+JQknZgm7R4PZhNjCeqaRXoqabbm2Z6\n rKp5shvdyYq4+QFF4iEJu/yNSsuEshgLHeYFQD4xeulCGGO90olt5HCk/1RWO/", "X-Received": [ "by 2002:a17:90b:3f4b:b0:362:e7e5:a20a with SMTP id\n 98e67ed59e1d1-362e7e5ac9amr13745404a91.4.1777291617427;\n Mon, 27 Apr 2026 05:06:57 -0700 (PDT)", "by 2002:a17:90b:3f4b:b0:362:e7e5:a20a with SMTP id\n 98e67ed59e1d1-362e7e5ac9amr13745362a91.4.1777291616780;\n Mon, 27 Apr 2026 05:06:56 -0700 (PDT)" ], "From": "Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>", "Date": "Mon, 27 Apr 2026 17:36:43 +0530", "Subject": "[PATCH v2 2/4] fastboot: Add GPT/MBR partition table flashing\n helper functions", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260427-fb_gpt-v2-2-9e7fe3c1649a@oss.qualcomm.com>", "References": "<20260427-fb_gpt-v2-0-9e7fe3c1649a@oss.qualcomm.com>", "In-Reply-To": "<20260427-fb_gpt-v2-0-9e7fe3c1649a@oss.qualcomm.com>", "To": "u-boot@lists.denx.de", "Cc": "Mattijs Korpershoek <mkorpershoek@kernel.org>,\n Tom Rini <trini@konsulko.com>, Heiko Schocher <hs@nabladev.com>,\n Neil Armstrong <neil.armstrong@linaro.org>,\n Dmitrii Merkurev <dimorinny@google.com>,\n Adrian Freihofer <adrian.freihofer@siemens.com>,\n Peng Fan <peng.fan@nxp.com>, Jaehoon Chung <jh80.chung@samsung.com>,\n Ariel D'Alessandro <ariel.dalessandro@collabora.com>,\n Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>", "X-Mailer": "b4 0.14.3", "X-Developer-Signature": "v=1; a=ed25519-sha256; t=1777291604; l=7540;\n i=balaji.selvanathan@oss.qualcomm.com; s=20260213; h=from:subject:message-id;\n bh=LOjHstRk6nfcx42gdY+r/pBsozQA0yOz3mjM8e+UnqY=;\n b=1Yf5r2Wmr58Ym3Dezh3qkXjMYYjelrIMPAJLj+5biNXyT9LLxor3prpofr7JEoLX2I3vYAYI4\n c/3IQbeFzZuBRQaFfuiYsV2mv6QT5qyoIZ524cGg0i9enUwahdmaVOG", "X-Developer-Key": "i=balaji.selvanathan@oss.qualcomm.com; a=ed25519;\n pk=CDpYiUU3SH7KGEtsBvY2tBGPiWfMxqWJF0p2LftOfnc=", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDI3MDEyOSBTYWx0ZWRfX74uBlThI8j5z\n 8kaSofruaR8L7TqauIkOyu+6MWCddEyVxCp1QGLAjU064AwDtXsK7NX96DpGzS27urjQM8QvKKJ\n xzbsCTXxXJwa1vSObQapE26kJiV9DbtZ3AAGrZH8MeSvD4bsxnsE6YqrgI6mJeP3TaA0JeqSlnV\n KD7Og6z8mopSLkcM/3RMhLjPqq2QpBwbs6FtrY/OJZ8sN6iIpvBsXSTUsuZzgN3KnOK1z0JK34f\n lEj2yi4gCvGJBoj3afyynBA8Cv4AaeLtcUoFy+gxWZ6s0WvJFVZcHQWtpe9w6oy5k+MDqkXCBQS\n e2HxEXH4XC6oI5ivkjHTK3bGRrVyt6BJsvVKEaycd07vLDdgXUyupwRW/jrNTJEeja7K+8k0h/j\n D2rb02LlOC1QqB1ha9UUnCTwj6lDoQrPQHoEH68LSSRI8QiWepHPqZXbqdimT+luRPaxuAYvUco\n J1PP7mN8LcZL4W2rJpA==", "X-Proofpoint-GUID": "WciWY3jeWk7ERiWqu4--2Lpj9XSWnlVU", "X-Authority-Analysis": "v=2.4 cv=efANubEH c=1 sm=1 tr=0 ts=69ef5162 cx=c_pps\n a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22\n a=EUspDBNiAAAA:8 a=3dU_fRaA568bylSsTIQA:9 a=QEXdDO2ut3YA:10\n a=uKXjsCUrEbL0IQVhDsJ9:22", "X-Proofpoint-ORIG-GUID": "WciWY3jeWk7ERiWqu4--2Lpj9XSWnlVU", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-27_03,2026-04-21_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n suspectscore=0 malwarescore=0 adultscore=0 bulkscore=0 clxscore=1015\n priorityscore=1501 lowpriorityscore=0 spamscore=0 phishscore=0\n impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604270129", "X-BeenThere": "u-boot@lists.denx.de", "X-Mailman-Version": "2.1.39", "Precedence": "list", "List-Id": "U-Boot discussion <u-boot.lists.denx.de>", "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>", "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>", "List-Post": "<mailto:u-boot@lists.denx.de>", "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>", "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>", "Errors-To": "u-boot-bounces@lists.denx.de", "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>", "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de", "X-Virus-Status": "Clean" }, "content": "Add fastboot_flash_gpt_partition_table() and\nfastboot_flash_mbr_partition_table() helper functions that handle\nflashing of GPT and MBR partition tables to block devices.\n\nThe MMC backend now uses these helper functions for GPT and MBR\noperations, simplifying the code while maintaining the same\nfunctionality.\n\nSigned-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>\n---\nChanges in v2:\n- Newly created in v2\n- Adds fastboot_flash_gpt_partition_table() and\n fastboot_flash_mbr_partition_table() helper functions\n- Update fb_mmc.c to use these functions\n---\n drivers/fastboot/fb_common.c | 94 ++++++++++++++++++++++++++++++++++++++++++++\n drivers/fastboot/fb_mmc.c | 49 ++++-------------------\n include/fastboot-internal.h | 30 ++++++++++++++\n 3 files changed, 131 insertions(+), 42 deletions(-)", "diff": "diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c\nindex dac5528f809..b20bc728910 100644\n--- a/drivers/fastboot/fb_common.c\n+++ b/drivers/fastboot/fb_common.c\n@@ -245,3 +245,97 @@ void fastboot_init(void *buf_addr, u32 buf_size)\n \tfastboot_set_progress_callback(NULL);\n \n }\n+\n+#if CONFIG_IS_ENABLED(EFI_PARTITION)\n+/**\n+ * fastboot_flash_gpt_partition_table() - Flash GPT partition table\n+ * @interface: Block interface name (e.g., \"mmc\", \"scsi\")\n+ * @device: Device number\n+ * @download_buffer: Buffer containing GPT data\n+ * @response: Fastboot response buffer\n+ */\n+void fastboot_flash_gpt_partition_table(const char *interface,\n+\t\t\t\t\tint device,\n+\t\t\t\t\tvoid *download_buffer,\n+\t\t\t\t\tchar *response)\n+{\n+\tstruct blk_desc *dev_desc;\n+\n+\tif (!interface || !strcmp(interface, \"\")) {\n+\t\tfastboot_fail(\"block interface isn't provided\", response);\n+\t\treturn;\n+\t}\n+\n+\tdev_desc = blk_get_dev(interface, device);\n+\tif (!dev_desc) {\n+\t\tfastboot_fail(\"no such device\", response);\n+\t\treturn;\n+\t}\n+\n+\tprintf(\"%s: updating MBR, Primary and Backup GPT(s) on %s device %d\\n\",\n+\t __func__, interface, dev_desc->devnum);\n+\n+\tif (is_valid_gpt_buf(dev_desc, download_buffer)) {\n+\t\tprintf(\"%s: invalid GPT - refusing to write to flash\\n\", __func__);\n+\t\tfastboot_fail(\"invalid GPT partition\", response);\n+\t\treturn;\n+\t}\n+\n+\tif (write_mbr_and_gpt_partitions(dev_desc, download_buffer)) {\n+\t\tprintf(\"%s: writing GPT partitions failed\\n\", __func__);\n+\t\tfastboot_fail(\"writing GPT partitions failed\", response);\n+\t\treturn;\n+\t}\n+\n+\tpart_init(dev_desc);\n+\tprintf(\"........ success\\n\");\n+\tfastboot_okay(NULL, response);\n+}\n+#endif\n+\n+#if CONFIG_IS_ENABLED(DOS_PARTITION)\n+/**\n+ * fastboot_flash_mbr_partition_table() - Flash MBR partition table\n+ * @interface: Block interface name (e.g., \"mmc\", \"scsi\")\n+ * @device: Device number\n+ * @download_buffer: Buffer containing MBR data\n+ * @response: Fastboot response buffer\n+ */\n+void fastboot_flash_mbr_partition_table(const char *interface,\n+\t\t\t\t\tint device,\n+\t\t\t\t\tvoid *download_buffer,\n+\t\t\t\t\tchar *response)\n+{\n+\tstruct blk_desc *dev_desc;\n+\n+\tif (!interface || !strcmp(interface, \"\")) {\n+\t\tfastboot_fail(\"block interface isn't provided\", response);\n+\t\treturn;\n+\t}\n+\n+\tdev_desc = blk_get_dev(interface, device);\n+\tif (!dev_desc) {\n+\t\tfastboot_fail(\"no such device\", response);\n+\t\treturn;\n+\t}\n+\n+\tprintf(\"%s: updating MBR on %s device %d\\n\", __func__, interface,\n+\t dev_desc->devnum);\n+\n+\tif (is_valid_dos_buf(download_buffer)) {\n+\t\tprintf(\"%s: invalid MBR - refusing to write to flash\\n\", __func__);\n+\t\tfastboot_fail(\"invalid MBR partition\", response);\n+\t\treturn;\n+\t}\n+\n+\tif (write_mbr_sector(dev_desc, download_buffer)) {\n+\t\tprintf(\"%s: writing MBR partition failed\\n\", __func__);\n+\t\tfastboot_fail(\"writing MBR partition failed\", response);\n+\t\treturn;\n+\t}\n+\n+\tpart_init(dev_desc);\n+\tprintf(\"........ success\\n\");\n+\tfastboot_okay(NULL, response);\n+}\n+#endif\ndiff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c\nindex 11d9c8e8460..c85853915c8 100644\n--- a/drivers/fastboot/fb_mmc.c\n+++ b/drivers/fastboot/fb_mmc.c\n@@ -343,7 +343,7 @@ int fastboot_mmc_get_part_info(const char *part_name,\n \treturn ret;\n }\n \n-static struct blk_desc *fastboot_mmc_get_dev(char *response)\n+static struct blk_desc __maybe_unused *fastboot_mmc_get_dev(char *response)\n {\n \tstruct blk_desc *ret = blk_get_dev(\"mmc\",\n \t\t\t\t\t CONFIG_FASTBOOT_FLASH_MMC_DEV);\n@@ -389,53 +389,18 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer,\n \n #if CONFIG_IS_ENABLED(EFI_PARTITION)\n \tif (strcmp(cmd, CONFIG_FASTBOOT_GPT_NAME) == 0) {\n-\t\tdev_desc = fastboot_mmc_get_dev(response);\n-\t\tif (!dev_desc)\n-\t\t\treturn;\n-\n-\t\tprintf(\"%s: updating MBR, Primary and Backup GPT(s)\\n\",\n-\t\t __func__);\n-\t\tif (is_valid_gpt_buf(dev_desc, download_buffer)) {\n-\t\t\tprintf(\"%s: invalid GPT - refusing to write to flash\\n\",\n-\t\t\t __func__);\n-\t\t\tfastboot_fail(\"invalid GPT partition\", response);\n-\t\t\treturn;\n-\t\t}\n-\t\tif (write_mbr_and_gpt_partitions(dev_desc, download_buffer)) {\n-\t\t\tprintf(\"%s: writing GPT partitions failed\\n\", __func__);\n-\t\t\tfastboot_fail(\"writing GPT partitions failed\",\n-\t\t\t\t response);\n-\t\t\treturn;\n-\t\t}\n-\t\tpart_init(dev_desc);\n-\t\tprintf(\"........ success\\n\");\n-\t\tfastboot_okay(NULL, response);\n+\t\tfastboot_flash_gpt_partition_table(\"mmc\",\n+\t\t\t\t\t\t CONFIG_FASTBOOT_FLASH_MMC_DEV,\n+\t\t\t\t\t\t download_buffer, response);\n \t\treturn;\n \t}\n #endif\n \n #if CONFIG_IS_ENABLED(DOS_PARTITION)\n \tif (strcmp(cmd, CONFIG_FASTBOOT_MBR_NAME) == 0) {\n-\t\tdev_desc = fastboot_mmc_get_dev(response);\n-\t\tif (!dev_desc)\n-\t\t\treturn;\n-\n-\t\tprintf(\"%s: updating MBR\\n\", __func__);\n-\t\tif (is_valid_dos_buf(download_buffer)) {\n-\t\t\tprintf(\"%s: invalid MBR - refusing to write to flash\\n\",\n-\t\t\t __func__);\n-\t\t\tfastboot_fail(\"invalid MBR partition\", response);\n-\t\t\treturn;\n-\t\t}\n-\t\tif (write_mbr_sector(dev_desc, download_buffer)) {\n-\t\t\tprintf(\"%s: writing MBR partition failed\\n\", __func__);\n-\t\t\tfastboot_fail(\"writing MBR partition failed\",\n-\t\t\t\t response);\n-\t\t\treturn;\n-\t\t}\n-\t\tpart_init(dev_desc);\n-\t\tprintf(\"........ success\\n\");\n-\t\tfastboot_okay(NULL, response);\n+\t\tfastboot_flash_mbr_partition_table(\"mmc\",\n+\t\t\t\t\t\t CONFIG_FASTBOOT_FLASH_MMC_DEV,\n+\t\t\t\t\t\t download_buffer, response);\n \t\treturn;\n \t}\n #endif\ndiff --git a/include/fastboot-internal.h b/include/fastboot-internal.h\nindex 610d4f91414..35683cdb642 100644\n--- a/include/fastboot-internal.h\n+++ b/include/fastboot-internal.h\n@@ -40,4 +40,34 @@ void fastboot_getvar_all(char *response);\n */\n void fastboot_getvar(char *cmd_parameter, char *response);\n \n+#if CONFIG_IS_ENABLED(EFI_PARTITION)\n+/**\n+ * fastboot_flash_gpt_partition_table() - Flash GPT partition table\n+ *\n+ * @interface: Block interface name (e.g., \"mmc\", \"scsi\")\n+ * @device: Device number\n+ * @download_buffer: Buffer containing GPT data\n+ * @response: Pointer to fastboot response buffer\n+ */\n+void fastboot_flash_gpt_partition_table(const char *interface,\n+\t\t\t\t\tint device,\n+\t\t\t\t\tvoid *download_buffer,\n+\t\t\t\t\tchar *response);\n+#endif\n+\n+#if CONFIG_IS_ENABLED(DOS_PARTITION)\n+/**\n+ * fastboot_flash_mbr_partition_table() - Flash MBR partition table\n+ *\n+ * @interface: Block interface name (e.g., \"mmc\", \"scsi\")\n+ * @device: Device number\n+ * @download_buffer: Buffer containing MBR data\n+ * @response: Pointer to fastboot response buffer\n+ */\n+void fastboot_flash_mbr_partition_table(const char *interface,\n+\t\t\t\t\tint device,\n+\t\t\t\t\tvoid *download_buffer,\n+\t\t\t\t\tchar *response);\n+#endif\n+\n #endif\n", "prefixes": [ "v2", "2/4" ] }