get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.2/patches/2232988/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2232988,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2232988/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/21c23cc7403153b45a81c958118b8d9f85f73140.1777984225.git.michal.simek@amd.com/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/1.2/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,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<21c23cc7403153b45a81c958118b8d9f85f73140.1777984225.git.michal.simek@amd.com>",
    "list_archive_url": null,
    "date": "2026-05-05T12:30:30",
    "name": "[v2,2/4] reset: Add sandbox tests for reset_reset() and reset_reset_bulk()",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3770d89e2db84880648e1974315ca50693e26f0c",
    "submitter": {
        "id": 84271,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/84271/?format=api",
        "name": "Michal Simek",
        "email": "michal.simek@amd.com"
    },
    "delegate": {
        "id": 3651,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/3651/?format=api",
        "username": "trini",
        "first_name": "Tom",
        "last_name": "Rini",
        "email": "trini@ti.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/21c23cc7403153b45a81c958118b8d9f85f73140.1777984225.git.michal.simek@amd.com/mbox/",
    "series": [
        {
            "id": 502832,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/502832/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=502832",
            "date": "2026-05-05T12:30:28",
            "name": "reset: Introduce reset_reset.*() API",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/502832/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2232988/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2232988/checks/",
    "tags": {},
    "related": [],
    "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 (1024-bit key;\n unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256\n header.s=selector1 header.b=Puls6oGh;\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=pass (p=quarantine dis=none) header.from=amd.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=amd.com header.i=@amd.com header.b=\"Puls6oGh\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=amd.com",
            "phobos.denx.de;\n spf=fail smtp.mailfrom=michal.simek@amd.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 4g8yY40sg0z1yJx\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 05 May 2026 22:31:04 +1000 (AEST)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id B1B6F848DD;\n\tTue,  5 May 2026 14:30:57 +0200 (CEST)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 48F69848DD; Tue,  5 May 2026 14:30:57 +0200 (CEST)",
            "from BYAPR05CU005.outbound.protection.outlook.com\n (mail-westusazlp170100001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c000::1])\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 4784A848DA\n for <u-boot@lists.denx.de>; Tue,  5 May 2026 14:30:54 +0200 (CEST)",
            "from CH5P221CA0002.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::27)\n by DS7PR12MB6095.namprd12.prod.outlook.com (2603:10b6:8:9c::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.25; Tue, 5 May\n 2026 12:30:50 +0000",
            "from CH1PEPF0000AD77.namprd04.prod.outlook.com\n (2603:10b6:610:1f2:cafe::8f) by CH5P221CA0002.outlook.office365.com\n (2603:10b6:610:1f2::27) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.27 via Frontend Transport; Tue,\n 5 May 2026 12:30:50 +0000",
            "from satlexmb08.amd.com (165.204.84.17) by\n CH1PEPF0000AD77.mail.protection.outlook.com (10.167.244.55) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9891.9 via Frontend Transport; Tue, 5 May 2026 12:30:50 +0000",
            "from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com\n (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Tue, 5 May\n 2026 07:30:46 -0500",
            "from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com\n (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Tue, 5 May\n 2026 07:30:45 -0500",
            "from localhost (10.180.168.240) by satlexmb07.amd.com\n (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17 via Frontend\n Transport; Tue, 5 May 2026 07:30:45 -0500"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2",
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=PxWpHKXcTumK5j+OCi1oT9pIPHhVeYB2C5BY0Y6nBd44ofmgUuWHooB+FU0gIAPgyW5wIhPOBkxQzsRXdix/WglrphCr+6/1xVhdMwMxmB4Kyub0Rk2oJvinWsiZgTM8/VNhqolSa8VknP4qvUSO1gNpCIzXygcq0FY156T1u6TT1R1XVooVHIMcmLWMuDwsTW84wLpgwZqCh70m0QqlaQ/W6qwLGVmUMOg29jKp9Bzv596ps1IWPdGrQH5WKzeEin7aTO9Lswr8i61wrx8802Eydt7vxz1TB1cQowtX+q6tXzOMD7tBIqqvWaL1HPe90NC2/qqkHXoXwZuwv8/+kQ==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=11v8JHHCxGqVuM7DzUXdY0SuP7lwEHIz3xinyqqqiTM=;\n b=EhojnpbcPivcjDSiXHwz+JfsEYgoNVcZLZH7o72my2tDQxGfuZpPAmVxahJb5xsVNf8dTpgot2/2a/f9E3EHFsBNhgBmIXDMXNB/WRXnr1mEdY98qBi0dkmJBQhucBL3nb/KxNwHcK7uOtbhdlQA6A3x4SjXXqwgiP2au78L4mCoiKlvnJRpTDKWuz6/RPl17KHc6nJhrjGQyS97G5AacnsbCdQyBNhH8xvSFoXCgU9Wvd6RlMi06CvdRc3ybzYIY/hkxKkY+xYTIXbhQSDgmrKLhezfnmrq+542qQL2WNPApmh7J348KfqxgsG0/qmUybAg3cTB/JFZN86L+rNzfg==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=amd.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=amd.com; dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=11v8JHHCxGqVuM7DzUXdY0SuP7lwEHIz3xinyqqqiTM=;\n b=Puls6oGhM3eGH1xhIvMlg7LPjrh76AzFluTwfgmnzK2y1I+W9LcembBMsxvLvvALIFjqn9Z9yE4DE0EoO1R5wL2hWQd8+fJOiuoJ4Br8E2rekVcFdH4t3l1E2zd3lRyQr4EanZUJNzMaiRWtW9wCm4w2qGtheSW+aGneQawZg+g=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C",
        "From": "Michal Simek <michal.simek@amd.com>",
        "To": "<u-boot@lists.denx.de>, <git@amd.com>, Simon Glass <sjg@chromium.org>",
        "CC": "Tom Rini <trini@konsulko.com>",
        "Subject": "[PATCH v2 2/4] reset: Add sandbox tests for reset_reset() and\n reset_reset_bulk()",
        "Date": "Tue, 5 May 2026 14:30:30 +0200",
        "Message-ID": "\n <21c23cc7403153b45a81c958118b8d9f85f73140.1777984225.git.michal.simek@amd.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<cover.1777984225.git.michal.simek@amd.com>",
        "References": "<cover.1777984225.git.michal.simek@amd.com>",
        "MIME-Version": "1.0",
        "X-Developer-Signature": "v=1; a=openpgp-sha256; l=7488; i=michal.simek@amd.com;\n h=from:subject:message-id; bh=37dzEtdvtbPG7oVd+oZ65NdjZEnkJU/bwOn/BlWhOtM=;\n b=owGbwMvMwCG2mv3fB7+vgl8ZT6slMWT+fPSKZTVv5lMbrubfq5YJXNJTWORT1Wjw+O5ahzkbn\n +9kSBPo7yhlYRDjYJAVU2SZzqTjsObbtaViyyPzYeawMoEMYeDiFICJbPnHyHBsLytnBsuHez+6\n jkiYz955O3E9f1FJ5AGJ2VeW9KVPE9ZlZDhzue6KT6HQjxm5hVtUNG+FL2OYHNEoc+WfKk/VTEF\n zP3YA",
        "X-Developer-Key": "i=michal.simek@amd.com; a=openpgp;\n fpr=67350C9BF5CCEE9B5364356A377C7F21FE3D1F91",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "CH1PEPF0000AD77:EE_|DS7PR12MB6095:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "4d61422a-e278-40ee-1cad-08deaaa2242f",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|36860700016|82310400026|1800799024|376014|22082099003|18002099003|56012099003;",
        "X-Microsoft-Antispam-Message-Info": "\n O80fxVgnQhkWMwDYQSCL/nrMR5fuS+TAiYiNxE1n8znxrI6q8tBIU1Wv9zfqjK2VF2ev8nT1U3iQtgfnU952wwOckd9u0D4n2oulIeAR4PH5/yReol6+kb8Mem3YSWWzGAB5g2w6RyfzXR7Qh7zmKv1RXxEm+Pfk1w3F5pqvN+IoxK7DVBGt2MyCjwiwX/I0H/qjHIDGtM36LO0sOGxzBcwOK3VZh4XiOUVU+qdMMdK+Z1YXGpBnNp5a2fL2TZSeS8qPjXT8u8YTMIfrvxCmNwyTDVk0g6l23ZQkJNgbyPx/NzWPoD3Xg8UTVb6dIutv4zm91/Db8OMo6FnNsQburbxHE3o1y5KLWmBO1DzyAypIy6mqAdDfshyxFp4UfsW/XRI6H5X+O4RbDy7iEr2CAvPK+TzD91TEC9SHQgXZD9vFE/wy7WVgJuJsuVBVRnxmmQVvoAk+MT8Q1gRerv9vinR2Bz7JNuFEN45dzscD70yLwECkgG7Py0kbPdkuir/Sm1q08PiU1HwLx8BPK4JqX4+i1GnkBINhO7hPuA31lFxyvl/1PSTuJgWz9kfAUj9sceYMePkJFq+LTljR/CFZuyGJf8XaGpJyrYYDF5jNVweqWt6qhk4EIQUle/RB463pRfKuilsV3Y5HvbjUb+tsnUBYnG+MPzxXL0fA/uI0SQu4MruuZjoHDFi9QlykmPLH8Q6fSTdO3yPwltIYEG13SQoxx1zAeB6CumRN1JXXT1E=",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(36860700016)(82310400026)(1800799024)(376014)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n 4j/hM5Bw20gf99D+T1FOCpyliUvr/JfWm86uHQfzMIWPoUQAF9ZG/FDwHBu1DwHZ4YAS/ENPWp+IJWmpvHbM1g9bC95cHr2dsJU8GeYHSq4EuoTeFhGu977zJoFXQYbKERCVrPSpCP43/7RTfPuXTiDhHXTImg6vxoJAznkJ/sNXRv7vQGs9E8Yw/63iHvaXjp1OEnUSCXqbXlaxVmhC3KbcDuaxOygSH9cB2lWi6QwbMJ1gPbySEQwz2/ANJO3nCY5IteqBI3io3OTRrVd0+WNKgXxP0Uh921CKaHEfGmASpJud1eOgQBAl8eS4gcfTH2Oj1uFh78Y3PDDhyvM8COnTVBMuBkXkRy/ZEQ9Oy9+9yaC8ogG+/GofLp73FlE+H3ecY0m+D4fD//1qohbC4uUiaEY/hkHdzy4fgEPxyWNCXcSF94VW9+IXrWFqDdOZ",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "05 May 2026 12:30:50.1407 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 4d61422a-e278-40ee-1cad-08deaaa2242f",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[satlexmb08.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n CH1PEPF0000AD77.namprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DS7PR12MB6095",
        "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 DM test coverage for the new reset_reset() and reset_reset_bulk()\nAPI functions. The tests exercise the assert + deassert fallback path\nsince the sandbox reset driver does not implement the rst_reset op.\n\nSigned-off-by: Michal Simek <michal.simek@amd.com>\n---\n\nChanges in v2:\n- Add reset_count field to track reset pulse operations\n- Implement sandbox_reset_reset() for rst_reset op\n- Add sandbox_reset_get_count() to query reset pulse count\n- Clear reset_count when reset is requested\n- Update tests to verify reset pulse actually happened\n\n arch/sandbox/include/asm/reset.h   |  3 ++\n drivers/reset/sandbox-reset-test.c | 14 +++++++\n drivers/reset/sandbox-reset.c      | 31 ++++++++++++++\n test/dm/reset.c                    | 67 ++++++++++++++++++++++++++++++\n 4 files changed, 115 insertions(+)",
    "diff": "diff --git a/arch/sandbox/include/asm/reset.h b/arch/sandbox/include/asm/reset.h\nindex f0709b41c09f..2890e0dc09bd 100644\n--- a/arch/sandbox/include/asm/reset.h\n+++ b/arch/sandbox/include/asm/reset.h\n@@ -10,6 +10,7 @@ struct udevice;\n \n int sandbox_reset_query(struct udevice *dev, unsigned long id);\n int sandbox_reset_is_requested(struct udevice *dev, unsigned long id);\n+int sandbox_reset_get_count(struct udevice *dev, unsigned long id);\n \n int sandbox_reset_test_get(struct udevice *dev);\n int sandbox_reset_test_get_devm(struct udevice *dev);\n@@ -19,6 +20,8 @@ int sandbox_reset_test_assert(struct udevice *dev);\n int sandbox_reset_test_assert_bulk(struct udevice *dev);\n int sandbox_reset_test_deassert(struct udevice *dev);\n int sandbox_reset_test_deassert_bulk(struct udevice *dev);\n+int sandbox_reset_test_reset(struct udevice *dev);\n+int sandbox_reset_test_reset_bulk(struct udevice *dev);\n int sandbox_reset_test_free(struct udevice *dev);\n int sandbox_reset_test_release_bulk(struct udevice *dev);\n \ndiff --git a/drivers/reset/sandbox-reset-test.c b/drivers/reset/sandbox-reset-test.c\nindex dfacb764bc77..64c205596c5e 100644\n--- a/drivers/reset/sandbox-reset-test.c\n+++ b/drivers/reset/sandbox-reset-test.c\n@@ -96,6 +96,20 @@ int sandbox_reset_test_deassert_bulk(struct udevice *dev)\n \treturn reset_deassert_bulk(sbrt->bulkp);\n }\n \n+int sandbox_reset_test_reset(struct udevice *dev)\n+{\n+\tstruct sandbox_reset_test *sbrt = dev_get_priv(dev);\n+\n+\treturn reset_reset(sbrt->ctlp, 0);\n+}\n+\n+int sandbox_reset_test_reset_bulk(struct udevice *dev)\n+{\n+\tstruct sandbox_reset_test *sbrt = dev_get_priv(dev);\n+\n+\treturn reset_reset_bulk(sbrt->bulkp, 0);\n+}\n+\n int sandbox_reset_test_free(struct udevice *dev)\n {\n \tstruct sandbox_reset_test *sbrt = dev_get_priv(dev);\ndiff --git a/drivers/reset/sandbox-reset.c b/drivers/reset/sandbox-reset.c\nindex adf9eedcba6d..71fba5b15da0 100644\n--- a/drivers/reset/sandbox-reset.c\n+++ b/drivers/reset/sandbox-reset.c\n@@ -9,12 +9,14 @@\n #include <reset-uclass.h>\n #include <asm/io.h>\n #include <asm/reset.h>\n+#include <linux/delay.h>\n \n #define SANDBOX_RESET_SIGNALS 101\n \n struct sandbox_reset_signal {\n \tbool asserted;\n \tbool requested;\n+\tint reset_count;\n };\n \n struct sandbox_reset {\n@@ -31,6 +33,7 @@ static int sandbox_reset_request(struct reset_ctl *reset_ctl)\n \t\treturn -EINVAL;\n \n \tsbr->signals[reset_ctl->id].requested = true;\n+\tsbr->signals[reset_ctl->id].reset_count = 0;\n \treturn 0;\n }\n \n@@ -66,6 +69,21 @@ static int sandbox_reset_deassert(struct reset_ctl *reset_ctl)\n \treturn 0;\n }\n \n+static int sandbox_reset_reset(struct reset_ctl *reset_ctl, ulong delay_us)\n+{\n+\tstruct sandbox_reset *sbr = dev_get_priv(reset_ctl->dev);\n+\n+\tdebug(\"%s(reset_ctl=%p, delay_us=%lu)\\n\", __func__, reset_ctl,\n+\t      delay_us);\n+\n+\tsbr->signals[reset_ctl->id].asserted = true;\n+\tudelay(delay_us);\n+\tsbr->signals[reset_ctl->id].asserted = false;\n+\tsbr->signals[reset_ctl->id].reset_count++;\n+\n+\treturn 0;\n+}\n+\n static int sandbox_reset_bind(struct udevice *dev)\n {\n \tdebug(\"%s(dev=%p)\\n\", __func__, dev);\n@@ -90,6 +108,7 @@ struct reset_ops sandbox_reset_reset_ops = {\n \t.rfree = sandbox_reset_free,\n \t.rst_assert = sandbox_reset_assert,\n \t.rst_deassert = sandbox_reset_deassert,\n+\t.rst_reset = sandbox_reset_reset,\n };\n \n U_BOOT_DRIVER(sandbox_reset) = {\n@@ -125,3 +144,15 @@ int sandbox_reset_is_requested(struct udevice *dev, unsigned long id)\n \n \treturn sbr->signals[id].requested;\n }\n+\n+int sandbox_reset_get_count(struct udevice *dev, unsigned long id)\n+{\n+\tstruct sandbox_reset *sbr = dev_get_priv(dev);\n+\n+\tdebug(\"%s(dev=%p, id=%ld)\\n\", __func__, dev, id);\n+\n+\tif (id >= SANDBOX_RESET_SIGNALS)\n+\t\treturn -EINVAL;\n+\n+\treturn sbr->signals[id].reset_count;\n+}\ndiff --git a/test/dm/reset.c b/test/dm/reset.c\nindex dceb6a1dad38..043d7cb7e0fc 100644\n--- a/test/dm/reset.c\n+++ b/test/dm/reset.c\n@@ -120,6 +120,73 @@ static int dm_test_reset_devm(struct unit_test_state *uts)\n }\n DM_TEST(dm_test_reset_devm, UTF_SCAN_FDT);\n \n+static int dm_test_reset_reset(struct unit_test_state *uts)\n+{\n+\tstruct udevice *dev_reset;\n+\tstruct udevice *dev_test;\n+\n+\tut_assertok(uclass_get_device_by_name(UCLASS_RESET, \"reset-ctl\",\n+\t\t\t\t\t      &dev_reset));\n+\tut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID));\n+\n+\tut_assertok(uclass_get_device_by_name(UCLASS_MISC, \"reset-ctl-test\",\n+\t\t\t\t\t      &dev_test));\n+\tut_assertok(sandbox_reset_test_get(dev_test));\n+\n+\t/* Verify reset_count starts at 0 */\n+\tut_asserteq(0, sandbox_reset_get_count(dev_reset, TEST_RESET_ID));\n+\n+\tut_assertok(sandbox_reset_test_assert(dev_test));\n+\tut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID));\n+\n+\tut_assertok(sandbox_reset_test_reset(dev_test));\n+\n+\t/* Verify reset was pulsed (count incremented) */\n+\tut_asserteq(1, sandbox_reset_get_count(dev_reset, TEST_RESET_ID));\n+\tut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID));\n+\n+\tut_assertok(sandbox_reset_test_free(dev_test));\n+\n+\treturn 0;\n+}\n+DM_TEST(dm_test_reset_reset, UTF_SCAN_FDT);\n+\n+static int dm_test_reset_reset_bulk(struct unit_test_state *uts)\n+{\n+\tstruct udevice *dev_reset;\n+\tstruct udevice *dev_test;\n+\n+\tut_assertok(uclass_get_device_by_name(UCLASS_RESET, \"reset-ctl\",\n+\t\t\t\t\t      &dev_reset));\n+\tut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID));\n+\tut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID));\n+\n+\tut_assertok(uclass_get_device_by_name(UCLASS_MISC, \"reset-ctl-test\",\n+\t\t\t\t\t      &dev_test));\n+\tut_assertok(sandbox_reset_test_get_bulk(dev_test));\n+\n+\t/* Verify reset_count starts at 0 */\n+\tut_asserteq(0, sandbox_reset_get_count(dev_reset, TEST_RESET_ID));\n+\tut_asserteq(0, sandbox_reset_get_count(dev_reset, OTHER_RESET_ID));\n+\n+\tut_assertok(sandbox_reset_test_assert_bulk(dev_test));\n+\tut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID));\n+\tut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID));\n+\n+\tut_assertok(sandbox_reset_test_reset_bulk(dev_test));\n+\n+\t/* Verify resets were pulsed (counts incremented) */\n+\tut_asserteq(1, sandbox_reset_get_count(dev_reset, TEST_RESET_ID));\n+\tut_asserteq(1, sandbox_reset_get_count(dev_reset, OTHER_RESET_ID));\n+\tut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID));\n+\tut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID));\n+\n+\tut_assertok(sandbox_reset_test_release_bulk(dev_test));\n+\n+\treturn 0;\n+}\n+DM_TEST(dm_test_reset_reset_bulk, UTF_SCAN_FDT);\n+\n static int dm_test_reset_bulk(struct unit_test_state *uts)\n {\n \tstruct udevice *dev_reset;\n",
    "prefixes": [
        "v2",
        "2/4"
    ]
}