get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2216453,
    "url": "http://patchwork.ozlabs.org/api/patches/2216453/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260326135855.2795149-2-thierry.reding@kernel.org/",
    "project": {
        "id": 21,
        "url": "http://patchwork.ozlabs.org/api/projects/21/?format=api",
        "name": "Linux Tegra Development",
        "link_name": "linux-tegra",
        "list_id": "linux-tegra.vger.kernel.org",
        "list_email": "linux-tegra@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260326135855.2795149-2-thierry.reding@kernel.org>",
    "list_archive_url": null,
    "date": "2026-03-26T13:58:48",
    "name": "[v3,1/6] soc/tegra: Update BPMP ABI header",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "96fc1edb037cfcea59b1b11d1696b22cba5e576a",
    "submitter": {
        "id": 92481,
        "url": "http://patchwork.ozlabs.org/api/people/92481/?format=api",
        "name": "Thierry Reding",
        "email": "thierry.reding@kernel.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260326135855.2795149-2-thierry.reding@kernel.org/mbox/",
    "series": [
        {
            "id": 497592,
            "url": "http://patchwork.ozlabs.org/api/series/497592/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/list/?series=497592",
            "date": "2026-03-26T13:58:48",
            "name": "PCI: tegra: Add Tegra264 support",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/497592/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2216453/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2216453/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-tegra+bounces-13298-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-tegra@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=TE2PhBmv;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13298-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"TE2PhBmv\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"
        ],
        "Received": [
            "from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fhQSR5Tfvz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 01:01:59 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id CF75730718D2\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 13:59:02 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 543A830EF6F;\n\tThu, 26 Mar 2026 13:59:02 +0000 (UTC)",
            "from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id C0164306B31;\n\tThu, 26 Mar 2026 13:59:01 +0000 (UTC)",
            "by smtp.kernel.org (Postfix) with ESMTPSA id 53152C116C6;\n\tThu, 26 Mar 2026 13:59:00 +0000 (UTC)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774533541; cv=none;\n b=gIiPEIUg9hAL24P+T1z1qAo0LTKMxYFq8mvZ6rcH7CrSMxp+u6idKsEGIEBXJyJDz745lAxCHxNm5RlDLdu/0hmOGsytSwpv8JsvFz9L2mlF+XVVnauOXPfEdZk9okc0QfLs/i2z+jcF6RaQ7+c16ncBUl48fOWBvjP2u2qLbe8=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774533541; c=relaxed/simple;\n\tbh=rB9GsHbvZiDDyjSTW/3nkSitJ293cZ0IcAZ8G1VZ3DI=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=BX5S8RK3qd30w072CSRAKuEHXQxUT6QOediDtJeyQP8RluIapNtJO7D/B7abluSnbsWjMsnz6Z2iIZLNhKF3WU6hg9ek7FOQgBOAkXp/EnHgm1QHNqPABa0R1O8I4uBVVBuV+pZn9KSuB1qBkMPZokNZEi9McoJTQrUb1s/Hxfk=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=TE2PhBmv; arc=none smtp.client-ip=10.30.226.201",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1774533541;\n\tbh=rB9GsHbvZiDDyjSTW/3nkSitJ293cZ0IcAZ8G1VZ3DI=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=TE2PhBmvj2KotfmfVfsdMBYIBhKR20jyDR3C7IFz8ZUtzE9TWGEpJNL2inX3UwYYO\n\t /qAH5tR4MmiOYQGWpEwEXyp90GbWfCef56uVp3kL6+pv4MzDtaxcgQ6+aimdpedTYS\n\t Nd+f0DHU63thToarDwKLIxl9BNfMjHa4cpXlYv2HJfPWI2ZdlRGPIGOu9C2lOef83b\n\t kNkF5CfMBi+0GyHhxGX95jxGpTJ3yQmJQjFxqtADDcT/BRsv2N6wTJuqG1pz87vQfI\n\t yD2pFuuTVfDXoS3eThi2S6GdTRotuWpkX6cbdL2oJYYD0a1U/R/5SmqJFw6+odY4gA\n\t bfRyBbCldkSNw==",
        "From": "Thierry Reding <thierry.reding@kernel.org>",
        "To": "Thierry Reding <thierry.reding@kernel.org>,\n Bjorn Helgaas <bhelgaas@google.com>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>, =?utf-8?q?Krzysztof_Wilczy=C5=84?=\n\t=?utf-8?q?ski?= <kwilczynski@kernel.org>,\n Manivannan Sadhasivam <mani@kernel.org>, Rob Herring <robh@kernel.org>,\n Krzysztof Kozlowski <krzk+dt@kernel.org>, Conor Dooley <conor+dt@kernel.org>",
        "Cc": "Jon Hunter <jonathanh@nvidia.com>,\n\tMikko Perttunen <mperttunen@nvidia.com>,\n\tlinux-pci@vger.kernel.org,\n\tdevicetree@vger.kernel.org,\n\tlinux-tegra@vger.kernel.org",
        "Subject": "[PATCH v3 1/6] soc/tegra: Update BPMP ABI header",
        "Date": "Thu, 26 Mar 2026 14:58:48 +0100",
        "Message-ID": "<20260326135855.2795149-2-thierry.reding@kernel.org>",
        "X-Mailer": "git-send-email 2.52.0",
        "In-Reply-To": "<20260326135855.2795149-1-thierry.reding@kernel.org>",
        "References": "<20260326135855.2795149-1-thierry.reding@kernel.org>",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-tegra@vger.kernel.org",
        "List-Id": "<linux-tegra.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-tegra+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-tegra+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit"
    },
    "content": "From: Thierry Reding <treding@nvidia.com>\n\nThis update primarily adds various new commands and MRQs for Tegra264,\nbut also contains a few new annotations and fixes.\n\nSigned-off-by: Thierry Reding <treding@nvidia.com>\n---\nChanges in v2:\n- remove SPDX-FileCopyrightText tag\n\n include/soc/tegra/bpmp-abi.h | 4565 +++++++++++++++++++++++++++-------\n 1 file changed, 3671 insertions(+), 894 deletions(-)",
    "diff": "diff --git a/include/soc/tegra/bpmp-abi.h b/include/soc/tegra/bpmp-abi.h\nindex 39bb3f87e28d..5c64b3e02211 100644\n--- a/include/soc/tegra/bpmp-abi.h\n+++ b/include/soc/tegra/bpmp-abi.h\n@@ -1,6 +1,6 @@\n-/* SPDX-License-Identifier: GPL-2.0-only */\n+/* SPDX-License-Identifier: GPL-2.0 OR MIT */\n /*\n- * Copyright (c) 2014-2022, NVIDIA CORPORATION.  All rights reserved.\n+ * Copyright (c) 2014-2025, NVIDIA CORPORATION.  All rights reserved.\n  */\n \n #ifndef ABI_BPMP_ABI_H\n@@ -74,6 +74,7 @@\n \n /**\n  * @ingroup MRQ_Format\n+ *\n  * Request an answer from the peer.\n  * This should be set in mrq_request::flags for all requests targetted\n  * at BPMP. For requests originating in BPMP, this flag is optional except\n@@ -85,6 +86,7 @@\n \n /**\n  * @ingroup MRQ_Format\n+ *\n  * Ring the sender's doorbell when responding. This should be set unless\n  * the sender wants to poll the underlying communications layer directly.\n  *\n@@ -94,7 +96,9 @@\n \n /**\n  * @ingroup MRQ_Format\n- * CRC present\n+ *\n+ * This is set in mrq_request::flags for requests that have CRC present and\n+ * correspondingly in mrq_response::flags for responses that have CRC present.\n  */\n #define BPMP_MAIL_CRC_PRESENT\t(1U << 2U)\n \n@@ -127,91 +131,319 @@ struct mrq_request {\n \t * crc16, xid and length fields are present when set.\n \t * Some platform configurations, especially when targeted to applications requiring\n \t * functional safety, mandate this option being set or otherwise will respond with\n-\t * -BPMP_EBADMSG and ignore the request.\n+\t * -#BPMP_EBADMSG and ignore the request.\n \t *\n \t * **xid** is a transaction ID.\n \t *\n \t * Only used when #BPMP_MAIL_CRC_PRESENT is set.\n \t *\n \t * **payload_length** of the message expressed in bytes without the size of this header.\n-\t * See table below for minimum accepted payload lengths for each MRQ.\n-\t * Note: For DMCE communication, this field expresses the length as a multiple of 4 bytes\n-\t * rather than bytes.\n+\t * See tables below for minimum accepted payload lengths for each MRQ.\n \t *\n \t * Only used when #BPMP_MAIL_CRC_PRESENT is set.\n \t *\n-\t * | MRQ                  | CMD                                  | minimum payload length\n-\t * | -------------------- | ------------------------------------ | ------------------------------------------ |\n-\t * | MRQ_PING             |                                      | 4                                          |\n-\t * | MRQ_THREADED_PING    |                                      | 4                                          |\n-\t * | MRQ_RESET            | any                                  | 8                                          |\n-\t * | MRQ_I2C              |                                      | 12 + cmd_i2c_xfer_request.data_size        |\n-\t * | MRQ_CLK              | CMD_CLK_GET_RATE                     | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_SET_RATE                     | 16                                         |\n-\t * | MRQ_CLK              | CMD_CLK_ROUND_RATE                   | 16                                         |\n-\t * | MRQ_CLK              | CMD_CLK_GET_PARENT                   | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_SET_PARENT                   | 8                                          |\n-\t * | MRQ_CLK              | CMD_CLK_ENABLE                       | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_DISABLE                      | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_IS_ENABLED                   | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_GET_ALL_INFO                 | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_GET_MAX_CLK_ID               | 4                                          |\n-\t * | MRQ_CLK              | CMD_CLK_GET_FMAX_AT_VMIN             | 4                                          |\n-\t * | MRQ_QUERY_ABI        |                                      | 4                                          |\n-\t * | MRQ_PG               | CMD_PG_QUERY_ABI                     | 12                                         |\n-\t * | MRQ_PG               | CMD_PG_SET_STATE                     | 12                                         |\n-\t * | MRQ_PG               | CMD_PG_GET_STATE                     | 8                                          |\n-\t * | MRQ_PG               | CMD_PG_GET_NAME                      | 8                                          |\n-\t * | MRQ_PG               | CMD_PG_GET_MAX_ID                    | 8                                          |\n-\t * | MRQ_THERMAL          | CMD_THERMAL_QUERY_ABI                | 8                                          |\n-\t * | MRQ_THERMAL          | CMD_THERMAL_GET_TEMP                 | 8                                          |\n-\t * | MRQ_THERMAL          | CMD_THERMAL_SET_TRIP                 | 20                                         |\n-\t * | MRQ_THERMAL          | CMD_THERMAL_GET_NUM_ZONES            | 4                                          |\n-\t * | MRQ_THERMAL          | CMD_THERMAL_GET_THERMTRIP            | 8                                          |\n-\t * | MRQ_CPU_VHINT        |                                      | 8                                          |\n-\t * | MRQ_ABI_RATCHET      |                                      | 2                                          |\n-\t * | MRQ_EMC_DVFS_LATENCY |                                      | 8                                          |\n-\t * | MRQ_EMC_DVFS_EMCHUB  |                                      | 8                                          |\n-\t * | MRQ_EMC_DISP_RFL     |                                      | 4                                          |\n-\t * | MRQ_BWMGR            | CMD_BWMGR_QUERY_ABI                  | 8                                          |\n-\t * | MRQ_BWMGR            | CMD_BWMGR_CALC_RATE                  | 8 + 8 * bwmgr_rate_req.num_iso_clients     |\n-\t * | MRQ_ISO_CLIENT       | CMD_ISO_CLIENT_QUERY_ABI             | 8                                          |\n-\t * | MRQ_ISO_CLIENT       | CMD_ISO_CLIENT_CALCULATE_LA          | 16                                         |\n-\t * | MRQ_ISO_CLIENT       | CMD_ISO_CLIENT_SET_LA                | 16                                         |\n-\t * | MRQ_ISO_CLIENT       | CMD_ISO_CLIENT_GET_MAX_BW            | 8                                          |\n-\t * | MRQ_CPU_NDIV_LIMITS  |                                      | 4                                          |\n-\t * | MRQ_CPU_AUTO_CC3     |                                      | 4                                          |\n-\t * | MRQ_RINGBUF_CONSOLE  | CMD_RINGBUF_CONSOLE_QUERY_ABI        | 8                                          |\n-\t * | MRQ_RINGBUF_CONSOLE  | CMD_RINGBUF_CONSOLE_READ             | 5                                          |\n-\t * | MRQ_RINGBUF_CONSOLE  | CMD_RINGBUF_CONSOLE_WRITE            | 5 + cmd_ringbuf_console_write_req.len      |\n-\t * | MRQ_RINGBUF_CONSOLE  | CMD_RINGBUF_CONSOLE_GET_FIFO         | 4                                          |\n-\t * | MRQ_STRAP            | STRAP_SET                            | 12                                         |\n-\t * | MRQ_UPHY             | CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    | 24                                         |\n-\t * | MRQ_UPHY             | CMD_UPHY_PCIE_LANE_MARGIN_STATUS     | 4                                          |\n-\t * | MRQ_UPHY             | CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT | 5                                          |\n-\t * | MRQ_UPHY             | CMD_UPHY_PCIE_CONTROLLER_STATE       | 6                                          |\n-\t * | MRQ_UPHY             | CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  | 5                                          |\n-\t * | MRQ_FMON             | CMD_FMON_GEAR_CLAMP                  | 16                                         |\n-\t * | MRQ_FMON             | CMD_FMON_GEAR_FREE                   | 4                                          |\n-\t * | MRQ_FMON             | CMD_FMON_GEAR_GET                    | 4                                          |\n-\t * | MRQ_FMON             | CMD_FMON_FAULT_STS_GET               | 8                                          |\n-\t * | MRQ_EC               | CMD_EC_STATUS_EX_GET                 | 12                                         |\n-\t * | MRQ_QUERY_FW_TAG     |                                      | 0                                          |\n-\t * | MRQ_DEBUG            | CMD_DEBUG_OPEN_RO                    | 4 + length of cmd_debug_fopen_request.name |\n-\t * | MRQ_DEBUG            | CMD_DEBUG_OPEN_WO                    | 4 + length of cmd_debug_fopen_request.name |\n-\t * | MRQ_DEBUG            | CMD_DEBUG_READ                       | 8                                          |\n-\t * | MRQ_DEBUG            | CMD_DEBUG_WRITE                      | 12 + cmd_debug_fwrite_request.datalen      |\n-\t * | MRQ_DEBUG            | CMD_DEBUG_CLOSE                      | 8                                          |\n-\t * | MRQ_TELEMETRY        |                                      | 8                                          |\n-\t * | MRQ_PWR_LIMIT        | CMD_PWR_LIMIT_QUERY_ABI              | 8                                          |\n-\t * | MRQ_PWR_LIMIT        | CMD_PWR_LIMIT_SET                    | 20                                         |\n-\t * | MRQ_PWR_LIMIT        | CMD_PWR_LIMIT_GET                    | 16                                         |\n-\t * | MRQ_PWR_LIMIT        | CMD_PWR_LIMIT_CURR_CAP               | 8                                          |\n-\t * | MRQ_GEARS            |                                      | 0                                          |\n-\t * | MRQ_BWMGR_INT        | CMD_BWMGR_INT_QUERY_ABI              | 8                                          |\n-\t * | MRQ_BWMGR_INT        | CMD_BWMGR_INT_CALC_AND_SET           | 16                                         |\n-\t * | MRQ_BWMGR_INT        | CMD_BWMGR_INT_CAP_SET                | 8                                          |\n-\t * | MRQ_OC_STATUS        |                                      | 0                                          |\n+\t * | MRQ                   | Sub-command                           | Minimum payload length\n+\t * | --------------------- | ------------------------------------  | ------------------------------------------------------- |\n+\t * | #MRQ_PING             | -                                     | 4                                                       |\n+\t * | #MRQ_THREADED_PING    | -                                     | 4                                                       |\n+\t * | #MRQ_RESET            | any                                   | 8                                                       |\n+\t * | #MRQ_I2C              | -                                     | 12 + cmd_i2c_xfer_request.data_size                     |\n+\t * | #MRQ_CLK              | #CMD_CLK_GET_RATE                     | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_SET_RATE                     | 16                                                      |\n+\t * | #MRQ_CLK              | #CMD_CLK_ROUND_RATE                   | 16                                                      |\n+\t * | #MRQ_CLK              | #CMD_CLK_GET_PARENT                   | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_SET_PARENT                   | 8                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_ENABLE                       | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_DISABLE                      | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_IS_ENABLED                   | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_GET_ALL_INFO                 | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_GET_MAX_CLK_ID               | 4                                                       |\n+\t * | #MRQ_CLK              | #CMD_CLK_GET_FMAX_AT_VMIN             | 4                                                       |\n+\t * | #MRQ_QUERY_ABI        | -                                     | 4                                                       |\n+\t * | #MRQ_PG               | #CMD_PG_QUERY_ABI                     | 12                                                      |\n+\t * | #MRQ_PG               | #CMD_PG_SET_STATE                     | 12                                                      |\n+\t * | #MRQ_PG               | #CMD_PG_GET_STATE                     | 8                                                       |\n+\t * | #MRQ_PG               | #CMD_PG_GET_NAME                      | 8                                                       |\n+\t * | #MRQ_PG               | #CMD_PG_GET_MAX_ID                    | 8                                                       |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_QUERY_ABI                | 8                                                       |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_GET_TEMP                 | 8                                                       |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_GET_NUM_ZONES            | 4                                                       |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_GET_THERMTRIP            | 8                                                       |\n+\t * | #MRQ_ABI_RATCHET      | -                                     | 2                                                       |\n+\t * | #MRQ_EMC_DVFS_LATENCY | -                                     | 8                                                       |\n+\t * | #MRQ_QUERY_FW_TAG     | -                                     | 0                                                       |\n+\t * | #MRQ_DEBUG            | #CMD_DEBUG_OPEN_RO                    | 4 + length of cmd_debug_fopen_request.name              |\n+\t * | #MRQ_DEBUG            | #CMD_DEBUG_OPEN_WO                    | 4 + length of cmd_debug_fopen_request.name              |\n+\t * | #MRQ_DEBUG            | #CMD_DEBUG_READ                       | 8                                                       |\n+\t * | #MRQ_DEBUG            | #CMD_DEBUG_WRITE                      | 12 + cmd_debug_fwrite_request.datalen                   |\n+\t * | #MRQ_DEBUG            | #CMD_DEBUG_CLOSE                      | 8                                                       |\n+\t *\n+\t * @cond (bpmp_t186)\n+\t * The following additional MRQ is supported on T186 -platform:\n+\t *\n+\t * | MRQ                   | Sub-command                           | Minimum payload length                |\n+\t * | --------------------- | ------------------------------------- | ------------------------------------- |\n+\t * | #MRQ_CPU_VHINT        | -                                     | 8                                     |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_SET_TRIP                 | 20                                    |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_QUERY_ABI        | 8                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_READ             | 5                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_WRITE            | 5 + cmd_ringbuf_console_write_req.len |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_GET_FIFO         | 4                                     |\n+\t * @endcond\n+\t *\n+\t * @cond (bpmp_t194)\n+\t * The following additional MRQs are supported on T194 -platform:\n+\t *\n+\t * | MRQ                   | Sub-command                           | Minimum payload length                |\n+\t * | --------------------- | ------------------------------------- | ------------------------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS  | -                                     | 4                                     |\n+\t * | #MRQ_STRAP            | #STRAP_SET                            | 12                                    |\n+\t * | #MRQ_CPU_AUTO_CC3     | -                                     | 4                                     |\n+\t * | #MRQ_EC               | #CMD_EC_STATUS_EX_GET                 | 12                                    |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_CLAMP                  | 16                                    |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_FREE                   | 4                                     |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_GET                    | 4                                     |\n+\t * | #MRQ_FMON             | #CMD_FMON_FAULT_STS_GET               | 8                                     |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_SET_TRIP                 | 20                                    |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_QUERY_ABI        | 8                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_READ             | 5                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_WRITE            | 5 + cmd_ringbuf_console_write_req.len |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_GET_FIFO         | 4                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    | 24                                    |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_STATUS     | 4                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT | 5                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_CONTROLLER_STATE       | 6                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  | 5                                     |\n+\t * @endcond\n+\t *\n+\t * @cond (bpmp_safe && bpmp_t234)\n+\t * The following additional MRQ is supported on functional-safety\n+\t * builds for the T234 platform:\n+\t *\n+\t * | MRQ                   | Sub-command                           | Minimum payload length                |\n+\t * | --------------------- | ------------------------------------- | ------------------------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS  | -                                     | 4                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_QUERY_ABI        | 8                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_READ             | 5                                     |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_WRITE            | 5 + cmd_ringbuf_console_write_req.len |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_GET_FIFO         | 4                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    | 24                                    |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_STATUS     | 4                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT | 5                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_CONTROLLER_STATE       | 6                                     |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  | 5                                     |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_CLAMP                  | 16                                    |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_FREE                   | 4                                     |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_GET                    | 4                                     |\n+\t * | #MRQ_FMON             | #CMD_FMON_FAULT_STS_GET               | 8                                     |\n+\t * | #MRQ_EMC_DVFS_EMCHUB  | -                                     | 8                                     |\n+\t * | #MRQ_EMC_DISP_RFL     | -                                     | 4                                     |\n+\t *\n+\t * @endcond\n+\t *\n+\t * @cond (!bpmp_safe && bpmp_t234)\n+\t *\n+\t * The following additional MRQs are supported on non-functional-safety\n+\t * builds for the T234 and T238 -platforms:\n+\t *\n+\t * | MRQ                   | Sub-command                           | Minimum payload length                              |\n+\t * | --------------------- | ------------------------------------- | --------------------------------------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS  | -                                     | 4                                                   |\n+\t * | #MRQ_STRAP            | #STRAP_SET                            | 12                                                  |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_SET_TRIP                 | 20                                                  |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_QUERY_ABI        | 8                                                   |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_READ             | 5                                                   |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_WRITE            | 5 + cmd_ringbuf_console_write_req.len               |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_GET_FIFO         | 4                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    | 24                                                  |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_STATUS     | 4                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT | 5                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_CONTROLLER_STATE       | 6                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  | 5                                                   |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_CLAMP                  | 16                                                  |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_FREE                   | 4                                                   |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_GET                    | 4                                                   |\n+\t * | #MRQ_FMON             | #CMD_FMON_FAULT_STS_GET               | 8                                                   |\n+\t * | #MRQ_EMC_DVFS_EMCHUB  | -                                     | 8                                                   |\n+\t * | #MRQ_EMC_DISP_RFL     | -                                     | 4                                                   |\n+\t * | #MRQ_BWMGR            | #CMD_BWMGR_QUERY_ABI                  | 8                                                   |\n+\t * | #MRQ_BWMGR            | #CMD_BWMGR_CALC_RATE                  | 8 + 8 * cmd_bwmgr_calc_rate_request.num_iso_clients |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_QUERY_ABI             | 8                                                   |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_CALCULATE_LA          | 16                                                  |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_SET_LA                | 16                                                  |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_GET_MAX_BW            | 8                                                   |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_QUERY_ABI              | 8                                                   |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_CALC_AND_SET           | 16                                                  |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_CAP_SET                | 8                                                   |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_GET_LAST_REQUEST       | 9                                                   |\n+\t * | #MRQ_OC_STATUS        | -                                     | 0                                                   |\n+\t * @endcond\n+\t *\n+\t * @cond bpmp_t238\n+\t * The following additional MRQs are supported on T238 platform:\n+\t *\n+\t * | MRQ                   | Sub-command                           | Minimum payload length                              |\n+\t * | --------------------- | ------------------------------------- | --------------------------------------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS  | -                                     | 4                                                   |\n+\t * | #MRQ_STRAP            | #STRAP_SET                            | 12                                                  |\n+\t * | #MRQ_THERMAL          | #CMD_THERMAL_SET_TRIP                 | 20                                                  |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_QUERY_ABI        | 8                                                   |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_READ             | 5                                                   |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_WRITE            | 5 + cmd_ringbuf_console_write_req.len               |\n+\t * | #MRQ_RINGBUF_CONSOLE  | #CMD_RINGBUF_CONSOLE_GET_FIFO         | 4                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    | 24                                                  |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_LANE_MARGIN_STATUS     | 4                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT | 5                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_CONTROLLER_STATE       | 6                                                   |\n+\t * | #MRQ_UPHY             | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  | 5                                                   |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_CLAMP                  | 16                                                  |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_FREE                   | 4                                                   |\n+\t * | #MRQ_FMON             | #CMD_FMON_GEAR_GET                    | 4                                                   |\n+\t * | #MRQ_FMON             | #CMD_FMON_FAULT_STS_GET               | 8                                                   |\n+\t * | #MRQ_EMC_DVFS_EMCHUB  | -                                     | 8                                                   |\n+\t * | #MRQ_EMC_DISP_RFL     | -                                     | 4                                                   |\n+\t * | #MRQ_BWMGR            | #CMD_BWMGR_QUERY_ABI                  | 8                                                   |\n+\t * | #MRQ_BWMGR            | #CMD_BWMGR_CALC_RATE                  | 8 + 8 * cmd_bwmgr_calc_rate_request.num_iso_clients |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_QUERY_ABI             | 8                                                   |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_CALCULATE_LA          | 16                                                  |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_SET_LA                | 16                                                  |\n+\t * | #MRQ_ISO_CLIENT       | #CMD_ISO_CLIENT_GET_MAX_BW            | 8                                                   |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_QUERY_ABI              | 8                                                   |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_CALC_AND_SET           | 16                                                  |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_CAP_SET                | 8                                                   |\n+\t * | #MRQ_BWMGR_INT        | #CMD_BWMGR_INT_GET_LAST_REQUEST       | 9                                                   |\n+\t * | #MRQ_OC_STATUS        | -                                     | 0                                                   |\n+\t * | #MRQ_THROTTLE         | #CMD_THROTTLE_SET_OC_CONFIG           | 5                                                   |\n+\t * @endcond\n+\t *\n+\t * @cond (bpmp_th500)\n+\t * The following additional MRQs are supported on TH500 -platform:\n+\t *\n+\t * | MRQ                  | Sub-command                           | Minimum payload length |\n+\t * | -------------------- | ------------------------------------- | ---------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS | -                                     | 4                      |\n+\t * | #MRQ_THERMAL         | #CMD_THERMAL_SET_TRIP                 | 20                     |\n+\t * | #MRQ_STRAP           | #STRAP_SET                            | 12                     |\n+\t * | #MRQ_SHUTDOWN        | -                                     | 4                      |\n+\t * | #MRQ_UPHY            | #CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    | 24                     |\n+\t * | #MRQ_UPHY            | #CMD_UPHY_PCIE_LANE_MARGIN_STATUS     | 4                      |\n+\t * | #MRQ_UPHY            | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT | 5                      |\n+\t * | #MRQ_UPHY            | #CMD_UPHY_PCIE_CONTROLLER_STATE       | 6                      |\n+\t * | #MRQ_UPHY            | #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  | 5                      |\n+\t * | #MRQ_UPHY            | #CMD_UPHY_PCIE_CONFIG_VDM             | 3                      |\n+\t * | #MRQ_TELEMETRY       | -                                     | 8                      |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_QUERY_ABI              | 8                      |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_SET                    | 20                     |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_GET                    | 16                     |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_CURR_CAP               | 8                      |\n+\t * | #MRQ_GEARS           | -                                     | 0                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_QUERY_ABI                    | 8                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_START_INITIALIZATION         | 5                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_GET_STATUS                   | 4                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_HOTRESET_PREP                | 5                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_START_HOTRESET               | 5                      |\n+\t * | #MRQ_THROTTLE        | #CMD_THROTTLE_QUERY_ABI               | 4                      |\n+\t * | #MRQ_THROTTLE        | #CMD_THROTTLE_GET_CHIPTHROT_STATUS    | 4                      |\n+\t * | #MRQ_PWRMODEL        | #CMD_PWRMODEL_QUERY_ABI               | 8                      |\n+\t * | #MRQ_PWRMODEL        | #CMD_PWRMODEL_PWR_GET                 | 16                     |\n+\t * | #MRQ_PWR_CNTRL       | #CMD_PWR_CNTRL_QUERY_ABI              | 8                      |\n+\t * | #MRQ_PWR_CNTRL       | #CMD_PWR_CNTRL_BYPASS_SET             | 12                     |\n+\t * | #MRQ_PWR_CNTRL       | #CMD_PWR_CNTRL_BYPASS_GET             | 8                      |\n+\t * @endcond\n+\t *\n+\t * @cond (bpmp_tb500)\n+\t * The following additional MRQs are supported on TB500 -platform:\n+\t *\n+\t * | MRQ                  | Sub-command                              | Minimum payload length |\n+\t * | -------------------- | ---------------------------------------- | ---------------------- |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_QUERY_ABI                 | 8                      |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_SET                       | 20                     |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_GET                       | 16                     |\n+\t * | #MRQ_PWR_LIMIT       | #CMD_PWR_LIMIT_CURR_CAP                  | 8                      |\n+\t * | #MRQ_TELEMETRY_EX    | #CMD_TELEMETRY_EX_QUERY_ABI              | 8                      |\n+\t * | #MRQ_TELEMETRY_EX    | #CMD_TELEMETRY_EX_BASE_SZ_GET            | 12                     |\n+\t * | #MRQ_THROTTLE        | #CMD_THROTTLE_GET_CHIPTHROT_STATUS       | 4                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_QUERY_ABI                       | 8                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_START_INITIALIZATION            | 5                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_GET_STATUS                      | 4                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_HOTRESET_PREP                   | 5                      |\n+\t * | #MRQ_C2C             | #CMD_C2C_START_HOTRESET                  | 5                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_QUERY_ABI                       | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_IPMU_SET_TRIGGERS               | 120                    |\n+\t * | MRQ_HWPM             | CMD_HWPM_IPMU_SET_PAYLOADS_SHIFTS        | 120                    |\n+\t * | MRQ_HWPM             | CMD_HWPM_IPMU_GET_MAX_PAYLOADS           | 0                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_NVTHERM_SET_SAMPLE_RATE         | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_NVTHERM_SET_BUBBLE_INTERVAL     | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_NVTHERM_SET_FLEX_CHANNELS       | 120                    |\n+\t * | MRQ_HWPM             | CMD_HWPM_ISENSE_GET_SENSOR_NAME          | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_ISENSE_GET_SENSOR_CHANNEL       | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_ISENSE_GET_SENSOR_SCALE_FACTOR  | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_ISENSE_GET_SENSOR_OFFSET        | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_ISENSE_GET_SUM_BLOCK_NAME       | 4                      |\n+\t * | MRQ_HWPM             | CMD_HWPM_ISENSE_GET_SUM_BLOCK_INPUTS     | 4                      |\n+\t * | MRQ_DVFS             | CMD_DVFS_QUERY_ABI                       | 4                      |\n+\t * | MRQ_DVFS             | CMD_DVFS_SET_CTRL_STATE                  | 8                      |\n+\t * | MRQ_DVFS             | CMD_DVFS_SET_MGR_STATE                   | 8                      |\n+\t * | MRQ_PPP_PROFILE      | CMD_PPP_PROFILE_QUERY_ABI                | 8                      |\n+\t * | MRQ_PPP_PROFILE      | CMD_PPP_PROFILE_QUERY_MASKS              | 8                      |\n+\t * | MRQ_PPP_PROFILE      | CMD_PPP_CORE_QUERY_CPU_MASK              | 8                      |\n+\t * | MRQ_PPP_PROFILE      | CMD_PPP_AVAILABLE_QUERY                  | 4                      |\n+\t * @endcond\n+\t *\n+\t * @cond (bpmp_safe && bpmp_t264)\n+\t * The following additional MRQ is supported on functional-safety\n+\t * builds for the T264 platform:\n+\t *\n+\t * | MRQ                  | Sub-command                       | Minimum payload length |\n+\t * | -------------------- | --------------------------------- | ---------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS | -                                 | 4                      |\n+\t * | #MRQ_STRAP           | #STRAP_SET                        | 12                     |\n+\t * | #MRQ_SHUTDOWN        | -                                 | 4                      |\n+\t * | #MRQ_FMON            | #CMD_FMON_GEAR_CLAMP              | 16                     |\n+\t * | #MRQ_FMON            | #CMD_FMON_GEAR_FREE               | 4                      |\n+\t * | #MRQ_FMON            | #CMD_FMON_GEAR_GET                | 4                      |\n+\t * | #MRQ_FMON            | #CMD_FMON_FAULT_STS_GET           | 8                      |\n+\t * | #MRQ_PCIE            | #CMD_PCIE_EP_CONTROLLER_INIT      | 5                      |\n+\t * | #MRQ_PCIE            | #CMD_PCIE_EP_CONTROLLER_OFF       | 5                      |\n+\t * | #MRQ_CR7             | #CMD_CR7_ENTRY                    | 12                     |\n+\t * | #MRQ_CR7             | #CMD_CR7_EXIT                     | 12                     |\n+\t * | #MRQ_SLC             | #CMD_SLC_QUERY_ABI                | 8                      |\n+\t * | #MRQ_SLC             | #CMD_SLC_BYPASS_SET               | 8                      |\n+\t * | #MRQ_SLC             | #CMD_SLC_BYPASS_GET               | 4                      |\n+\t * @endcond\n+\t *\n+\t * @cond (!bpmp_safe && bpmp_t264)\n+\t * The following additional MRQs are supported on non-functional-safety\n+\t * builds for the T264 -platform:\n+\t *\n+\t * | MRQ                  | Sub-command                       | Minimum payload length |\n+\t * | -------------------- | --------------------------------- | ---------------------- |\n+\t * | #MRQ_CPU_NDIV_LIMITS | -                                 | 4                      |\n+\t * | #MRQ_STRAP           | #STRAP_SET                        | 12                     |\n+\t * | #MRQ_SHUTDOWN        | -                                 | 4                      |\n+\t * | #MRQ_FMON            | #CMD_FMON_GEAR_CLAMP              | 16                     |\n+\t * | #MRQ_FMON            | #CMD_FMON_GEAR_FREE               | 4                      |\n+\t * | #MRQ_FMON            | #CMD_FMON_GEAR_GET                | 4                      |\n+\t * | #MRQ_FMON            | #CMD_FMON_FAULT_STS_GET           | 8                      |\n+\t * | #MRQ_OC_STATUS       | -                                 | 0                      |\n+\t * | #MRQ_PCIE            | #CMD_PCIE_EP_CONTROLLER_INIT      | 5                      |\n+\t * | #MRQ_PCIE            | #CMD_PCIE_EP_CONTROLLER_OFF       | 5                      |\n+\t * | #MRQ_PCIE            | #CMD_PCIE_RP_CONTROLLER_OFF       | 5                      |\n+\t * | #MRQ_CR7             | #CMD_CR7_ENTRY                    | 12                     |\n+\t * | #MRQ_CR7             | #CMD_CR7_EXIT                     | 12                     |\n+\t * | #MRQ_SLC             | #CMD_SLC_QUERY_ABI                | 8                      |\n+\t * | #MRQ_SLC             | #CMD_SLC_BYPASS_SET               | 8                      |\n+\t * | #MRQ_SLC             | #CMD_SLC_BYPASS_GET               | 4                      |\n+\t * | #MRQ_ISO_CLIENT      | #CMD_ISO_CLIENT_QUERY_ABI         | 8                      |\n+\t * | #MRQ_ISO_CLIENT      | #CMD_ISO_CLIENT_CALCULATE_LA      | 16                     |\n+\t * | #MRQ_ISO_CLIENT      | #CMD_ISO_CLIENT_SET_LA            | 16                     |\n+\t * | #MRQ_ISO_CLIENT      | #CMD_ISO_CLIENT_GET_MAX_BW        | 8                      |\n+\t * | #MRQ_BWMGR_INT       | #CMD_BWMGR_INT_QUERY_ABI          | 8                      |\n+\t * | #MRQ_BWMGR_INT       | #CMD_BWMGR_INT_CALC_AND_SET       | 16                     |\n+\t * | #MRQ_BWMGR_INT       | #CMD_BWMGR_INT_CAP_SET            | 8                      |\n+\t * | #MRQ_BWMGR_INT       | #CMD_BWMGR_INT_CURR_AVAILABLE_BW  | 8                      |\n+\t * | #MRQ_BWMGR_INT       | #CMD_BWMGR_INT_GET_LAST_REQUEST   | 9                      |\n+\t * @endcond\n \t *\n \t * **crc16**\n \t *\n@@ -220,7 +452,7 @@ struct mrq_request {\n \t * including this header. However the crc16 field is considered to be set to 0 when\n \t * calculating the CRC. Only used when #BPMP_MAIL_CRC_PRESENT is set. If\n \t * #BPMP_MAIL_CRC_PRESENT is set and this field does not match the CRC as\n-\t * calculated by BPMP, -BPMP_EBADMSG will be returned and the request will\n+\t * calculated by BPMP, -#BPMP_EBADMSG will be returned and the request will\n \t * be ignored. See code snippet below on how to calculate the CRC.\n \t *\n \t * @code\n@@ -322,6 +554,9 @@ struct mrq_response {\n #define MRQ_CPU_VHINT\t\t28U\n #define MRQ_ABI_RATCHET\t\t29U\n #define MRQ_EMC_DVFS_LATENCY\t31U\n+//adoc: tag::bpmp_dmce_mrq_shutdown[]\n+#define MRQ_SHUTDOWN\t\t49U\n+//adoc: end::bpmp_dmce_mrq_shutdown[]\n #define MRQ_RINGBUF_CONSOLE\t65U\n #define MRQ_PG\t\t\t66U\n #define MRQ_CPU_NDIV_LIMITS\t67U\n@@ -341,48 +576,31 @@ struct mrq_response {\n #define MRQ_GEARS\t\t82U\n #define MRQ_BWMGR_INT\t\t83U\n #define MRQ_OC_STATUS\t\t84U\n-\n-/** @cond DEPRECATED */\n-#define MRQ_RESERVED_2\t\t2U\n-#define MRQ_RESERVED_3\t\t3U\n-#define MRQ_RESERVED_4\t\t4U\n-#define MRQ_RESERVED_5   \t5U\n-#define MRQ_RESERVED_6\t\t6U\n-#define MRQ_RESERVED_7\t\t7U\n-#define MRQ_RESERVED_8\t\t8U\n-#define MRQ_RESERVED_10\t\t10U\n-#define MRQ_RESERVED_11\t\t11U\n-#define MRQ_RESERVED_12\t\t12U\n-#define MRQ_RESERVED_13\t\t13U\n-#define MRQ_RESERVED_14\t\t14U\n-#define MRQ_RESERVED_15\t\t15U\n-#define MRQ_RESERVED_16\t\t16U\n-#define MRQ_RESERVED_17\t\t17U\n-#define MRQ_RESERVED_18\t\t18U\n-#define MRQ_RESERVED_24\t\t24U\n-#define MRQ_RESERVED_25\t\t25U\n-#define MRQ_RESERVED_26\t\t26U\n-#define MRQ_RESERVED_30\t\t30U\n-#define MRQ_RESERVED_64\t\t64U\n-#define MRQ_RESERVED_74\t\t74U\n-/** @endcond DEPRECATED */\n-\n-/** @} */\n+#define MRQ_C2C\t\t\t85U\n+#define MRQ_THROTTLE\t\t86U\n+#define MRQ_PWRMODEL\t\t87U\n+#define MRQ_PCIE\t\t88U\n+#define MRQ_PWR_CNTRL\t\t89U\n+#define MRQ_CR7\t\t\t90U\n+#define MRQ_SLC\t\t\t91U\n+#define MRQ_TELEMETRY_EX\t92U\n+#define MRQ_HWPM\t\t93U\n+#define MRQ_DVFS\t\t94U\n+#define MRQ_PPP_PROFILE\t\t95U\n \n /**\n- * @ingroup MRQ_Codes\n  * @brief Maximum MRQ code to be sent by CPU software to\n  * BPMP. Subject to change in future\n  */\n-#define MAX_CPU_MRQ_ID\t\t84U\n+#define MAX_CPU_MRQ_ID\t\t95U\n+\n+/** @} */\n \n /**\n  * @addtogroup MRQ_Payloads\n  * @{\n  *   @defgroup Ping Ping\n  *   @defgroup Query_Tag Query Tag\n- *   @defgroup Module Loadable Modules\n- *   @defgroup Trace Trace\n  *   @defgroup Debugfs Debug File System\n  *   @defgroup Reset Reset\n  *   @defgroup I2C I2C\n@@ -390,6 +608,7 @@ struct mrq_response {\n  *   @defgroup ABI_info ABI Info\n  *   @defgroup Powergating Power Gating\n  *   @defgroup Thermal Thermal\n+ *   @defgroup Throttle Throttle\n  *   @defgroup OC_status OC status\n  *   @defgroup Vhint CPU Voltage hint\n  *   @defgroup EMC EMC\n@@ -405,7 +624,22 @@ struct mrq_response {\n  *   @defgroup Telemetry Telemetry\n  *   @defgroup Pwrlimit PWR_LIMIT\n  *   @defgroup Gears Gears\n+ *   @defgroup Shutdown Shutdown\n  *   @defgroup BWMGR_INT Bandwidth Manager Integrated\n+ *   @defgroup C2C C2C\n+ *   @defgroup Pwrmodel Power Model\n+ *   @defgroup Pwrcntrl Power Controllers\n+ * @cond bpmp_t264\n+ * *  @defgroup PCIE PCIE\n+ * *  @defgroup CR7 CR7\n+ * *  @defgroup Slc Slc\n+ * @endcond\n+ * @cond bpmp_tb500\n+ * *  @defgroup Telemetry_ex Telemetry Expanded\n+ * *  @defgroup HWPM Hardware Performance Monitoring\n+ * *  @defgroup DVFS Dynamic Voltage and Frequency Scaling\n+ * *  @defgroup PPP power/performance profiles\n+ * @endcond\n  * @} MRQ_Payloads\n  */\n \n@@ -414,7 +648,6 @@ struct mrq_response {\n  * @def MRQ_PING\n  * @brief A simple ping\n  *\n- * * Platforms: All\n  * * Initiators: Any\n  * * Targets: Any\n  * * Request Payload: @ref mrq_ping_request\n@@ -424,7 +657,6 @@ struct mrq_response {\n  * @def MRQ_THREADED_PING\n  * @brief A deeper ping\n  *\n- * * Platforms: All\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_ping_request\n@@ -441,8 +673,8 @@ struct mrq_response {\n  * @brief Request with #MRQ_PING\n  *\n  * Used by the sender of an #MRQ_PING message to request a pong from\n- * recipient. The response from the recipient is computed based on\n- * #challenge.\n+ * recipient. The response from the recipient is computed based on the\n+ * mrq_ping_request::challenge -value.\n  */\n struct mrq_ping_request {\n /** @brief Arbitrarily chosen value */\n@@ -470,7 +702,7 @@ struct mrq_ping_response {\n  *\n  * @deprecated Use #MRQ_QUERY_FW_TAG instead.\n  *\n- * * Platforms: All\n+ * @details\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_query_tag_request\n@@ -483,7 +715,7 @@ struct mrq_ping_response {\n  * @brief Request with #MRQ_QUERY_TAG\n  *\n  * @deprecated This structure will be removed in future version.\n- * Use MRQ_QUERY_FW_TAG instead.\n+ * Use #MRQ_QUERY_FW_TAG instead.\n  */\n struct mrq_query_tag_request {\n   /** @brief Base address to store the firmware tag */\n@@ -496,7 +728,6 @@ struct mrq_query_tag_request {\n  * @def MRQ_QUERY_FW_TAG\n  * @brief Query BPMP firmware's tag (i.e. unique identifier)\n  *\n- * * Platforms: All\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: N/A\n@@ -510,10 +741,9 @@ struct mrq_query_tag_request {\n  *\n  * Sent in response to #MRQ_QUERY_FW_TAG message. #tag contains the unique\n  * identifier for the version of firmware issuing the reply.\n- *\n  */\n struct mrq_query_fw_tag_response {\n-  /** @brief Array to store tag information */\n+\t/** @brief Array to store tag information */\n \tuint8_t tag[32];\n } BPMP_ABI_PACKED;\n \n@@ -532,9 +762,8 @@ struct mrq_threaded_ping_response {\n  * @def MRQ_DEBUGFS\n  * @brief Interact with BPMP's debugfs file nodes\n  *\n- * @deprecated use MRQ_DEBUG instead.\n+ * @deprecated Use #MRQ_DEBUG instead.\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_debugfs_request\n@@ -626,9 +855,9 @@ struct cmd_debugfs_dumpdir_response {\n \n /**\n  * @ingroup Debugfs\n- * @brief Request with #MRQ_DEBUGFS.\n+ * @brief Request with #MRQ_DEBUG.\n  *\n- * The sender of an MRQ_DEBUGFS message uses #cmd to specify a debugfs\n+ * The sender of an MRQ_DEBUG message uses #cmd to specify a debugfs\n  * command to execute. Legal commands are the values of @ref\n  * mrq_debugfs_commands. Each command requires a specific additional\n  * payload of data.\n@@ -676,16 +905,15 @@ struct mrq_debugfs_response {\n /**\n  * @ingroup MRQ_Codes\n  * @def MRQ_DEBUG\n- * @brief Interact with BPMP's debugfs file nodes. Use message payload\n+ * @brief Interact with BPMP-FW debugfs file nodes. Use message payload\n  * for exchanging data. This is functionally equivalent to\n- * @ref MRQ_DEBUGFS. But the way in which data is exchanged is different.\n- * When software running on CPU tries to read a debugfs file,\n+ * the deprecated MRQ_DEBUGFS but the way in which data is exchanged is\n+ * different. When software running on CPU tries to read a debugfs file,\n  * the file path and read data will be stored in message payload.\n  * Since the message payload size is limited, a debugfs file\n  * transaction might require multiple frames of data exchanged\n  * between BPMP and CPU until the transaction completes.\n  *\n- * * Platforms: T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_debug_request\n@@ -694,17 +922,34 @@ struct mrq_debugfs_response {\n \n /** @ingroup Debugfs */\n enum mrq_debug_commands {\n-\t/** @brief Open required file for read operation */\n+\t/**\n+\t * @brief Open file represented by the path in\n+\t * cmd_debug_fopen_request::name for read operation\n+\t */\n \tCMD_DEBUG_OPEN_RO = 0,\n-\t/** @brief Open required file for write operation */\n+\t/**\n+\t * @brief Open file represented by the path in\n+\t * cmd_debug_fopen_request::name for write operation\n+\t */\n \tCMD_DEBUG_OPEN_WO = 1,\n-\t/** @brief Perform read */\n+\t/**\n+\t * @brief Perform read on a previously opened file handle represented\n+\t *        by the cmd_debug_fread_request::fd -value.\n+\t */\n \tCMD_DEBUG_READ = 2,\n-\t/** @brief Perform write */\n+\t/**\n+\t * @brief Perform write on a previously opened file handle represented\n+\t *        by the cmd_debug_fwrite_request::fd -value.\n+\t */\n \tCMD_DEBUG_WRITE = 3,\n-\t/** @brief Close file */\n+\t/**\n+\t * @brief Close previously opened file handle.\n+\t */\n \tCMD_DEBUG_CLOSE = 4,\n-\t/** @brief Not a command */\n+\t/**\n+\t * @brief Not a command, represents maximum number of supported\n+\t *        sub-commands\n+\t */\n \tCMD_DEBUG_MAX\n };\n \n@@ -727,35 +972,38 @@ enum mrq_debug_commands {\n \n /**\n  * @ingroup Debugfs\n- * @brief Parameters for CMD_DEBUG_OPEN command\n+ * @brief Parameters for #CMD_DEBUG_OPEN_RO and #CMD_DEBUG_OPEN_WO -commands\n  */\n struct cmd_debug_fopen_request {\n-\t/** @brief File name - Null-terminated string with maximum\n-\t * length @ref DEBUG_FNAME_MAX_SZ\n+\t/**\n+\t * @brief File name - Null-terminated string with maximum\n+\t *        length including the terminator defined by the\n+\t *        #DEBUG_FNAME_MAX_SZ -preprocessor constant.\n \t */\n \tchar name[DEBUG_FNAME_MAX_SZ];\n } BPMP_ABI_PACKED;\n \n /**\n  * @ingroup Debugfs\n- * @brief Response data for CMD_DEBUG_OPEN_RO/WO command\n+ * @brief Response data for #CMD_DEBUG_OPEN_RO and #CMD_DEBUG_OPEN_WO commands\n  */\n struct cmd_debug_fopen_response {\n \t/** @brief Identifier for file access */\n \tuint32_t fd;\n \t/** @brief Data length. File data size for READ command.\n-\t * Maximum allowed length for WRITE command\n+\t *         Maximum allowed length for WRITE command\n \t */\n \tuint32_t datalen;\n } BPMP_ABI_PACKED;\n \n /**\n  * @ingroup Debugfs\n- * @brief Parameters for CMD_DEBUG_READ command\n+ * @brief Parameters for #CMD_DEBUG_READ command\n  */\n struct cmd_debug_fread_request {\n-\t/** @brief File access identifier received in response\n-\t * to CMD_DEBUG_OPEN_RO request\n+\t/**\n+\t * @brief File access identifier received in response\n+\t *        to #CMD_DEBUG_OPEN_RO request\n \t */\n \tuint32_t fd;\n } BPMP_ABI_PACKED;\n@@ -770,7 +1018,7 @@ struct cmd_debug_fread_request {\n \n /**\n  * @ingroup Debugfs\n- * @brief Response data for CMD_DEBUG_READ command\n+ * @brief Response data for #CMD_DEBUG_READ command\n  */\n struct cmd_debug_fread_response {\n \t/** @brief Size of data provided in this response in bytes */\n@@ -789,11 +1037,11 @@ struct cmd_debug_fread_response {\n \n /**\n  * @ingroup Debugfs\n- * @brief Parameters for CMD_DEBUG_WRITE command\n+ * @brief Parameters for #CMD_DEBUG_WRITE command\n  */\n struct cmd_debug_fwrite_request {\n \t/** @brief File access identifier received in response\n-\t * to CMD_DEBUG_OPEN_RO request\n+\t *         to prior #CMD_DEBUG_OPEN_RO -request\n \t */\n \tuint32_t fd;\n \t/** @brief Size of write data in bytes */\n@@ -804,11 +1052,12 @@ struct cmd_debug_fwrite_request {\n \n /**\n  * @ingroup Debugfs\n- * @brief Parameters for CMD_DEBUG_CLOSE command\n+ * @brief Parameters for #CMD_DEBUG_CLOSE command\n  */\n struct cmd_debug_fclose_request {\n-\t/** @brief File access identifier received in response\n-\t * to CMD_DEBUG_OPEN_RO request\n+\t/**\n+\t * @brief File access identifier received in prior response\n+\t *        to #CMD_DEBUG_OPEN_RO or #CMD_DEBUG_OPEN_WO -request.\n \t */\n \tuint32_t fd;\n } BPMP_ABI_PACKED;\n@@ -817,30 +1066,34 @@ struct cmd_debug_fclose_request {\n  * @ingroup Debugfs\n  * @brief Request with #MRQ_DEBUG.\n  *\n- * The sender of an MRQ_DEBUG message uses #cmd to specify a debugfs\n- * command to execute. Legal commands are the values of @ref\n- * mrq_debug_commands. Each command requires a specific additional\n- * payload of data.\n+ * The sender of an #MRQ_DEBUG message uses mrq_debug_request::cmd to specify\n+ * which debugfs sub-command to execute. Legal sub-commands are the values\n+ * specified in the @ref mrq_debug_commands -enumeration. Each sub-command\n+ * requires a specific additional payload of data according to the following\n+ * table:\n  *\n- * |command            |payload|\n- * |-------------------|-------|\n- * |CMD_DEBUG_OPEN_RO  |fop    |\n- * |CMD_DEBUG_OPEN_WO  |fop    |\n- * |CMD_DEBUG_READ     |frd    |\n- * |CMD_DEBUG_WRITE    |fwr    |\n- * |CMD_DEBUG_CLOSE    |fcl    |\n+ * |Sub-command         |Payload structure          |\n+ * |--------------------|---------------------------|\n+ * |#CMD_DEBUG_OPEN_RO  |cmd_debug_fopen_request    |\n+ * |#CMD_DEBUG_OPEN_WO  |cmd_debug_fopen_request    |\n+ * |#CMD_DEBUG_READ     |cmd_debug_fread_request    |\n+ * |#CMD_DEBUG_WRITE    |cmd_debug_fwrite_request   |\n+ * |#CMD_DEBUG_CLOSE    |cmd_debug_fclose_request   |\n  */\n struct mrq_debug_request {\n-\t/** @brief Sub-command (@ref mrq_debug_commands) */\n+\t/** @brief Sub-command identifier from @ref mrq_debug_commands */\n \tuint32_t cmd;\n \tunion {\n-\t\t/** @brief Request payload for CMD_DEBUG_OPEN_RO/WO command */\n+\t\t/**\n+\t\t * @brief Request payload for #CMD_DEBUG_OPEN_RO and\n+\t\t *        #CMD_DEBUG_OPEN_WO sub-commands\n+\t\t */\n \t\tstruct cmd_debug_fopen_request fop;\n-\t\t/** @brief Request payload for CMD_DEBUG_READ command */\n+\t\t/** @brief Request payload for #CMD_DEBUG_READ sub-command */\n \t\tstruct cmd_debug_fread_request frd;\n-\t\t/** @brief Request payload for CMD_DEBUG_WRITE command */\n+\t\t/** @brief Request payload for #CMD_DEBUG_WRITE sub-command */\n \t\tstruct cmd_debug_fwrite_request fwr;\n-\t\t/** @brief Request payload for CMD_DEBUG_CLOSE command */\n+\t\t/** @brief Request payload for #CMD_DEBUG_CLOSE sub-command */\n \t\tstruct cmd_debug_fclose_request fcl;\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n@@ -850,9 +1103,12 @@ struct mrq_debug_request {\n  */\n struct mrq_debug_response {\n \tunion {\n-\t\t/** @brief Response data for CMD_DEBUG_OPEN_RO/WO command */\n+\t\t/**\n+\t\t * @brief Response data for the #CMD_DEBUG_OPEN_RO and\n+\t\t *        #CMD_DEBUG_OPEN_WO sub-commands\n+\t\t */\n \t\tstruct cmd_debug_fopen_response fop;\n-\t\t/** @brief Response data for CMD_DEBUG_READ command */\n+\t\t/** @brief Response data for the #CMD_DEBUG_READ sub-command */\n \t\tstruct cmd_debug_fread_response frd;\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n@@ -862,7 +1118,6 @@ struct mrq_debug_response {\n  * @def MRQ_RESET\n  * @brief Reset an IP block\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_reset_request\n@@ -872,39 +1127,46 @@ struct mrq_debug_response {\n  * @{\n  */\n \n+/**\n+ * @brief Sub-command identifiers for #MRQ_RESET\n+ */\n enum mrq_reset_commands {\n \t/**\n \t * @brief Assert module reset\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EINVAL if mrq_reset_request::reset_id is invalid @n\n-\t * -#BPMP_EACCES if mrq master is not an owner of target domain reset @n\n-\t * -#BPMP_ENOTSUP if target domain h/w state does not allow reset\n+\t * mrq_response::err is\n+\t * * 0 if the operation was successful\n+\t * * -#BPMP_EINVAL if mrq_reset_request::reset_id is invalid\n+\t * * -#BPMP_EACCES if mrq master is not an owner of target domain reset\n+\t * * -#BPMP_ENOTSUP if target domain h/w state does not allow reset\n \t */\n \tCMD_RESET_ASSERT = 1,\n \t/**\n \t * @brief Deassert module reset\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EINVAL if mrq_reset_request::reset_id is invalid @n\n-\t * -#BPMP_EACCES if mrq master is not an owner of target domain reset @n\n-\t * -#BPMP_ENOTSUP if target domain h/w state does not allow reset\n+\t * mrq_response::err is\n+\t * * 0 if the operation was successful\n+\t * * -#BPMP_EINVAL if mrq_reset_request::reset_id is invalid\n+\t * * -#BPMP_EACCES if mrq master is not an owner of target domain reset\n+\t * * -#BPMP_ENOTSUP if target domain h/w state does not allow reset\n \t */\n \tCMD_RESET_DEASSERT = 2,\n \t/**\n \t * @brief Assert and deassert the module reset\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EINVAL if mrq_reset_request::reset_id is invalid @n\n-\t * -#BPMP_EACCES if mrq master is not an owner of target domain reset @n\n-\t * -#BPMP_ENOTSUP if target domain h/w state does not allow reset\n+\t * mrq_response::err is\n+\t * * 0 if the operation was successful\n+\t * * -#BPMP_EINVAL if mrq_reset_request::reset_id is invalid\n+\t * * -#BPMP_EACCES if mrq master is not an owner of target domain reset\n+\t * * -#BPMP_ENOTSUP if target domain h/w state does not allow reset\n \t */\n \tCMD_RESET_MODULE = 3,\n \t/**\n \t * @brief Get the highest reset ID\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_ENODEV if no reset domains are supported (number of IDs is 0)\n+\t * mrq_response::err is\n+\t * * 0 if the operation was successful\n+\t * * -#BPMP_ENODEV if no reset domains are supported (number of IDs is 0)\n \t */\n \tCMD_RESET_GET_MAX_ID = 4,\n \n@@ -913,15 +1175,15 @@ enum mrq_reset_commands {\n };\n \n /**\n- * @brief Request with MRQ_RESET\n+ * @brief Request with #MRQ_RESET\n  *\n  * Used by the sender of an #MRQ_RESET message to request BPMP to\n- * assert or or deassert a given reset line.\n+ * assert or deassert a given reset line.\n  */\n struct mrq_reset_request {\n-\t/** @brief Reset action to perform (@ref mrq_reset_commands) */\n+\t/** @brief Reset action to perform, from @ref mrq_reset_commands */\n \tuint32_t cmd;\n-\t/** @brief Id of the reset to affected */\n+\t/** @brief ID of the reset to affected, from @ref bpmp_reset_ids */\n \tuint32_t reset_id;\n } BPMP_ABI_PACKED;\n \n@@ -940,7 +1202,7 @@ struct cmd_reset_get_max_id_response {\n  *\n  * Each sub-command supported by @ref mrq_reset_request may return\n  * sub-command-specific data. Some do and some do not as indicated\n- * in the following table\n+ * in the following table:\n  *\n  * | sub-command          | payload          |\n  * |----------------------|------------------|\n@@ -962,7 +1224,6 @@ struct mrq_reset_response {\n  * @def MRQ_I2C\n  * @brief Issue an i2c transaction\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_i2c_request\n@@ -971,19 +1232,60 @@ struct mrq_reset_response {\n  * @addtogroup I2C\n  * @{\n  */\n+\n+/**\n+ * @brief Size of the cmd_i2c_xfer_request::data_buf -member array in bytes.\n+ */\n #define TEGRA_I2C_IPC_MAX_IN_BUF_SIZE\t(MSG_DATA_MIN_SZ - 12U)\n+\n+/**\n+ * @brief Size of the cmd_i2c_xfer_response::data_buf -member array in bytes.\n+ */\n #define TEGRA_I2C_IPC_MAX_OUT_BUF_SIZE\t(MSG_DATA_MIN_SZ - 4U)\n \n+/**\n+ * @defgroup seriali2c_flags I2C flags\n+ *\n+ * @brief I2C transaction modifier flags for each transaction segment\n+ * in #MRQ_I2C subcommand CMD_I2C_XFER\n+ */\n+\n+/**\n+ * @addtogroup seriali2c_flags\n+ * @{\n+ */\n+\n+/** @brief when set, use 10-bit I2C slave address */\n #define SERIALI2C_TEN           0x0010U\n+/** @brief when set, perform a Read transaction */\n #define SERIALI2C_RD            0x0001U\n-#define SERIALI2C_STOP          0x8000U\n+/**\n+ * @brief when set, no repeated START is issued between the segments\n+ * of transaction. This flag is ignored for the first segment as any\n+ * transaction always starts with a START condition\n+ */\n #define SERIALI2C_NOSTART       0x4000U\n-#define SERIALI2C_REV_DIR_ADDR  0x2000U\n+/**\n+ * @brief when set, a no-ACK from slave device is ignored and treated\n+ * always as success\n+ */\n #define SERIALI2C_IGNORE_NAK    0x1000U\n+/** @} seriali2c_flags */\n+\n+/** brief Unused flag. Retained for backwards compatibility. */\n+#define SERIALI2C_STOP          0x8000U\n+/** brief Unused flag. Retained for backwards compatibility. */\n+#define SERIALI2C_REV_DIR_ADDR  0x2000U\n+/** brief Unused flag. Retained for backwards compatibility. */\n #define SERIALI2C_NO_RD_ACK     0x0800U\n+/** brief Unused flag. Retained for backwards compatibility. */\n #define SERIALI2C_RECV_LEN      0x0400U\n \n-enum {\n+/**\n+ * @brief Supported I2C sub-command identifiers\n+ */\n+enum mrq_i2c_commands {\n+\t/** @brief Perform an I2C transaction */\n \tCMD_I2C_XFER = 1\n };\n \n@@ -1005,7 +1307,7 @@ enum {\n struct serial_i2c_request {\n \t/** @brief I2C slave address */\n \tuint16_t addr;\n-\t/** @brief Bitmask of SERIALI2C_ flags */\n+\t/** @brief Bitmask of @ref seriali2c_flags */\n \tuint16_t flags;\n \t/** @brief Length of I2C transaction in bytes */\n \tuint16_t len;\n@@ -1020,13 +1322,13 @@ struct cmd_i2c_xfer_request {\n \t/**\n \t * @brief Tegra PWR_I2C bus identifier\n \t *\n-\t * @cond (bpmp_t234 || bpmp_t238 || bpmp_t194)\n+\t * @cond (bpmp_t186 || bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_t264)\n \t * Must be set to 5.\n-\t * @endcond (bpmp_t234 || bpmp_t238 || bpmp_t194)\n-\t * @cond bpmp_th500\n-\t * Must be set to 1.\n-\t * @endcond bpmp_th500\n+\t * @endcond\n \t *\n+\t * @cond (bpmp_th500)\n+\t * Must be set to 1.\n+\t * @endcond\n \t */\n \tuint32_t bus_id;\n \n@@ -1047,7 +1349,7 @@ struct cmd_i2c_xfer_request {\n struct cmd_i2c_xfer_response {\n \t/** @brief Count of valid bytes in #data_buf*/\n \tuint32_t data_size;\n-\t/** @brief I2c read data */\n+\t/** @brief I2C read data */\n \tuint8_t data_buf[TEGRA_I2C_IPC_MAX_OUT_BUF_SIZE];\n } BPMP_ABI_PACKED;\n \n@@ -1064,16 +1366,19 @@ struct mrq_i2c_request {\n /**\n  * @brief Response to #MRQ_I2C\n  *\n- * mrq_response:err is\n- *  0: Success\n- *  -#BPMP_EBADCMD: if mrq_i2c_request::cmd is other than 1\n- *  -#BPMP_EINVAL: if cmd_i2c_xfer_request does not contain correctly formatted request\n- *  -#BPMP_ENODEV: if cmd_i2c_xfer_request::bus_id is not supported by BPMP\n- *  -#BPMP_EACCES: if i2c transaction is not allowed due to firewall rules\n- *  -#BPMP_ETIMEDOUT: if i2c transaction times out\n- *  -#BPMP_ENXIO: if i2c slave device does not reply with ACK to the transaction\n- *  -#BPMP_EAGAIN: if ARB_LOST condition is detected by the i2c controller\n- *  -#BPMP_EIO: any other i2c controller error code than NO_ACK or ARB_LOST\n+ * mrq_response::err value for this response is defined as:\n+ *\n+ * | Value              | Description                                                         |\n+ * |--------------------|---------------------------------------------------------------------|\n+ * | 0                  | Success                                                             |\n+ * | -#BPMP_EBADCMD     | mrq_i2c_request::cmd is other than 1                                |\n+ * | -#BPMP_EINVAL      | cmd_i2c_xfer_request does not contain correctly formatted request   |\n+ * | -#BPMP_ENODEV      | cmd_i2c_xfer_request::bus_id is not supported by BPMP               |\n+ * | -#BPMP_EACCES      | I2C transaction is not allowed due to firewall rules                |\n+ * | -#BPMP_ETIMEDOUT   | I2C transaction times out                                           |\n+ * | -#BPMP_ENXIO       | I2C slave device does not reply with ACK to the transaction         |\n+ * | -#BPMP_EAGAIN      | ARB_LOST condition is detected by the I2C controller                |\n+ * | -#BPMP_EIO         | Any other I2C controller error code than NO_ACK or ARB_LOST         |\n  */\n struct mrq_i2c_response {\n \tstruct cmd_i2c_xfer_response xfer;\n@@ -1086,7 +1391,6 @@ struct mrq_i2c_response {\n  * @def MRQ_CLK\n  * @brief Perform a clock operation\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_clk_request\n@@ -1095,205 +1399,354 @@ struct mrq_i2c_response {\n  * @addtogroup Clocks\n  * @{\n  */\n-enum {\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_CLK\n+ */\n+enum mrq_clk_commands {\n+\t/** Get clock rate */\n \tCMD_CLK_GET_RATE = 1,\n+\n+\t/** Set clock rate */\n \tCMD_CLK_SET_RATE = 2,\n+\n+\t/** Get attainable clock rate closer to a given rate */\n \tCMD_CLK_ROUND_RATE = 3,\n+\n+\t/** Get parent clock identifier for a given clock */\n \tCMD_CLK_GET_PARENT = 4,\n+\n+\t/** Change clock parent */\n \tCMD_CLK_SET_PARENT = 5,\n+\n+\t/** Get clock enable status */\n \tCMD_CLK_IS_ENABLED = 6,\n+\n+\t/** Enable a clock */\n \tCMD_CLK_ENABLE = 7,\n+\n+\t/** Disable a clock */\n \tCMD_CLK_DISABLE = 8,\n-/** @cond DEPRECATED */\n-\tCMD_CLK_PROPERTIES = 9,\n-\tCMD_CLK_POSSIBLE_PARENTS = 10,\n-\tCMD_CLK_NUM_POSSIBLE_PARENTS = 11,\n-\tCMD_CLK_GET_POSSIBLE_PARENT = 12,\n-\tCMD_CLK_RESET_REFCOUNTS = 13,\n-/** @endcond DEPRECATED */\n+\n+\t/** Get all information about a clock */\n \tCMD_CLK_GET_ALL_INFO = 14,\n+\n+\t/** Get largest supported clock identifier */\n \tCMD_CLK_GET_MAX_CLK_ID = 15,\n+\n+\t/** Get clock maximum rate at VMIN */\n \tCMD_CLK_GET_FMAX_AT_VMIN = 16,\n+\n+\t/** Largest supported #MRQ_CLK sub-command identifier + 1 */\n \tCMD_CLK_MAX,\n };\n \n+/**\n+ * Flag bit set in cmd_clk_get_all_info_response::flags -field when clock\n+ * supports changing of the parent clock at runtime.\n+ */\n #define BPMP_CLK_HAS_MUX\t(1U << 0U)\n+\n+/**\n+ * Flag bit set in cmd_clk_get_all_info_response::flags -field when clock\n+ * supports changing the clock rate at runtime.\n+ */\n #define BPMP_CLK_HAS_SET_RATE\t(1U << 1U)\n+\n+/**\n+ * Flag bit set in cmd_clk_get_all_info_response::flags -field when clock is a\n+ * root clock without visible parents.\n+ */\n #define BPMP_CLK_IS_ROOT\t(1U << 2U)\n+\n #define BPMP_CLK_IS_VAR_ROOT\t(1U << 3U)\n+\n /**\n  * @brief Protection against rate and parent changes\n  *\n- * #MRQ_CLK command #CMD_CLK_SET_RATE or #MRQ_CLK command #CMD_CLK_SET_PARENT will return\n- * -#BPMP_EACCES.\n+ * #MRQ_CLK command #CMD_CLK_SET_RATE or #MRQ_CLK command #CMD_CLK_SET_PARENT\n+ * will return -#BPMP_EACCES.\n  */\n #define BPMP_CLK_RATE_PARENT_CHANGE_DENIED (1U << 30)\n \n /**\n  * @brief Protection against state changes\n  *\n- * #MRQ_CLK command #CMD_CLK_ENABLE or #MRQ_CLK command #CMD_CLK_DISABLE will return\n- * -#BPMP_EACCES.\n+ * #MRQ_CLK command #CMD_CLK_ENABLE or #MRQ_CLK command #CMD_CLK_DISABLE\n+ * will return -#BPMP_EACCES.\n  */\n #define BPMP_CLK_STATE_CHANGE_DENIED (1U << 31)\n \n+/**\n+ * Size of the cmd_clk_get_all_info_response::name -array in number\n+ * of elements.\n+ */\n #define MRQ_CLK_NAME_MAXLEN\t40U\n+\n+/**\n+ * @brief Maximum number of elements in parent_id arrays of clock info responses.\n+ */\n #define MRQ_CLK_MAX_PARENTS\t16U\n \n-/** @private */\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_GET_RATE\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_get_rate_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_GET_RATE\n+ */\n struct cmd_clk_get_rate_response {\n+\t/**\n+\t * Current rate of the given clock in Hz if mrq_response::err is 0 to\n+\t * indicate successful #CMD_CLK_GET_RATE -request.\n+\t */\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_SET_RATE\n+ */\n struct cmd_clk_set_rate_request {\n+\t/** Unused / reserved field. */\n \tint32_t unused;\n+\n+\t/** Requested rate of the clock in Hz. */\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_SET_RATE\n+ */\n struct cmd_clk_set_rate_response {\n+\t/**\n+\t * If request was successful (mrq_response::err is 0), set to the new\n+\t * rate of the given clock in Hz.\n+\t */\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_ROUND_RATE\n+ */\n struct cmd_clk_round_rate_request {\n+\t/** Unused / reserved field. */\n \tint32_t unused;\n+\n+\t/** Target rate for the clock */\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_ROUND_RATE\n+ */\n struct cmd_clk_round_rate_response {\n+\t/**\n+\t * The attainable rate if request was successful\n+\t * (mrq_response::err is 0).\n+\t */\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_GET_PARENT\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_get_parent_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_GET_PARENT\n+ */\n struct cmd_clk_get_parent_response {\n+\t/**\n+\t * The clock identifier of the parent clock if request was successful\n+\t * (mrq_response::err is 0).\n+\t */\n \tuint32_t parent_id;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_SET_PARENT\n+ */\n struct cmd_clk_set_parent_request {\n+\t/**\n+\t * The clock identifier of the new parent clock.\n+\t */\n \tuint32_t parent_id;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_SET_PARENT\n+ */\n struct cmd_clk_set_parent_response {\n+\t/**\n+\t * The clock identifier of the new parent clock if request was\n+\t * successful (mrq_response::err is 0).\n+\t */\n \tuint32_t parent_id;\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Request payload for #CMD_CLK_IS_ENABLED -sub-command\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_is_enabled_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response data to #MRQ_CLK sub-command CMD_CLK_IS_ENABLED\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_IS_ENABLED\n  */\n struct cmd_clk_is_enabled_response {\n \t/**\n \t * @brief The state of the clock that has been successfully\n-\t * requested with CMD_CLK_ENABLE or CMD_CLK_DISABLE by the\n+\t * requested with #CMD_CLK_ENABLE or #CMD_CLK_DISABLE by the\n \t * master invoking the command earlier.\n \t *\n \t * The state may not reflect the physical state of the clock\n \t * if there are some other masters requesting it to be\n-\t * enabled.\n+\t * enabled. Valid values:\n \t *\n-\t * Value 0 is disabled, all other values indicate enabled.\n+\t * * Value 0: The clock is disabled,\n+\t * * Value 1: The clock is enabled.\n \t */\n \tint32_t state;\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_ENABLE\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_enable_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_ENABLE\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_enable_response {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_DISABLE\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_disable_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_DISABLE\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_disable_response {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n-/** @cond DEPRECATED */\n-/** @private */\n-struct cmd_clk_properties_request {\n-\tBPMP_ABI_EMPTY\n-} BPMP_ABI_PACKED;\n-\n-/** @todo flags need to be spelled out here */\n-struct cmd_clk_properties_response {\n-\tuint32_t flags;\n-} BPMP_ABI_PACKED;\n-\n-/** @private */\n-struct cmd_clk_possible_parents_request {\n-\tBPMP_ABI_EMPTY\n-} BPMP_ABI_PACKED;\n-\n-struct cmd_clk_possible_parents_response {\n-\tuint8_t num_parents;\n-\tuint8_t reserved[3];\n-\tuint32_t parent_id[MRQ_CLK_MAX_PARENTS];\n-} BPMP_ABI_PACKED;\n-\n-/** @private */\n-struct cmd_clk_num_possible_parents_request {\n-\tBPMP_ABI_EMPTY\n-} BPMP_ABI_PACKED;\n-\n-struct cmd_clk_num_possible_parents_response {\n-\tuint8_t num_parents;\n-} BPMP_ABI_PACKED;\n-\n-struct cmd_clk_get_possible_parent_request {\n-\tuint8_t parent_idx;\n-} BPMP_ABI_PACKED;\n-\n-struct cmd_clk_get_possible_parent_response {\n-\tuint32_t parent_id;\n-} BPMP_ABI_PACKED;\n-/** @endcond DEPRECATED */\n-\n-/** @private */\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_GET_ALL_INFO\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_get_all_info_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n+\n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_GET_ALL_INFO\n+ *\n+ * The values in the response are only set and valid if request status in\n+ * mrq_response::err is 0.\n+ */\n struct cmd_clk_get_all_info_response {\n+\t/**\n+\t * State / informational flags for the clock:\n+\t *\n+\t * | Flag bit               | Description                              |\n+\t * |------------------------|------------------------------------------|\n+\t * | #BPMP_CLK_IS_ROOT      | Clock is a root clock.                   |\n+\t * | #BPMP_CLK_HAS_MUX      | Clock supports changing of parent clock. |\n+\t * | #BPMP_CLK_HAS_SET_RATE | Clock supports changing clock rate.      |\n+\t */\n \tuint32_t flags;\n+\n+\t/**\n+\t * Current parent clock identifier.\n+\t */\n \tuint32_t parent;\n+\n+\t/**\n+\t * Array of possible parent clock identifiers.\n+\t */\n \tuint32_t parents[MRQ_CLK_MAX_PARENTS];\n+\n+\t/**\n+\t * Number of identifiers in the #parents -array.\n+\t */\n \tuint8_t num_parents;\n+\n+\t/**\n+\t * Friendly name of the clock, truncated to fit the array\n+\t * and null-terminated.\n+\t */\n \tuint8_t name[MRQ_CLK_NAME_MAXLEN];\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_GET_MAX_CLK_ID\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_get_max_clk_id_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_GET_MAX_CLK_ID\n+ */\n struct cmd_clk_get_max_clk_id_response {\n+\t/** @brief Largest supported clock identifier. */\n \tuint32_t max_id;\n } BPMP_ABI_PACKED;\n \n-/** @private */\n+/**\n+ * @brief Request payload for #MRQ_CLK sub-command #CMD_CLK_GET_FMAX_AT_VMIN\n+ *\n+ * This structure is an empty placeholder for future expansion of this\n+ * sub-command.\n+ */\n struct cmd_clk_get_fmax_at_vmin_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_CLK sub-command #CMD_CLK_GET_FMAX_AT_VMIN\n+ */\n struct cmd_clk_get_fmax_at_vmin_response {\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n@@ -1308,38 +1761,26 @@ struct cmd_clk_get_fmax_at_vmin_response {\n  * require no additional data. Others have a sub-command specific\n  * payload\n  *\n- * |sub-command                 |payload                |\n- * |----------------------------|-----------------------|\n- * |CMD_CLK_GET_RATE            |-                      |\n- * |CMD_CLK_SET_RATE            |clk_set_rate           |\n- * |CMD_CLK_ROUND_RATE          |clk_round_rate         |\n- * |CMD_CLK_GET_PARENT          |-                      |\n- * |CMD_CLK_SET_PARENT          |clk_set_parent         |\n- * |CMD_CLK_IS_ENABLED          |-                      |\n- * |CMD_CLK_ENABLE              |-                      |\n- * |CMD_CLK_DISABLE             |-                      |\n- * |CMD_CLK_GET_ALL_INFO        |-                      |\n- * |CMD_CLK_GET_MAX_CLK_ID      |-                      |\n- * |CMD_CLK_GET_FMAX_AT_VMIN    |-\n- * |\n- *\n+ * |Sub-command                 |Payload                      |\n+ * |----------------------------|-----------------------------|\n+ * |#CMD_CLK_GET_RATE           |-                            |\n+ * |#CMD_CLK_SET_RATE           |#cmd_clk_set_rate_request    |\n+ * |#CMD_CLK_ROUND_RATE         |#cmd_clk_round_rate_request  |\n+ * |#CMD_CLK_GET_PARENT         |-                            |\n+ * |#CMD_CLK_SET_PARENT         |#cmd_clk_set_parent_request  |\n+ * |#CMD_CLK_IS_ENABLED         |-                            |\n+ * |#CMD_CLK_ENABLE             |-                            |\n+ * |#CMD_CLK_DISABLE            |-                            |\n+ * |#CMD_CLK_GET_ALL_INFO       |-                            |\n+ * |#CMD_CLK_GET_MAX_CLK_ID     |-                            |\n+ * |#CMD_CLK_GET_FMAX_AT_VMIN   |-                            |\n  */\n \n-/** @cond DEPRECATED\n- *\n- * Older versions of firmware also supported following sub-commands:\n- * |CMD_CLK_PROPERTIES          |-                      |\n- * |CMD_CLK_POSSIBLE_PARENTS    |-                      |\n- * |CMD_CLK_NUM_POSSIBLE_PARENTS|-                      |\n- * |CMD_CLK_GET_POSSIBLE_PARENT |clk_get_possible_parent|\n- * |CMD_CLK_RESET_REFCOUNTS     |-                      |\n- *\n- * @endcond DEPRECATED */\n-\n struct mrq_clk_request {\n \t/** @brief Sub-command and clock id concatenated to 32-bit word.\n-\t * - bits[31..24] is the sub-cmd.\n-\t * - bits[23..0] is the clock id\n+\t *\n+\t * - bits[31..24] is the sub-command ID from @ref mrq_clk_commands.\n+\t * - bits[23..0] is the clock identifier from @ref bpmp_clock_ids.\n \t */\n \tuint32_t cmd_and_id;\n \n@@ -1357,15 +1798,6 @@ struct mrq_clk_request {\n \t\tstruct cmd_clk_disable_request clk_disable;\n \t\t/** @private */\n \t\tstruct cmd_clk_is_enabled_request clk_is_enabled;\n-\t\t/** @cond DEPRECATED */\n-\t\t/** @private */\n-\t\tstruct cmd_clk_properties_request clk_properties;\n-\t\t/** @private */\n-\t\tstruct cmd_clk_possible_parents_request clk_possible_parents;\n-\t\t/** @private */\n-\t\tstruct cmd_clk_num_possible_parents_request clk_num_possible_parents;\n-\t\tstruct cmd_clk_get_possible_parent_request clk_get_possible_parent;\n-\t\t/** @endcond DEPRECATED */\n \t\t/** @private */\n \t\tstruct cmd_clk_get_all_info_request clk_get_all_info;\n \t\t/** @private */\n@@ -1381,35 +1813,24 @@ struct mrq_clk_request {\n  *\n  * Each sub-command supported by @ref mrq_clk_request may return\n  * sub-command-specific data. Some do and some do not as indicated in\n- * the following table\n+ * the following table:\n  *\n- * |sub-command                 |payload                 |\n- * |----------------------------|------------------------|\n- * |CMD_CLK_GET_RATE            |clk_get_rate            |\n- * |CMD_CLK_SET_RATE            |clk_set_rate            |\n- * |CMD_CLK_ROUND_RATE          |clk_round_rate          |\n- * |CMD_CLK_GET_PARENT          |clk_get_parent          |\n- * |CMD_CLK_SET_PARENT          |clk_set_parent          |\n- * |CMD_CLK_IS_ENABLED          |clk_is_enabled          |\n- * |CMD_CLK_ENABLE              |-                       |\n- * |CMD_CLK_DISABLE             |-                       |\n- * |CMD_CLK_GET_ALL_INFO        |clk_get_all_info        |\n- * |CMD_CLK_GET_MAX_CLK_ID      |clk_get_max_id          |\n- * |CMD_CLK_GET_FMAX_AT_VMIN    |clk_get_fmax_at_vmin    |\n+ * |Sub-command                 |Payload                            |\n+ * |----------------------------|-----------------------------------|\n+ * |#CMD_CLK_GET_RATE           |#cmd_clk_get_rate_response         |\n+ * |#CMD_CLK_SET_RATE           |#cmd_clk_set_rate_response         |\n+ * |#CMD_CLK_ROUND_RATE         |#cmd_clk_round_rate_response       |\n+ * |#CMD_CLK_GET_PARENT         |#cmd_clk_get_parent_response       |\n+ * |#CMD_CLK_SET_PARENT         |#cmd_clk_set_parent_response       |\n+ * |#CMD_CLK_IS_ENABLED         |#cmd_clk_is_enabled_response       |\n+ * |#CMD_CLK_ENABLE             |-                                  |\n+ * |#CMD_CLK_DISABLE            |-                                  |\n+ * |#CMD_CLK_GET_ALL_INFO       |#cmd_clk_get_all_info_response     |\n+ * |#CMD_CLK_GET_MAX_CLK_ID     |#cmd_clk_get_max_clk_id_response   |\n+ * |#CMD_CLK_GET_FMAX_AT_VMIN   |#cmd_clk_get_fmax_at_vmin_response |\n  *\n  */\n \n-/** @cond DEPRECATED\n- *\n- * Older versions of firmware also supported following sub-commands:\n- * |CMD_CLK_PROPERTIES          |clk_properties          |\n- * |CMD_CLK_POSSIBLE_PARENTS    |clk_possible_parents    |\n- * |CMD_CLK_NUM_POSSIBLE_PARENTS|clk_num_possible_parents|\n- * |CMD_CLK_GET_POSSIBLE_PARENT |clk_get_possible_parents|\n- * |CMD_CLK_RESET_REFCOUNTS     |-                       |\n- *\n- * @endcond DEPRECATED */\n-\n struct mrq_clk_response {\n \tunion {\n \t\tstruct cmd_clk_get_rate_response clk_get_rate;\n@@ -1422,12 +1843,6 @@ struct mrq_clk_response {\n \t\t/** @private */\n \t\tstruct cmd_clk_disable_response clk_disable;\n \t\tstruct cmd_clk_is_enabled_response clk_is_enabled;\n-\t\t/** @cond DEPRECATED */\n-\t\tstruct cmd_clk_properties_response clk_properties;\n-\t\tstruct cmd_clk_possible_parents_response clk_possible_parents;\n-\t\tstruct cmd_clk_num_possible_parents_response clk_num_possible_parents;\n-\t\tstruct cmd_clk_get_possible_parent_response clk_get_possible_parent;\n-\t\t/** @endcond DEPRECATED */\n \t\tstruct cmd_clk_get_all_info_response clk_get_all_info;\n \t\tstruct cmd_clk_get_max_clk_id_response clk_get_max_clk_id;\n \t\tstruct cmd_clk_get_fmax_at_vmin_response clk_get_fmax_at_vmin;\n@@ -1441,7 +1856,6 @@ struct mrq_clk_response {\n  * @def MRQ_QUERY_ABI\n  * @brief Check if an MRQ is implemented\n  *\n- * * Platforms: All\n  * * Initiators: Any\n  * * Targets: Any except DMCE\n  * * Request Payload: @ref mrq_query_abi_request\n@@ -1450,7 +1864,7 @@ struct mrq_clk_response {\n \n /**\n  * @ingroup ABI_info\n- * @brief Request with MRQ_QUERY_ABI\n+ * @brief Request with #MRQ_QUERY_ABI\n  *\n  * Used by #MRQ_QUERY_ABI call to check if MRQ code #mrq is supported\n  * by the recipient.\n@@ -1468,7 +1882,11 @@ struct mrq_query_abi_request {\n  * successful, not that the MRQ itself is supported!\n  */\n struct mrq_query_abi_response {\n-\t/** @brief 0 if queried MRQ is supported. Else, -#BPMP_ENODEV */\n+\t/**\n+\t * This response field is set to:\n+\t * - 0 if queried MRQ is supported, or\n+\t * - -#BPMP_ENODEV if queried MRQ is not supported\n+\t */\n \tint32_t status;\n } BPMP_ABI_PACKED;\n \n@@ -1476,9 +1894,7 @@ struct mrq_query_abi_response {\n  *\n  * @ingroup MRQ_Codes\n  * @def MRQ_PG\n- * @brief Control power-gating state of a partition. In contrast to\n- * MRQ_PG_UPDATE_STATE, operations that change the power partition\n- * state are NOT reference counted\n+ * @brief Control power-gating state of a partition.\n  *\n  * @cond (bpmp_t194 || bpmp_t186)\n  * @note On T194 and earlier BPMP-FW forcefully turns off some partitions as\n@@ -1486,9 +1902,8 @@ struct mrq_query_abi_response {\n  * Therefore, it is recommended to power off all domains via MRQ_PG prior to SC7\n  * entry.\n  * See @ref bpmp_pdomain_ids for further detail.\n- * @endcond (bpmp_t194 || bpmp_t186)\n+ * @endcond\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_pg_request\n@@ -1497,6 +1912,10 @@ struct mrq_query_abi_response {\n  * @addtogroup Powergating\n  * @{\n  */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_PG -command.\n+ */\n enum mrq_pg_cmd {\n \t/**\n \t * @brief Check whether the BPMP driver supports the specified\n@@ -1512,9 +1931,14 @@ enum mrq_pg_cmd {\n \t * possible values for power domains are defined in enum\n \t * pg_states\n \t *\n-\t * mrq_response:err is\n-\t * 0: Success\n-\t * -#BPMP_EINVAL: Invalid request parameters\n+\t * mrq_response:err for this sub-command is defined as:\n+\t *\n+\t * | Value          | Description                                                              |\n+\t * | -------------- | ------------------------------------------------------------------------ |\n+\t * | 0              | Request was successful.                                                  |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters were provided.                                |\n+\t * | -#BPMP_EACCES  | Permission denied or always-off partition was attempted to be turned on. |\n+\t * | Any other <0   | Internal error while performing the operation.                           |\n \t */\n \tCMD_PG_SET_STATE = 1,\n \n@@ -1523,18 +1947,26 @@ enum mrq_pg_cmd {\n \t * possible values for power domains are defined in enum\n \t * pg_states\n \t *\n-\t * mrq_response:err is\n-\t * 0: Success\n-\t * -#BPMP_EINVAL: Invalid request parameters\n+\t * mrq_response:err for this sub-command is defined as:\n+\t *\n+\t * | Value          | Description                                    |\n+\t * | -------------- | ---------------------------------------------- |\n+\t * | 0              | Request was successful.                        |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters were provided.      |\n+\t * | Any other <0   | Internal error while performing the operation. |\n \t */\n \tCMD_PG_GET_STATE = 2,\n \n \t/**\n \t * @brief Get the name string of specified power domain id.\n \t *\n-\t * mrq_response:err is\n-\t * 0: Success\n-\t * -#BPMP_EINVAL: Invalid request parameters\n+\t * mrq_response:err for this sub-command is defined as:\n+\t *\n+\t * | Value          | Description                                    |\n+\t * | -------------- | ---------------------------------------------- |\n+\t * | 0              | Request was successful.                        |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters were provided.      |\n+\t * | Any other <0   | Internal error while performing the operation. |\n \t */\n \tCMD_PG_GET_NAME = 3,\n \n@@ -1543,20 +1975,29 @@ enum mrq_pg_cmd {\n \t * @brief Get the highest power domain id in the system. Not\n \t * all IDs between 0 and max_id are valid IDs.\n \t *\n-\t * mrq_response:err is\n-\t * 0: Success\n-\t * -#BPMP_EINVAL: Invalid request parameters\n+\t * mrq_response:err for this sub-command is defined as:\n+\t *\n+\t * | Value          | Description                                    |\n+\t * | -------------- | ---------------------------------------------- |\n+\t * | 0              | Request was successful.                        |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters were provided.      |\n+\t * | Any other <0   | Internal error while performing the operation. |\n \t */\n \tCMD_PG_GET_MAX_ID = 4,\n };\n \n #define MRQ_PG_NAME_MAXLEN\t40\n \n+/**\n+ * @brief State value for the cmd_pg_set_state_request::state -field.\n+ */\n enum pg_states {\n \t/** @brief Power domain is OFF */\n \tPG_STATE_OFF = 0,\n \t/** @brief Power domain is ON */\n \tPG_STATE_ON = 1,\n+\n+\t/** @cond bpmp_t186 */\n \t/**\n \t * @brief a legacy state where power domain and the clock\n \t * associated to the domain are ON.\n@@ -1564,40 +2005,51 @@ enum pg_states {\n \t * deprecated.\n \t */\n \tPG_STATE_RUNNING = 2,\n+\t/** @endcond */\n };\n \n struct cmd_pg_query_abi_request {\n-\t/** @ref mrq_pg_cmd */\n+\t/** #MRQ_PG sub-command identifier from @ref mrq_pg_cmd */\n \tuint32_t type;\n } BPMP_ABI_PACKED;\n \n struct cmd_pg_set_state_request {\n-\t/** @ref pg_states */\n+\t/** One of the state values from @ref pg_states */\n \tuint32_t state;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response data to #MRQ_PG sub command #CMD_PG_GET_STATE\n+ * @brief Response payload for the #MRQ_PG sub-command #CMD_PG_GET_STATE\n  */\n struct cmd_pg_get_state_response {\n \t/**\n \t * @brief The state of the power partition that has been\n-\t * succesfuly requested by the master earlier using #MRQ_PG\n+\t * successfully requested by the master earlier using #MRQ_PG\n \t * command #CMD_PG_SET_STATE.\n \t *\n \t * The state may not reflect the physical state of the power\n \t * partition if there are some other masters requesting it to\n \t * be enabled.\n \t *\n-\t * See @ref pg_states for possible values\n+\t * See @ref pg_states for possible values.\n \t */\n \tuint32_t state;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for the #MRQ_PG sub-command #CMD_PG_GET_NAME\n+ */\n struct cmd_pg_get_name_response {\n+\t/**\n+\t * @brief On successful response contains the null-terminated\n+\t *        friendly name of the requested power-domain.\n+\t */\n \tuint8_t name[MRQ_PG_NAME_MAXLEN];\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for the #MRQ_PG sub-command #CMD_PG_GET_MAX_ID\n+ */\n struct cmd_pg_get_max_id_response {\n \tuint32_t max_id;\n } BPMP_ABI_PACKED;\n@@ -1606,22 +2058,28 @@ struct cmd_pg_get_max_id_response {\n  * @brief Request with #MRQ_PG\n  *\n  * Used by the sender of an #MRQ_PG message to control power\n- * partitions. The pg_request is split into several sub-commands. Some\n- * sub-commands require no additional data. Others have a sub-command\n- * specific payload\n+ * partitions. The expected payload depends on the sub-command identifier.\n+ * Some sub-commands require no additional data while others have a sub-command\n+ * specific payload:\n  *\n- * |sub-command                 |payload                |\n- * |----------------------------|-----------------------|\n- * |CMD_PG_QUERY_ABI            | query_abi             |\n- * |CMD_PG_SET_STATE            | set_state             |\n- * |CMD_PG_GET_STATE            | -                     |\n- * |CMD_PG_GET_NAME             | -                     |\n- * |CMD_PG_GET_MAX_ID           | -                     |\n+ * |Sub-command                 |Payload                    |\n+ * |----------------------------|---------------------------|\n+ * |#CMD_PG_QUERY_ABI           | #cmd_pg_query_abi_request |\n+ * |#CMD_PG_SET_STATE           | #cmd_pg_set_state_request |\n+ * |#CMD_PG_GET_STATE           | -                         |\n+ * |#CMD_PG_GET_NAME            | -                         |\n+ * |#CMD_PG_GET_MAX_ID          | -                         |\n  *\n  */\n struct mrq_pg_request {\n+\t/** @brief Sub-command identifier from @ref mrq_pg_cmd. */\n \tuint32_t cmd;\n+\n+\t/**\n+\t * @brief Power-domain identifier\n+\t */\n \tuint32_t id;\n+\n \tunion {\n \t\tstruct cmd_pg_query_abi_request query_abi;\n \t\tstruct cmd_pg_set_state_request set_state;\n@@ -1629,19 +2087,18 @@ struct mrq_pg_request {\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response to MRQ_PG\n+ * @brief Response to #MRQ_PG\n  *\n- * Each sub-command supported by @ref mrq_pg_request may return\n- * sub-command-specific data. Some do and some do not as indicated in\n- * the following table\n+ * Some of the #MRQ_PG sub-commands return a sub-command -specific payload\n+ * as specified in the following table:\n  *\n- * |sub-command                 |payload                |\n- * |----------------------------|-----------------------|\n- * |CMD_PG_QUERY_ABI            | -                     |\n- * |CMD_PG_SET_STATE            | -                     |\n- * |CMD_PG_GET_STATE            | get_state             |\n- * |CMD_PG_GET_NAME             | get_name              |\n- * |CMD_PG_GET_MAX_ID           | get_max_id            |\n+ * |Sub-command         |Payload                       |\n+ * |--------------------|------------------------------|\n+ * |#CMD_PG_QUERY_ABI   | -                            |\n+ * |#CMD_PG_SET_STATE   | -                            |\n+ * |#CMD_PG_GET_STATE   | #cmd_pg_get_state_response   |\n+ * |#CMD_PG_GET_NAME    | #cmd_pg_get_name_response    |\n+ * |#CMD_PG_GET_MAX_ID  | #cmd_pg_get_max_id_response  |\n  */\n struct mrq_pg_response {\n \tunion {\n@@ -1658,11 +2115,10 @@ struct mrq_pg_response {\n  * @def MRQ_THERMAL\n  * @brief Interact with BPMP thermal framework\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: Any\n- * * Request Payload: TODO\n- * * Response Payload: TODO\n+ * * Request Payload: #mrq_thermal_host_to_bpmp_request\n+ * * Response Payload: #mrq_thermal_bpmp_to_host_response\n  *\n  * @addtogroup Thermal\n  *\n@@ -1686,10 +2142,14 @@ struct mrq_pg_response {\n  * payload of @ref mrq_thermal_bpmp_to_host_request.\n  * @{\n  */\n+\n+/**\n+ * @brief Sub-command identifiers for Host->BPMP #MRQ_THERMAL -command.\n+ */\n enum mrq_thermal_host_to_bpmp_cmd {\n \t/**\n-\t * @brief Check whether the BPMP driver supports the specified\n-\t * request type.\n+\t * @brief Check whether BPMP-FW supports the specified\n+\t *        #MRQ_THERMAL sub-command.\n \t *\n \t * Host needs to supply request parameters.\n \t *\n@@ -1703,31 +2163,44 @@ enum mrq_thermal_host_to_bpmp_cmd {\n \t *\n \t * Host needs to supply request parameters.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: Temperature query succeeded.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t * *  -#BPMP_ENOENT: No driver registered for thermal zone..\n-\t * *  -#BPMP_EFAULT: Problem reading temperature measurement.\n+\t * mrq_response::err value for this sub-command is:\n+\t *\n+\t * | Value          | Description                               |\n+\t * | -------------- | ----------------------------------------- |\n+\t * | 0              | Temperature query succeeded.              |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.               |\n+\t * | -#BPMP_ENOENT  | No driver registered for thermal zone.    |\n+\t * | -#BPMP_EFAULT  | Problem reading temperature measurement.  |\n \t */\n \tCMD_THERMAL_GET_TEMP = 1,\n \n \t/**\n+\t * @cond (!bpmp_safe && !bpmp_t264)\n \t * @brief Enable or disable and set the lower and upper\n \t *   thermal limits for a thermal trip point. Each zone has\n \t *   one trip point.\n \t *\n \t * Host needs to supply request parameters. Once the\n \t * temperature hits a trip point, the BPMP will send a message\n-\t * to the CPU having MRQ=MRQ_THERMAL and\n-\t * type=CMD_THERMAL_HOST_TRIP_REACHED\n+\t * to the CPU having MRQ command identifier equal to #MRQ_THERMAL and\n+\t * sub-command identifier equal to #CMD_THERMAL_HOST_TRIP_REACHED.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: Trip successfully set.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t * *  -#BPMP_ENOENT: No driver registered for thermal zone.\n-\t * *  -#BPMP_EFAULT: Problem setting trip point.\n+\t * If #CMD_THERMAL_SET_TRIP -sub-command is issued for a\n+\t * thermal zone that is currently power gated and unable to\n+\t * report temperature, a temperature of -256C is used as\n+\t * temperature for evaluation of the trip.\n+\t *\n+\t * mrq_response::err for this sub-command is defined as:\n+\t *\n+\t * | Value           | Description                            |\n+\t * | --------------- | -------------------------------------- |\n+\t * | 0               | Trip successfully set.                 |\n+\t * | -#BPMP_EINVAL   | Invalid request parameters.            |\n+\t * | -#BPMP_ENOENT   | No driver registered for thermal zone. |\n+\t * | -#BPMP_EFAULT   | Problem setting trip point.            |\n \t */\n \tCMD_THERMAL_SET_TRIP = 2,\n+\t /** @endcond */\n \n \t/**\n \t * @brief Get the number of supported thermal zones.\n@@ -1739,135 +2212,153 @@ enum mrq_thermal_host_to_bpmp_cmd {\n \tCMD_THERMAL_GET_NUM_ZONES = 3,\n \n \t/**\n-\t * @brief Get the thermtrip of the specified zone.\n+\t * @brief Get the thermal trip value of the specified zone.\n \t *\n \t * Host needs to supply request parameters.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: Valid zone information returned.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t * *  -#BPMP_ENOENT: No driver registered for thermal zone.\n-\t * *  -#BPMP_ERANGE if thermtrip is invalid or disabled.\n-\t * *  -#BPMP_EFAULT: Problem reading zone information.\n+\t * mrq_response::err for this sub-command is defined as:\n+\t *\n+\t * | Value           | Description                            |\n+\t * | --------------- | -------------------------------------- |\n+\t * | 0               | Valid zone information returned.       |\n+\t * | -#BPMP_EINVAL   | Invalid request parameters.            |\n+\t * | -#BPMP_ENOENT   | No driver registered for thermal zone. |\n+\t * | -#BPMP_ERANGE   | Thermal trip is invalid or disabled.   |\n+\t * | -#BPMP_EFAULT   | Problem reading zone information.      |\n \t */\n \tCMD_THERMAL_GET_THERMTRIP = 4,\n \n-\t/** @brief: number of supported host-to-bpmp commands. May\n-\t * increase in future\n+\t/**\n+\t * @brief Number of supported host-to-bpmp commands.\n \t */\n \tCMD_THERMAL_HOST_TO_BPMP_NUM\n };\n \n+/**\n+ * @brief Sub-command identifiers for BPMP->host #MRQ_THERMAL -command\n+ */\n enum mrq_thermal_bpmp_to_host_cmd {\n \t/**\n \t * @brief Indication that the temperature for a zone has\n-\t *   exceeded the range indicated in the thermal trip point\n-\t *   for the zone.\n+\t *        exceeded the range indicated in the thermal trip point\n+\t *        for the zone.\n \t *\n-\t * BPMP needs to supply request parameters. Host only needs to\n+\t * BPMP-FW needs to supply request parameters. Host only needs to\n \t * acknowledge.\n \t */\n \tCMD_THERMAL_HOST_TRIP_REACHED = 100,\n \n-\t/** @brief: number of supported bpmp-to-host commands. May\n-\t * increase in future\n+\t/**\n+\t * @brief: Number of supported bpmp-to-host commands. May\n+\t * increase in future.\n \t */\n \tCMD_THERMAL_BPMP_TO_HOST_NUM\n };\n \n-/*\n- * Host->BPMP request data for request type CMD_THERMAL_QUERY_ABI\n- *\n- * zone: Request type for which to check existence.\n+/**\n+ * Host->BPMP request payload for the #CMD_THERMAL_QUERY_ABI sub-command\n  */\n struct cmd_thermal_query_abi_request {\n+\t/**\n+\t * Request type for which to check whether supported by BPMP-FW.\n+\t *\n+\t * Valid identifiers are available at #mrq_thermal_host_to_bpmp_cmd\n+\t */\n \tuint32_t type;\n } BPMP_ABI_PACKED;\n \n-/*\n- * Host->BPMP request data for request type CMD_THERMAL_GET_TEMP\n- *\n- * zone: Number of thermal zone.\n+/**\n+ * Host->BPMP request payload for the #CMD_THERMAL_GET_TEMP sub-command\n  */\n struct cmd_thermal_get_temp_request {\n+\t/** Thermal zone identifier from @ref bpmp_thermal_ids. */\n \tuint32_t zone;\n } BPMP_ABI_PACKED;\n \n-/*\n- * BPMP->Host reply data for request CMD_THERMAL_GET_TEMP\n+/**\n+ * BPMP->Host response payload for the #CMD_THERMAL_GET_TEMP sub-command.\n  *\n- * error: 0 if request succeeded.\n- *\t-BPMP_EINVAL if request parameters were invalid.\n- *      -BPMP_ENOENT if no driver was registered for the specified thermal zone.\n- *      -BPMP_EFAULT for other thermal zone driver errors.\n- * temp: Current temperature in millicelsius.\n+ * mrq_response::err is defined as:\n+ *\n+ * | Value         | Description                                              |\n+ * | ------------- | -------------------------------------------------------- |\n+ * | 0             | Request succeeded.                                       |\n+ * | -#BPMP_EINVAL | Request parameters were invalid.                         |\n+ * | -#BPMP_ENOENT | No driver was registered for the specified thermal zone. |\n+ * | -#BPMP_EFAULT | For other BPMP-FW internal thermal zone driver errors.   |\n  */\n struct cmd_thermal_get_temp_response {\n+\t/** @brief Current temperature in millicelsius. */\n \tint32_t temp;\n } BPMP_ABI_PACKED;\n \n-/*\n- * Host->BPMP request data for request type CMD_THERMAL_SET_TRIP\n+/**\n+ * @cond (!bpmp_safe && !bpmp_t264)\n  *\n- * zone: Number of thermal zone.\n- * low: Temperature of lower trip point in millicelsius\n- * high: Temperature of upper trip point in millicelsius\n- * enabled: 1 to enable trip point, 0 to disable trip point\n+ * Host->BPMP request payload for the #CMD_THERMAL_SET_TRIP sub-command.\n  */\n struct cmd_thermal_set_trip_request {\n+\t/** @brief Thermal zone identifier from @ref bpmp_thermal_ids. */\n \tuint32_t zone;\n+\t/** @brief Temperature of lower trip point in millicelsius */\n \tint32_t low;\n+\t/** @brief Temperature of upper trip point in millicelsius */\n \tint32_t high;\n+\t/** 1 to enable trip point, 0 to disable trip point */\n \tuint32_t enabled;\n } BPMP_ABI_PACKED;\n \n-/*\n- * BPMP->Host request data for request type CMD_THERMAL_HOST_TRIP_REACHED\n- *\n- * zone: Number of thermal zone where trip point was reached.\n+/**\n+ * BPMP->Host request payload for the #CMD_THERMAL_HOST_TRIP_REACHED sub-command.\n  */\n struct cmd_thermal_host_trip_reached_request {\n+\t/**\n+\t * @brief ID of the thermal zone where trip point was reached,\n+\t *        from @ref bpmp_thermal_ids.\n+\t */\n \tuint32_t zone;\n } BPMP_ABI_PACKED;\n+/** @endcond */\n \n-/*\n- * BPMP->Host reply data for request type CMD_THERMAL_GET_NUM_ZONES\n- *\n- * num: Number of supported thermal zones. The thermal zones are indexed\n- *      starting from zero.\n+/**\n+ * BPMP->Host response payload for the #CMD_THERMAL_GET_NUM_ZONES sub-command.\n  */\n struct cmd_thermal_get_num_zones_response {\n+\t/**\n+\t * @brief Number of supported thermal zones.\n+\t *\n+\t * The thermal zones are indexed starting from zero.\n+\t */\n \tuint32_t num;\n } BPMP_ABI_PACKED;\n \n-/*\n- * Host->BPMP request data for request type CMD_THERMAL_GET_THERMTRIP\n- *\n- * zone: Number of thermal zone.\n+/**\n+ * Host->BPMP request payload for the #CMD_THERMAL_GET_THERMTRIP sub-command.\n  */\n struct cmd_thermal_get_thermtrip_request {\n+\t/** @brief Thermal zone identifier from @ref bpmp_thermal_ids. */\n \tuint32_t zone;\n } BPMP_ABI_PACKED;\n \n-/*\n- * BPMP->Host reply data for request CMD_THERMAL_GET_THERMTRIP\n- *\n- * thermtrip: HW shutdown temperature in millicelsius.\n+/**\n+ * BPMP->Host response payload for the #CMD_THERMAL_GET_THERMTRIP sub-command.\n  */\n struct cmd_thermal_get_thermtrip_response {\n+\t/** @brief HW shutdown temperature in millicelsius. */\n \tint32_t thermtrip;\n } BPMP_ABI_PACKED;\n \n-/*\n- * Host->BPMP request data.\n- *\n- * Reply type is union mrq_thermal_bpmp_to_host_response.\n+/**\n+ * Host->BPMP #MRQ_THERMAL request payload.\n  *\n- * type: Type of request. Values listed in enum mrq_thermal_type.\n- * data: Request type specific parameters.\n+ * Response payload type is #mrq_thermal_bpmp_to_host_response.\n  */\n struct mrq_thermal_host_to_bpmp_request {\n+\t/**\n+\t * Request sub-command identifier from @ref mrq_thermal_host_to_bpmp_cmd.\n+\t */\n \tuint32_t type;\n+\n \tunion {\n \t\tstruct cmd_thermal_query_abi_request query_abi;\n \t\tstruct cmd_thermal_get_temp_request get_temp;\n@@ -1876,21 +2367,22 @@ struct mrq_thermal_host_to_bpmp_request {\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/*\n- * BPMP->Host request data.\n- *\n- * type: Type of request. Values listed in enum mrq_thermal_type.\n- * data: Request type specific parameters.\n+/**\n+ * @brief Request payload for the BPMP->Host #MRQ_THERMAL command.\n  */\n struct mrq_thermal_bpmp_to_host_request {\n+\t/**\n+\t * Request sub-command identifier from @ref mrq_thermal_bpmp_to_host_cmd.\n+\t */\n \tuint32_t type;\n+\n \tunion {\n \t\tstruct cmd_thermal_host_trip_reached_request host_trip_reached;\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/*\n- * Data in reply to a Host->BPMP request.\n+/**\n+ * @brief Response payload for the Host->BPMP #MRQ_THERMAL command.\n  */\n union mrq_thermal_bpmp_to_host_response {\n \tstruct cmd_thermal_get_temp_response get_temp;\n@@ -1900,13 +2392,11 @@ union mrq_thermal_bpmp_to_host_response {\n \n /** @} Thermal */\n \n-/**\n+/** @cond (!bpmp_safe && (bpmp_t234 || bpmp_t238 || bpmp_t264))\n  * @ingroup MRQ_Codes\n  * @def MRQ_OC_STATUS\n- * @brief Query over current status\n+ * @brief Query overcurrent status\n  *\n- * * Platforms: T234\n- * @cond bpmp_t234\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: N/A\n@@ -1916,33 +2406,224 @@ union mrq_thermal_bpmp_to_host_response {\n  * @{\n  */\n \n+/**\n+ * @brief Size of the mrq_oc_status_response::throt_en and\n+ *        mrq_oc_status_response::event_cnt -arrays.\n+ */\n #define OC_STATUS_MAX_SIZE\t24U\n \n-/*\n- * @brief Response to #MRQ_OC_STATUS\n- *\n- * throt_en: Value for each OC alarm where zero signifies throttle is\n- *           disabled, and non-zero throttle is enabled.\n- * event_cnt: Total number of OC events for each OC alarm.\n+/**\n+ * @brief Response payload for the #MRQ_OC_STATUS -command.\n  *\n  * mrq_response::err is 0 if the operation was successful and\n  * -#BPMP_ENODEV otherwise.\n  */\n struct mrq_oc_status_response {\n+\t/**\n+\t * @brief Value for each overcurrent alarm where zero signifies\n+\t * throttle is disabled, and non-zero throttle is enabled.\n+\t */\n \tuint8_t throt_en[OC_STATUS_MAX_SIZE];\n+\n+\t/**\n+\t * @brief Total number of overcurrent events for each overcurrent alarm.\n+\t */\n \tuint32_t event_cnt[OC_STATUS_MAX_SIZE];\n } BPMP_ABI_PACKED;\n \n /** @} OC_status */\n-/** @endcond bpmp_t234 */\n+/** @endcond */\n+\n+/** @cond (bpmp_th500 || bpmp_tb500 || bpmp_t238)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_THROTTLE\n+ * @brief Overcurrent throttling\n+ *\n+ * * Initiators: CCPLEX\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_throttle_request\n+ * * Response Payload: @ref mrq_throttle_response\n+ * @addtogroup Throttle\n+ * @{\n+ */\n+enum mrq_throttle_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_THROTTLE sub-command.\n+\t *\n+\t * mrq_response::err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_THROTTLE_QUERY_ABI = 0,\n+\n+\t/**\n+\t * @cond (bpmp_th500 || bpmp_tb500)\n+\t * @brief query chipthrot status\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                                  |\n+\t * |----------------|--------------------------------------------------------------|\n+\t * | 0              | Success                                                      |\n+\t * | -#BPMP_ENODEV  | CMD_THROTTLE_GET_CHIPTHROT_STATUS is not supported by BPMP-FW|\n+\t */\n+\tCMD_THROTTLE_GET_CHIPTHROT_STATUS = 1,\n+\t/** @endcond */\n+\n+\t/**\n+\t * @cond bpmp_t238\n+\t * @brief program OC throttle configuration\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                                  |\n+\t * |----------------|--------------------------------------------------------------|\n+\t * | 0              | Success                                                      |\n+\t * | -#BPMP_EINVAL  | ID out of range or alarm for this ID not enabled at boot     |\n+\t * | -#BPMP_ENODEV  | CMD_THROTTLE_SET_OC_CONFIG is not supported by BPMP-FW       |\n+\t */\n+\tCMD_THROTTLE_SET_OC_CONFIG = 2,\n+\t/** @endcond */\n+};\n \n /**\n+ * @brief Request payload for #MRQ_THROTTLE sub-command #CMD_THROTTLE_QUERY_ABI\n+ */\n+struct cmd_throttle_query_abi_request {\n+\tuint32_t cmd; /**< @ref mrq_throttle_cmd */\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @cond bpmp_th500\n+ * @brief Response payload for #MRQ_THROTTLE sub-command\n+ * #CMD_THROTTLE_GET_CHIPTHROT_STATUS\n+ *\n+ * Bit-mask of all h/w throttling actions that have been engaged since\n+ * last invocation of this command\n+ * Bit 0...11  : HW throttling status of the thermal zones.\n+ * Bit 12...23 : Reserved for future thermal zone events.\n+ * Bit 24...25 : HW throttling status of the Over current Alarms OC1 & OC2.\n+ * Bit 26...31 : Reserved for future Over current alarm events.\n+ * Bit 32...63 : Reserved for future use.\n+ * @endcond\n+ * @cond bpmp_tb500\n+ * @brief Response payload for #MRQ_THROTTLE sub-command\n+ * #CMD_THROTTLE_GET_CHIPTHROT_STATUS\n+ *\n+ * Bit-mask of all h/w throttling actions that have been engaged since\n+ * last invocation of this command\n+ * Bit 0       : HW throttling status of the TB500C_TJ_MAX thermal zone.\n+ * Bit 1...63  : Reserved for future use.\n+ * @endcond\n+ * @cond (bpmp_th500 || bpmp_tb500)\n+ */\n+struct cmd_throttle_get_chipthrot_status_response {\n+\tuint64_t status;\n+} BPMP_ABI_PACKED;\n+/** @endcond */\n+\n+/**\n+ * @cond bpmp_t238\n+ * @brief Request payload for #MRQ_THROTTLE sub-command\n+ * #CMD_THROTTLE_SET_OC_CONFIG\n+ *\n+ * Only alarms that have been configured as enabled in BPMP-DTB at boot can\n+ * be reconfigured with this MRQ.\n+ */\n+struct cmd_throttle_set_oc_config_request {\n+\t/** @brief valid OC alarm ID from @ref bpmp_soctherm_edp_oc_ids */\n+\tuint32_t id;\n+\t/** @brief Throttling enable/disable\n+\t *\n+\t * Set to 1 to enable throttling, or 0 to disable. Other values are\n+\t * disallowed.\n+\t */\n+\tuint8_t en_throttle;\n+} BPMP_ABI_PACKED;\n+/** @endcond */\n+\n+/**\n+ * @brief Request payload for the #MRQ_THROTTLE -command\n+ *\n+ * | Sub-command                        | Request payload                  |\n+ * |------------------------------------|----------------------------------|\n+ * | #CMD_THROTTLE_QUERY_ABI            | #cmd_throttle_query_abi_request  |\n+ *\n+ * @cond bpmp_th500\n+ * The following additional sub-commands are supported on TH500 platforms:\n+ * | Sub-command                        | Request payload                  |\n+ * |------------------------------------|----------------------------------|\n+ * | #CMD_THROTTLE_GET_CHIPTHROT_STATUS | -                                |\n+ * @endcond\n+ *\n+ * @cond bpmp_tb500\n+ * The following additional sub-commands are supported on TB500 platforms:\n+ * | Sub-command                        | Request payload                  |\n+ * |------------------------------------|----------------------------------|\n+ * | #CMD_THROTTLE_GET_CHIPTHROT_STATUS | -                                |\n+ * @endcond\n+ *\n+ * @cond bpmp_t238\n+ * The following additional sub-commands are supported on T238 platforms:\n+ * | Sub-command                        | Request payload                     |\n+ * |------------------------------------|-------------------------------------|\n+ * | #CMD_THROTTLE_SET_OC_CONFIG        | #cmd_throttle_set_oc_config_request |\n+ * @endcond\n+ */\n+struct mrq_throttle_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_throttle_query_abi_request throttle_query_abi_req;\n+\t\t/** @cond bpmp_t238 */\n+\t\tstruct cmd_throttle_set_oc_config_request throttle_set_oc_config_req;\n+\t\t/** @endcond */\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for the #MRQ_THROTTLE -command.\n+ *\n+ * | Sub-command                        | Response payload                           |\n+ * |------------------------------------|--------------------------------------------|\n+ * | #CMD_THROTTLE_QUERY_ABI            | -                                          |\n+ *\n+ * @cond bpmp_th500\n+ * The following additional sub-commands are supported on TH500 platforms:\n+ * | Sub-command                        | Response payload                           |\n+ * |------------------------------------|--------------------------------------------|\n+ * | #CMD_THROTTLE_GET_CHIPTHROT_STATUS | #cmd_throttle_get_chipthrot_status_response|\n+ * @endcond\n+ *\n+ * @cond bpmp_tb500\n+ * The following additional sub-commands are supported on TB500 platforms:\n+ * | Sub-command                        | Response payload                           |\n+ * |------------------------------------|--------------------------------------------|\n+ * | #CMD_THROTTLE_GET_CHIPTHROT_STATUS | #cmd_throttle_get_chipthrot_status_response|\n+ * @endcond\n+ *\n+ * @cond bpmp_t238\n+ * The following additional sub-commands are supported on T238 platforms:\n+ * | Sub-command                        | Response payload                           |\n+ * |------------------------------------|--------------------------------------------|\n+ * | #CMD_THROTTLE_SET_OC_CONFIG        | -                                          |\n+ * @endcond\n+ */\n+struct mrq_throttle_response {\n+\tunion {\n+\t\t/** @cond (bpmp_th500 || bpmp_tb500) */\n+\t\tstruct cmd_throttle_get_chipthrot_status_response throttle_get_chipthrot_status_resp;\n+\t\t/** @endcond */\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+/** @} Throttle */\n+/** @endcond */\n+\n+\n+/** @cond bpmp_t186\n  * @ingroup MRQ_Codes\n  * @def MRQ_CPU_VHINT\n  * @brief Query CPU voltage hint data\n  *\n- * * Platforms: T186\n- * @cond bpmp_t186\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_cpu_vhint_request\n@@ -1995,14 +2676,13 @@ struct cpu_vhint_data {\n } BPMP_ABI_PACKED;\n \n /** @} Vhint */\n-/** @endcond bpmp_t186 */\n+/** @endcond */\n \n /**\n  * @ingroup MRQ_Codes\n  * @def MRQ_ABI_RATCHET\n  * @brief ABI ratchet value query\n  *\n- * * Platforms: T186, T194\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_abi_ratchet_request\n@@ -2014,7 +2694,7 @@ struct cpu_vhint_data {\n /**\n  * @brief An ABI compatibility mechanism\n  *\n- * BPMP_ABI_RATCHET_VALUE may increase for various reasons in a future\n+ * #BPMP_ABI_RATCHET_VALUE may increase for various reasons in a future\n  * revision of this header file.\n  * 1. That future revision deprecates some MRQ\n  * 2. That future revision introduces a breaking change to an existing\n@@ -2051,11 +2731,11 @@ struct mrq_abi_ratchet_request {\n  *\n  * If #ratchet is less than the requester's #BPMP_ABI_RATCHET_VALUE,\n  * the requster must either interoperate with BPMP according to an ABI\n- * header version with BPMP_ABI_RATCHET_VALUE = ratchet or cease\n+ * header version with #BPMP_ABI_RATCHET_VALUE = ratchet or cease\n  * communication with BPMP.\n  *\n  * If mrq_response::err is 0 and ratchet is greater than or equal to the\n- * requester's BPMP_ABI_RATCHET_VALUE, the requester should continue\n+ * requester's #BPMP_ABI_RATCHET_VALUE, the requester should continue\n  * normal operation.\n  */\n struct mrq_abi_ratchet_response {\n@@ -2070,7 +2750,9 @@ struct mrq_abi_ratchet_response {\n  * @def MRQ_EMC_DVFS_LATENCY\n  * @brief Query frequency dependent EMC DVFS latency\n  *\n- * * Platforms: T186, T194, T234\n+ * On T264 and onwards, this MRQ service is available only when\n+ * BPMP-FW has valid DRAM timing table passed by earlier boot stages.\n+ *\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: N/A\n@@ -2094,7 +2776,11 @@ struct emc_dvfs_latency {\n  * @brief Response to #MRQ_EMC_DVFS_LATENCY\n  */\n struct mrq_emc_dvfs_latency_response {\n-\t/** @brief The number valid entries in #pairs */\n+\t/**\n+\t * @brief The number valid entries in #pairs\n+\t *\n+\t * Valid range is [0, #EMC_DVFS_LATENCY_MAX_SIZE]\n+\t */\n \tuint32_t num_pairs;\n \t/** @brief EMC DVFS node <frequency, latency> information */\n \tstruct emc_dvfs_latency pairs[EMC_DVFS_LATENCY_MAX_SIZE];\n@@ -2102,13 +2788,11 @@ struct mrq_emc_dvfs_latency_response {\n \n /** @} EMC */\n \n-/**\n+/** @cond (bpmp_t234)\n  * @ingroup MRQ_Codes\n  * @def MRQ_EMC_DVFS_EMCHUB\n  * @brief Query EMC HUB frequencies\n  *\n- * * Platforms: T234 onwards\n- * @cond (bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: N/A\n@@ -2139,15 +2823,13 @@ struct mrq_emc_dvfs_emchub_response {\n } BPMP_ABI_PACKED;\n \n /** @} EMC */\n-/** @endcond (bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (bpmp_t234)\n  * @ingroup MRQ_Codes\n  * @def MRQ_EMC_DISP_RFL\n  * @brief Set EMC display RFL handshake mode of operations\n  *\n- * * Platforms: T234 onwards\n- * @cond (bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_emc_disp_rfl_request\n@@ -2157,6 +2839,9 @@ struct mrq_emc_dvfs_emchub_response {\n  * @{\n  */\n \n+/**\n+ * @brief Allowed mode values for the mrq_emc_disp_rfl_request::mode -field.\n+ */\n enum mrq_emc_disp_rfl_mode {\n \t/** @brief EMC display RFL handshake disabled  */\n \tEMC_DISP_RFL_MODE_DISABLED = 0,\n@@ -2171,65 +2856,75 @@ enum mrq_emc_disp_rfl_mode {\n  * Used by the sender of an #MRQ_EMC_DISP_RFL message to\n  * request the mode of EMC display RFL handshake.\n  *\n- * mrq_response::err is\n- * * 0: RFL mode is set successfully\n- * * -#BPMP_EINVAL: invalid mode requested\n- * * -#BPMP_ENOSYS: RFL handshake is not supported\n- * * -#BPMP_EACCES: Permission denied\n- * * -#BPMP_ENODEV: if disp rfl mrq is not supported by BPMP-FW\n+ * mrq_response::err for this request is defined as:\n+ *\n+ * | Value          | Description                                   |\n+ * | -------------- | --------------------------------------------- |\n+ * | 0              | RFL mode is set successfully.                 |\n+ * | -#BPMP_EINVAL  | Invalid mode requested.                       |\n+ * | -#BPMP_ENOSYS  | RFL handshake is not supported.               |\n+ * | -#BPMP_EACCES  | Permission denied.                            |\n+ * | -#BPMP_ENODEV  | if disp rfl mrq is not supported by BPMP-FW.  |\n  */\n struct mrq_emc_disp_rfl_request {\n-\t/** @brief EMC display RFL mode (@ref mrq_emc_disp_rfl_mode) */\n+\t/** @brief EMC display RFL mode from @ref mrq_emc_disp_rfl_mode */\n \tuint32_t mode;\n } BPMP_ABI_PACKED;\n \n /** @} EMC */\n-/** @endcond (bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (!bpmp_safe && (bpmp_t234 || bpmp_t238))\n  * @ingroup MRQ_Codes\n  * @def MRQ_BWMGR\n- * @brief bwmgr requests\n+ * @brief Bandwidth manager (BWMGR) commands\n  *\n- * * Platforms: T234 onwards\n- * @cond (bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_bwmgr_request\n  * * Response Payload: @ref mrq_bwmgr_response\n  *\n  * @addtogroup BWMGR\n- *\n  * @{\n  */\n \n+/**\n+ * @brief Sub-command identifiers for #MRQ_BWMGR\n+ */\n enum mrq_bwmgr_cmd {\n \t/**\n-\t * @brief Check whether the BPMP driver supports the specified\n-\t * request type\n+\t * @brief Check whether BPMP-FW supports the specified\n+\t * #MRQ_BWMGR sub-command.\n \t *\n-\t * mrq_response::err is 0 if the specified request is\n-\t * supported and -#BPMP_ENODEV otherwise.\n+\t * mrq_response::err is defined to be:\n+\t *\n+\t * | Value          | Description\n+\t * |----------------|----------------------------\n+\t * | 0              | Specified sub-command is supported.\n+\t * | -#BPMP_ENODEV  | Specified sub-command is not supported.\n \t */\n \tCMD_BWMGR_QUERY_ABI = 0,\n \n \t/**\n-\t * @brief Determine dram rate to satisfy iso/niso bw requests\n+\t * @brief Determine DRAM rate to satisfy ISO/NISO bandwidth requests\n \t *\n-\t * mrq_response::err is\n-\t * *  0: calc_rate succeeded.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t * *  -#BPMP_ENOTSUP: Requested bw is not available.\n+\t * mrq_response::err is defined to be:\n+\t *\n+\t * | Value          | Description\n+\t * |----------------|----------------------------\n+\t * | 0              | Rate calculation succeeded.\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.\n+\t * | -#BPMP_ENOTSUP | Requested bandwidth is not available.\n+\t * | <0             | Any other internal error.\n \t */\n \tCMD_BWMGR_CALC_RATE = 1\n };\n \n-/*\n- * request data for request type CMD_BWMGR_QUERY_ABI\n- *\n- * type: Request type for which to check existence.\n+/**\n+ * @brief Request payload for #MRQ_BWMGR sub-command #CMD_BWMGR_QUERY_ABI\n  */\n struct cmd_bwmgr_query_abi_request {\n+\t/** @brief Sub-command identifier from @ref mrq_bwmgr_cmd. */\n \tuint32_t type;\n } BPMP_ABI_PACKED;\n \n@@ -2237,47 +2932,56 @@ struct cmd_bwmgr_query_abi_request {\n  * @brief Used by @ref cmd_bwmgr_calc_rate_request\n  */\n struct iso_req {\n-\t/* @brief bwmgr client ID @ref bpmp_bwmgr_ids */\n+\t/** @brief BWMGR client ID from @ref bpmp_bwmgr_ids */\n \tuint32_t id;\n-\t/* @brief bw in kBps requested by client */\n+\t/** @brief Bandwidth in kBps requested by client */\n \tuint32_t iso_bw;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Size of the cmd_bwmgr_calc_rate_request::isobw_reqs -array.\n+ */\n #define MAX_ISO_CLIENTS\t\t13U\n-/*\n- * request data for request type CMD_BWMGR_CALC_RATE\n+\n+/**\n+ * @brief Request payload for #MRQ_BWMGR sub-command #CMD_BWMGR_CALC_RATE\n  */\n struct cmd_bwmgr_calc_rate_request {\n-\t/* @brief total bw in kBps requested by all niso clients */\n+\t/** @brief Total bandwidth in kBps requested by all NISO clients. */\n \tuint32_t sum_niso_bw;\n-\t/* @brief The number of iso clients */\n+\t/** @brief The number of ISO client requests in #isobw_reqs -array */\n \tuint32_t num_iso_clients;\n-\t/* @brief iso_req <id, iso_bw> information */\n+\t/** @brief iso_req <id, iso_bw> information */\n \tstruct iso_req isobw_reqs[MAX_ISO_CLIENTS];\n } BPMP_ABI_PACKED;\n \n-/*\n- * response data for request type CMD_BWMGR_CALC_RATE\n- *\n- * iso_rate_min: min dram data clk rate in kHz to satisfy all iso bw reqs\n- * total_rate_min: min dram data clk rate in kHz to satisfy all bw reqs\n+/**\n+ * @brief Response payload for #MRQ_BWMGR sub-command #CMD_BWMGR_CALC_RATE\n  */\n struct cmd_bwmgr_calc_rate_response {\n+\t/**\n+\t * @brief Minimum DRAM data clock rate in kHz to satisfy all ISO client\n+\t *        bandwidth requests.\n+\t */\n \tuint32_t iso_rate_min;\n+\n+\t/**\n+\t * @brief Minimum DRAM data clock rate in kHz to satisfy all\n+\t *        bandwidth requests.\n+\t */\n \tuint32_t total_rate_min;\n } BPMP_ABI_PACKED;\n \n-/*\n- * @brief Request with #MRQ_BWMGR\n- *\n- *\n- * |sub-command                 |payload                       |\n- * |----------------------------|------------------------------|\n- * |CMD_BWMGR_QUERY_ABI         | cmd_bwmgr_query_abi_request  |\n- * |CMD_BWMGR_CALC_RATE         | cmd_bwmgr_calc_rate_request  |\n+/**\n+ * @brief Request payload for the #MRQ_BWMGR -command.\n  *\n+ * |Sub-command           |Payload                      |\n+ * |----------------------|-----------------------------|\n+ * |#CMD_BWMGR_QUERY_ABI  |#cmd_bwmgr_query_abi_request |\n+ * |#CMD_BWMGR_CALC_RATE  |#cmd_bwmgr_calc_rate_request |\n  */\n struct mrq_bwmgr_request {\n+\t/** @brief Sub-command identifier from @ref mrq_bwmgr_cmd. */\n \tuint32_t cmd;\n \tunion {\n \t\tstruct cmd_bwmgr_query_abi_request query_abi;\n@@ -2285,12 +2989,12 @@ struct mrq_bwmgr_request {\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/*\n- * @brief Response to MRQ_BWMGR\n+/**\n+ * @brief Response payload for the #MRQ_BWMGR -command.\n  *\n- * |sub-command                 |payload                       |\n- * |----------------------------|------------------------------|\n- * |CMD_BWMGR_CALC_RATE         | cmd_bwmgr_calc_rate_response |\n+ * |Sub-command           |Payload                       |\n+ * |----------------------|------------------------------|\n+ * |#CMD_BWMGR_CALC_RATE  |#cmd_bwmgr_calc_rate_response |\n  */\n struct mrq_bwmgr_response {\n \tunion {\n@@ -2299,15 +3003,13 @@ struct mrq_bwmgr_response {\n } BPMP_ABI_PACKED;\n \n /** @} BWMGR */\n-/** @endcond (bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (!bpmp_safe && (bpmp_t234 || bpmp_t238 || bpmp_t264))\n  * @ingroup MRQ_Codes\n  * @def MRQ_BWMGR_INT\n- * @brief bpmp-integrated bwmgr requests\n+ * @brief BPMP-FW integrated BWMGR requests\n  *\n- * * Platforms: T234 onwards\n- * @cond (bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_bwmgr_int_request\n@@ -2317,10 +3019,13 @@ struct mrq_bwmgr_response {\n  * @{\n  */\n \n+/**\n+ * @brief Sub-command identifiers for #MRQ_BWMGR_INT\n+ */\n enum mrq_bwmgr_int_cmd {\n \t/**\n \t * @brief Check whether the BPMP-FW supports the specified\n-\t * request type\n+\t * sub-command.\n \t *\n \t * mrq_response::err is 0 if the specified request is\n \t * supported and -#BPMP_ENODEV otherwise.\n@@ -2328,36 +3033,64 @@ enum mrq_bwmgr_int_cmd {\n \tCMD_BWMGR_INT_QUERY_ABI = 1,\n \n \t/**\n-\t * @brief Determine and set dram rate to satisfy iso/niso bw request\n+\t * @brief Determine and set DRAM rate to satisfy ISO/NISO bandwidth requests.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: request succeeded.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t *          set_frequency in @ref cmd_bwmgr_int_calc_and_set_response\n-\t *          will not be set.\n-\t * *  -#BPMP_ENOTSUP: Requested bw is not available.\n-\t *          set_frequency in @ref cmd_bwmgr_int_calc_and_set_response\n-\t *          will be current dram-clk rate.\n+\t * mrq_response::err is defined as:\n+\t *\n+\t * |Value            |Description                                                                                                     |\n+\t * |-----------------|----------------------------------------------------------------------------------------------------------------|\n+\t * |0                |Request succeeded.                                                                                              |\n+\t * |-#BPMP_EINVAL    |Invalid request parameters, cmd_bwmgr_int_calc_and_set_response::rate is not set.                               |\n+\t * |-#BPMP_ENOTSUP   |Requested bandwidth is not available, cmd_bwmgr_int_calc_and_set_response::rate is the current DRAM clock rate. |\n+\t * |<0               |Any other internal error.                                                                                       |\n \t */\n \tCMD_BWMGR_INT_CALC_AND_SET = 2,\n \n \t/**\n-\t * @brief Set a max DRAM frequency for the bandwidth-manager\n+\t * @brief Set a max DRAM frequency for the bandwidth manager.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: request succeeded.\n-\t * *  -#BPMP_ENOTSUP: Requested cap frequency is not possible.\n+\t * mrq_response::err is defined as:\n+\t *\n+\t * |Value            |Description                               |\n+\t * |-----------------|------------------------------------------|\n+\t * |0                |Request succeeded.                        |\n+\t * |-#BPMP_ENOTSUP   |Requested cap frequency is not possible.  |\n+\t * |<0               |Any other internal error.                 |\n+\t */\n+\tCMD_BWMGR_INT_CAP_SET = 3,\n+\n+\t/**\n+\t * @brief Obtain the maximum amount of bandwidth currently allocatable\n+\t * to the requesting client.\n+\t *\n+\t * mrq_response::err is defined as:\n+\t *\n+\t * |Value            |Description                               |\n+\t * |-----------------|------------------------------------------|\n+\t * |0                |Request succeeded.                        |\n+\t * |-#BPMP_EINVAL    |Invalid request parameters.               |\n+\t * |<0               |Any other internal error.                 |\n+\t */\n+\tCMD_BWMGR_INT_CURR_AVAILABLE_BW = 4,\n+\t/**\n+\t * @brief Get the last request made by the client.\n+\t *\n+\t * mrq_response::err is defined as:\n+\t *\n+\t * |Value            |Description                               |\n+\t * |-----------------|------------------------------------------|\n+\t * |0                |Request succeeded.                        |\n+\t * |-#BPMP_EINVAL    |Invalid request parameters.               |\n+\t * |<0               |Any other internal error.                 |\n \t */\n-\tCMD_BWMGR_INT_CAP_SET = 3\n+\tCMD_BWMGR_INT_GET_LAST_REQUEST = 5,\n };\n \n-/*\n- * request structure for request type CMD_BWMGR_QUERY_ABI\n- *\n- * type: Request type for which to check existence.\n+/**\n+ * @brief Request payload for #MRQ_BWMGR_INT sub-command #CMD_BWMGR_INT_QUERY_ABI\n  */\n struct cmd_bwmgr_int_query_abi_request {\n-\t/* @brief request type determined by @ref mrq_bwmgr_int_cmd */\n+\t/** @brief Sub-command identifier from @ref mrq_bwmgr_int_cmd. */\n \tuint32_t type;\n } BPMP_ABI_PACKED;\n \n@@ -2373,87 +3106,168 @@ struct cmd_bwmgr_int_query_abi_request {\n \n /** @} bwmgr_int_unit_type */\n \n-/*\n- * request data for request type CMD_BWMGR_INT_CALC_AND_SET\n+/**\n+ * @brief Request payload for #MRQ_BWMGR_INT sub-command #CMD_BWMGR_INT_CALC_AND_SET\n  */\n struct cmd_bwmgr_int_calc_and_set_request {\n-\t/* @brief bwmgr client ID @ref bpmp_bwmgr_ids */\n+\t/** @brief BWGMR client ID from @ref bpmp_bwmgr_ids */\n \tuint32_t client_id;\n-\t/* @brief average niso bw usage in kBps requested by client. */\n+\t/** @brief Average NISO bandwidth usage in kBps requested by client. */\n \tuint32_t niso_bw;\n-\t/*\n-\t * @brief average iso bw usage in kBps requested by client.\n-\t *  Value is ignored if client is niso. Determined by client_id.\n+\t/**\n+\t * @brief Average ISO bandwidth usage in kBps requested by client.\n+\t *\n+\t * Value is ignored if client is NISO as determined by #client_id.\n \t */\n \tuint32_t iso_bw;\n-\t/*\n-\t * @brief memory clock floor requested by client.\n-\t *  Unit determined by floor_unit.\n+\t/**\n+\t * @brief Memory clock floor requested by client, unit of the value\n+\t *        is determined by #floor_unit -field.\n \t */\n \tuint32_t mc_floor;\n-\t/*\n-\t * @brief toggle to determine the unit-type of floor value.\n-\t *  See @ref bwmgr_int_unit_type definitions for unit-type mappings.\n+\t/**\n+\t * @brief Value set to determine the unit of the #mc_floor value:\n+\t *\n+\t * | Value                 | Unit                 |\n+\t * |-----------------------|----------------------|\n+\t * | #BWMGR_INT_UNIT_KBPS  | Kilobytes per second |\n+\t * | #BWMGR_INT_UNIT_KHZ   | Kilohertz            |\n \t */\n \tuint8_t floor_unit;\n } BPMP_ABI_PACKED;\n \n-struct cmd_bwmgr_int_cap_set_request {\n-\t/* @brief requested cap frequency in Hz. */\n+/**\n+ * @brief Response payload for #MRQ_BWMGR_INT sub-command #CMD_BWMGR_INT_CALC_AND_SET\n+ */\n+struct cmd_bwmgr_int_calc_and_set_response {\n+\t/** @brief Currently set memory clock frequency in Hz */\n \tuint64_t rate;\n } BPMP_ABI_PACKED;\n \n-/*\n- * response data for request type CMD_BWMGR_CALC_AND_SET\n+/**\n+ * @brief Request payload for #MRQ_BWMGR_INT sub-command #CMD_BWMGR_INT_CAP_SET\n  */\n-struct cmd_bwmgr_int_calc_and_set_response {\n-\t/* @brief current set memory clock frequency in Hz */\n+struct cmd_bwmgr_int_cap_set_request {\n+\t/** @brief Requested cap frequency in Hz. */\n \tuint64_t rate;\n } BPMP_ABI_PACKED;\n \n-/*\n- * @brief Request with #MRQ_BWMGR_INT\n+/**\n+ * @brief Request payload for #MRQ_BWMGR_INT sub-command #CMD_BWMGR_INT_CURR_AVAILABLE_BW\n+ */\n+struct cmd_bwmgr_int_curr_available_bw_request {\n+\t/** @brief BWMGR client ID from @ref bpmp_bwmgr_ids */\n+\tuint32_t id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for #MRQ_BWMGR_INT sub-command #CMD_BWMGR_INT_CURR_AVAILABLE_BW\n+ */\n+struct cmd_bwmgr_int_curr_available_bw_response {\n+\t/** @brief Current cap frequency in KHz. */\n+\tuint64_t cap_rate;\n+\t/** @brief Currently available bandwidth for the requesting client\n+\t * to allocate in KBps.\n+\t */\n+\tuint64_t available_bw;\n+} BPMP_ABI_PACKED;\n+\n+struct cmd_bwmgr_int_get_last_request_request {\n+\t/** @brief BWMGR client ID from @ref bpmp_bwmgr_ids */\n+\tuint32_t id;\n+\t/**\n+\t * @brief Value set to determine the unit of the returned mc_floor value:\n+\t *\n+\t * | Value                 | Unit                 |\n+\t * |-----------------------|----------------------|\n+\t * | #BWMGR_INT_UNIT_KBPS  | Kilobytes per second |\n+\t * | #BWMGR_INT_UNIT_KHZ   | Kilohertz            |\n+\t */\n+\tuint8_t floor_unit;\n+} BPMP_ABI_PACKED;\n+\n+struct cmd_bwmgr_int_get_last_request_response {\n+\t/** @brief BWGMR client ID from @ref bpmp_bwmgr_ids */\n+\tuint32_t client_id;\n+\t/** @brief Average NISO bandwidth usage in kBps requested by client. */\n+\tuint32_t niso_bw;\n+\t/**\n+\t * @brief Average ISO bandwidth usage in kBps requested by client.\n+\t */\n+\tuint32_t iso_bw;\n+\t/**\n+\t * @brief Memory clock floor requested by client, unit of the value\n+\t *        is determined by #floor_unit -field.\n+\t */\n+\tuint32_t mc_floor;\n+\t/**\n+\t * @brief Value set to determine the unit of the #mc_floor value:\n+\t *\n+\t * | Value                 | Unit                 |\n+\t * |-----------------------|----------------------|\n+\t * | #BWMGR_INT_UNIT_KBPS  | Kilobytes per second |\n+\t * | #BWMGR_INT_UNIT_KHZ   | Kilohertz            |\n+\t */\n+\tuint8_t floor_unit;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_BWMGR_INT -command.\n  *\n+ * |Sub-command                      |Payload                                  |\n+ * |---------------------------------|-----------------------------------------|\n+ * |#CMD_BWMGR_INT_QUERY_ABI         |#cmd_bwmgr_int_query_abi_request         |\n+ * |#CMD_BWMGR_INT_CALC_AND_SET      |#cmd_bwmgr_int_calc_and_set_request      |\n+ * |#CMD_BWMGR_INT_CAP_SET           |#cmd_bwmgr_int_cap_set_request           |\n+ * |#CMD_BWMGR_INT_GET_LAST_REQUEST  |#cmd_bwmgr_int_get_last_request_request  |\n  *\n- * |sub-command                 |payload                            |\n- * |----------------------------|-----------------------------------|\n- * |CMD_BWMGR_INT_QUERY_ABI     | cmd_bwmgr_int_query_abi_request   |\n- * |CMD_BWMGR_INT_CALC_AND_SET  | cmd_bwmgr_int_calc_and_set_request|\n- * |CMD_BWMGR_INT_CAP_SET       | cmd_bwmgr_int_cap_set_request     |\n+ * The following additional sub-commands are supported on T264 platforms:\n  *\n+ * |Sub-command                      |Payload                                  |\n+ * |---------------------------------|-----------------------------------------|\n+ * |#CMD_BWMGR_INT_CURR_AVAILABLE_BW |#cmd_bwmgr_int_curr_available_bw_request |\n  */\n struct mrq_bwmgr_int_request {\n+\t/** @brief Sub-command identifier from @ref mrq_bwmgr_int_cmd. */\n \tuint32_t cmd;\n \tunion {\n \t\tstruct cmd_bwmgr_int_query_abi_request query_abi;\n \t\tstruct cmd_bwmgr_int_calc_and_set_request bwmgr_calc_set_req;\n \t\tstruct cmd_bwmgr_int_cap_set_request bwmgr_cap_set_req;\n+\t\tstruct cmd_bwmgr_int_curr_available_bw_request bwmgr_curr_available_bw_req;\n+\t\tstruct cmd_bwmgr_int_get_last_request_request bwmgr_get_last_request_req;\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/*\n- * @brief Response to MRQ_BWMGR_INT\n+/**\n+ * @brief Response payload for the #MRQ_BWMGR_INT -command.\n  *\n- * |sub-command                 |payload                                |\n- * |----------------------------|---------------------------------------|\n- * |CMD_BWMGR_INT_CALC_AND_SET  | cmd_bwmgr_int_calc_and_set_response   |\n+ * |Sub-command                      |Payload                                   |\n+ * |---------------------------------|------------------------------------------|\n+ * |#CMD_BWMGR_INT_CALC_AND_SET      |#cmd_bwmgr_int_calc_and_set_response      |\n+ * |#CMD_BWMGR_INT_GET_LAST_REQUEST  |#cmd_bwmgr_int_get_last_request_response  |\n+ *\n+ * The following additional sub-commands are supported on T264 platforms:\n+ * |Sub-command                      |Payload                                   |\n+ * |---------------------------------|------------------------------------------|\n+ * |#CMD_BWMGR_INT_CURR_AVAILABLE_BW |#cmd_bwmgr_int_curr_available_bw_response |\n  */\n struct mrq_bwmgr_int_response {\n \tunion {\n \t\tstruct cmd_bwmgr_int_calc_and_set_response bwmgr_calc_set_resp;\n+\t\tstruct cmd_bwmgr_int_curr_available_bw_response bwmgr_curr_available_bw_resp;\n+\t\tstruct cmd_bwmgr_int_get_last_request_response bwmgr_get_last_request_resp;\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n /** @} BWMGR_INT */\n-/** @endcond (bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (!bpmp_safe && (bpmp_t234 || bpmp_t238 || bpmp_t264))\n  * @ingroup MRQ_Codes\n  * @def MRQ_ISO_CLIENT\n  * @brief ISO client requests\n  *\n- * * Platforms: T234 onwards\n- * @cond (bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_iso_client_request\n@@ -2463,148 +3277,178 @@ struct mrq_bwmgr_int_response {\n  * @{\n  */\n \n+/**\n+ * @brief Sub-command identifiers for #MRQ_ISO_CLIENT.\n+ */\n enum mrq_iso_client_cmd {\n \t/**\n-\t * @brief Check whether the BPMP driver supports the specified\n-\t * request type\n+\t * @brief Check whether BPMP-FW supports a specified\n+\t *        #MRQ_ISO_CLIENT sub-command.\n \t *\n \t * mrq_response::err is 0 if the specified request is\n \t * supported and -#BPMP_ENODEV otherwise.\n \t */\n \tCMD_ISO_CLIENT_QUERY_ABI = 0,\n \n-\t/*\n-\t * @brief check for legal LA for the iso client. Without programming\n-\t * LA MC registers, calculate and ensure that legal LA is possible for\n-\t * iso bw requested by the ISO client.\n+\t/**\n+\t * @brief Determine legal LA for ISO client.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: check la succeeded.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t * *  -#BPMP_EFAULT: Legal LA is not possible for client requested iso_bw\n+\t * Without programming LA MC registers, calculate and ensure that\n+\t * a legal LA is possible for the ISO bandwidth requested by the\n+\t * ISO client.\n+\t *\n+\t * mrq_response::err for this sub-command is defined as:\n+\t *\n+\t * | Value         | Description                                                  |\n+\t * |---------------|--------------------------------------------------------------|\n+\t * | 0             | Request successful and legal LA is possible.                 |\n+\t * | -#BPMP_EINVAL | Invalid request parameters.                                  |\n+\t * | -#BPMP_EFAULT | Legal LA is not possible for client requested ISO bandwidth. |\n+\t * | <0            | Any other internal error.                                    |\n \t */\n \tCMD_ISO_CLIENT_CALCULATE_LA = 1,\n \n-\t/*\n-\t * @brief set LA for the iso client. Calculate and program the LA/PTSA\n-\t * MC registers corresponding to the client making bw request\n+\t/**\n+\t * @brief Set LA for ISO client.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: set la succeeded.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n-\t * *  -#BPMP_EFAULT: Failed to calculate or program MC registers.\n+\t * Calculate and program the LA/PTSA MC registers corresponding to the\n+\t * ISO client making the bandwidth request.\n+\t *\n+\t * mrq_response::err for this sub-command is defined as:\n+\t *\n+\t * | Value         | Description                                  |\n+\t * |---------------|----------------------------------------------|\n+\t * | 0             | Setting LA succeeded.                        |\n+\t * | -#BPMP_EINVAL | Invalid request parameters.                  |\n+\t * | -#BPMP_EFAULT | Failed to calculate or program MC registers. |\n+\t * | <0            | Any other internal error.                    |\n \t */\n \tCMD_ISO_CLIENT_SET_LA = 2,\n \n-\t/*\n-\t * @brief Get max possible bw for iso client\n+\t/**\n+\t * @brief Get maximum possible bandwidth for ISO client.\n \t *\n-\t * mrq_response::err is\n-\t * *  0: get_max_bw succeeded.\n-\t * *  -#BPMP_EINVAL: Invalid request parameters.\n+\t * mrq_response::err for this sub-command is defined as:\n+\t *\n+\t * | Value         | Description                                  |\n+\t * |---------------|----------------------------------------------|\n+\t * | 0             | Operation successful.                        |\n+\t * | -#BPMP_EINVAL | Invalid request parameters.                  |\n+\t * | <0            | Any other internal error.                    |\n \t */\n \tCMD_ISO_CLIENT_GET_MAX_BW = 3\n };\n \n-/*\n- * request data for request type CMD_ISO_CLIENT_QUERY_ABI\n- *\n- * type: Request type for which to check existence.\n+/**\n+ * @brief Request payload for #MRQ_ISO_CLIENT sub-command #CMD_ISO_CLIENT_QUERY_ABI\n  */\n struct cmd_iso_client_query_abi_request {\n+\t/**\n+\t * @brief Sub-command identifier from @ref mrq_iso_client_cmd\n+\t *        for which to check existence.\n+\t */\n \tuint32_t type;\n } BPMP_ABI_PACKED;\n \n-/*\n- * request data for request type CMD_ISO_CLIENT_CALCULATE_LA\n- *\n- * id: client ID in @ref bpmp_bwmgr_ids\n- * bw: bw requested in kBps by client ID.\n- * init_bw_floor: initial dram_bw_floor in kBps passed by client ID.\n- * ISO client will perform mempool allocation and DVFS buffering based\n- * on this dram_bw_floor.\n+/**\n+ * @brief Request payload #MRQ_ISO_CLIENT sub-command #CMD_ISO_CLIENT_CALCULATE_LA\n  */\n struct cmd_iso_client_calculate_la_request {\n+\t/** @brief BWMGR client ID from @ref bpmp_bwmgr_ids */\n \tuint32_t id;\n+\t/** @brief Bandwidth requested in kBps for the client specified in #id. */\n \tuint32_t bw;\n+\t/**\n+\t * @brief Initial DRAM bandwidth floor in kBps for the ISO client specified in #id.\n+\t *\n+\t * ISO client will perform mempool allocation and DVFS buffering based\n+\t * on this value.\n+\t */\n \tuint32_t init_bw_floor;\n } BPMP_ABI_PACKED;\n \n-/*\n- * request data for request type CMD_ISO_CLIENT_SET_LA\n- *\n- * id: client ID in @ref bpmp_bwmgr_ids\n- * bw: bw requested in kBps by client ID.\n- * final_bw_floor: final dram_bw_floor in kBps.\n- * Sometimes the initial dram_bw_floor passed by ISO client may need to be\n- * updated by considering higher dram freq's. This is the final dram_bw_floor\n- * used to calculate and program MC registers.\n+/**\n+ * @brief Response payload for #MRQ_ISO_CLIENT sub-command #CMD_ISO_CLIENT_CALCULATE_LA\n+ */\n+struct cmd_iso_client_calculate_la_response {\n+\t/** @brief Minimum DRAM rate in kHz at which a legal LA is possible */\n+\tuint32_t la_rate_floor;\n+\t/**\n+\t * Minimum DRAM frequency in kHz required to satisfy this clients\n+\t * ISO bandwidth request, assuming all other ISO clients are inactive.\n+\t */\n+\tuint32_t iso_client_only_rate;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for #MRQ_ISO_CLIENT sub-command #CMD_ISO_CLIENT_SET_LA\n  */\n struct cmd_iso_client_set_la_request {\n+\t/** @brief BMWGR client ID from @ref bpmp_bwmgr_ids */\n \tuint32_t id;\n+\t/** @brief Bandwidth requested in kBps for the client specified in #id. */\n \tuint32_t bw;\n+\t/**\n+\t * @brief Final DRAM bandwidth floor in kBps.\n+\t *\n+\t * Sometimes the initial cmd_iso_client_calculate_la_request::dram_bw_floor\n+\t * passed by ISO client may need to be updated by considering higher\n+\t * DRAM frequencies. This is the final DRAM bandwidth floor value used\n+\t * to calculate and program MC registers.\n+\t */\n \tuint32_t final_bw_floor;\n } BPMP_ABI_PACKED;\n \n-/*\n- * request data for request type CMD_ISO_CLIENT_GET_MAX_BW\n- *\n- * id: client ID in @ref bpmp_bwmgr_ids\n+/**\n+ * @brief Request payload for #MRQ_ISO_CLIENT sub-command #CMD_ISO_CLIENT_GET_MAX_BW\n  */\n struct cmd_iso_client_get_max_bw_request {\n+\t/** @brief BWMGR client ID from @ref bpmp_bwmgr_ids */\n \tuint32_t id;\n } BPMP_ABI_PACKED;\n \n-/*\n- * response data for request type CMD_ISO_CLIENT_CALCULATE_LA\n- *\n- * la_rate_floor: minimum dram_rate_floor in kHz at which a legal la is possible\n- * iso_client_only_rate: Minimum dram freq in kHz required to satisfy this clients\n- * iso bw request, assuming all other iso clients are inactive\n- */\n-struct cmd_iso_client_calculate_la_response {\n-\tuint32_t la_rate_floor;\n-\tuint32_t iso_client_only_rate;\n-} BPMP_ABI_PACKED;\n-\n /**\n  * @brief Used by @ref cmd_iso_client_get_max_bw_response\n  */\n struct iso_max_bw {\n-\t/* @brief dram frequency in kHz */\n+\t/** @brief dram frequency in kHz */\n \tuint32_t freq;\n-\t/* @brief max possible iso-bw in kBps */\n+\t/** @brief max possible iso-bw in kBps */\n \tuint32_t iso_bw;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Size of the cmd_iso_client_get_max_bw_response::pairs -array.\n+ */\n #define ISO_MAX_BW_MAX_SIZE\t14U\n-/*\n- * response data for request type CMD_ISO_CLIENT_GET_MAX_BW\n+\n+/**\n+ * @brief Response payload for #MRQ_ISO_CLIENT sub-command #CMD_ISO_CLIENT_GET_MAX_BW\n  */\n struct cmd_iso_client_get_max_bw_response {\n-\t/* @brief The number valid entries in iso_max_bw pairs */\n+\t/** @brief The number valid entries in iso_max_bw pairs */\n \tuint32_t num_pairs;\n-\t/* @brief max ISOBW <dram freq, max bw> information */\n+\t/** @brief max ISOBW <dram freq, max bw> information */\n \tstruct iso_max_bw pairs[ISO_MAX_BW_MAX_SIZE];\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Request with #MRQ_ISO_CLIENT\n- *\n- * Used by the sender of an #MRQ_ISO_CLIENT message.\n+ * @brief Request payload for #MRQ_ISO_CLIENT command.\n  *\n- * |sub-command                          |payload                                 |\n- * |------------------------------------ |----------------------------------------|\n- * |CMD_ISO_CLIENT_QUERY_ABI\t\t |cmd_iso_client_query_abi_request        |\n- * |CMD_ISO_CLIENT_CALCULATE_LA\t\t |cmd_iso_client_calculate_la_request     |\n- * |CMD_ISO_CLIENT_SET_LA\t\t |cmd_iso_client_set_la_request           |\n- * |CMD_ISO_CLIENT_GET_MAX_BW\t\t |cmd_iso_client_get_max_bw_request       |\n+ * Each #MRQ_ISO_CLIENT -command is expected to include a sub-command specific\n+ * payload as defined in table below:\n  *\n+ * |Sub-command                  |Request payload                       |\n+ * |-----------------------------|--------------------------------------|\n+ * |#CMD_ISO_CLIENT_QUERY_ABI    |#cmd_iso_client_query_abi_request     |\n+ * |#CMD_ISO_CLIENT_CALCULATE_LA |#cmd_iso_client_calculate_la_request  |\n+ * |#CMD_ISO_CLIENT_SET_LA       |#cmd_iso_client_set_la_request        |\n+ * |#CMD_ISO_CLIENT_GET_MAX_BW   |#cmd_iso_client_get_max_bw_request    |\n  */\n-\n struct mrq_iso_client_request {\n-\t/* Type of request. Values listed in enum mrq_iso_client_cmd */\n+\t/** @brief Sub-command identifier from @ref mrq_iso_client_cmd. */\n \tuint32_t cmd;\n+\n \tunion {\n \t\tstruct cmd_iso_client_query_abi_request query_abi;\n \t\tstruct cmd_iso_client_calculate_la_request calculate_la_req;\n@@ -2614,20 +3458,20 @@ struct mrq_iso_client_request {\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response to MRQ_ISO_CLIENT\n+ * @brief Response payload for #MRQ_ISO_CLIENT command.\n  *\n- * Each sub-command supported by @ref mrq_iso_client_request may return\n- * sub-command-specific data. Some do and some do not as indicated in\n- * the following table\n+ * Some of the sub-commands supported by #MRQ_ISO_CLIENT may return\n+ * a sub-command -specific payload in the MRQ response as defined in table\n+ * below:\n  *\n- * |sub-command                  |payload                             |\n- * |---------------------------- |------------------------------------|\n- * |CMD_ISO_CLIENT_CALCULATE_LA  |cmd_iso_client_calculate_la_response|\n- * |CMD_ISO_CLIENT_SET_LA        |N/A                                 |\n- * |CMD_ISO_CLIENT_GET_MAX_BW    |cmd_iso_client_get_max_bw_response  |\n+ * |Sub-command                  |Response payload                      |\n+ * |---------------------------- |--------------------------------------|\n+ * |#CMD_ISO_CLIENT_QUERY_ABI    |-                                     |\n+ * |#CMD_ISO_CLIENT_CALCULATE_LA |#cmd_iso_client_calculate_la_response |\n+ * |#CMD_ISO_CLIENT_SET_LA       |-                                     |\n+ * |#CMD_ISO_CLIENT_GET_MAX_BW   |#cmd_iso_client_get_max_bw_response   |\n  *\n  */\n-\n struct mrq_iso_client_response {\n \tunion {\n \t\tstruct cmd_iso_client_calculate_la_response calculate_la_resp;\n@@ -2636,15 +3480,13 @@ struct mrq_iso_client_response {\n } BPMP_ABI_PACKED;\n \n /** @} ISO_CLIENT */\n-/** @endcond (bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (!bpmp_t186)\n  * @ingroup MRQ_Codes\n  * @def MRQ_CPU_NDIV_LIMITS\n- * @brief CPU freq. limits in ndiv\n+ * @brief Return CPU cluster NDIV limits\n  *\n- * * Platforms: T194 onwards\n- * @cond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_cpu_ndiv_limits_request\n@@ -2654,10 +3496,10 @@ struct mrq_iso_client_response {\n  */\n \n /**\n- * @brief Request for ndiv limits of a cluster\n+ * @brief Request payload for the #MRQ_CPU_NDIV_LIMITS -command\n  */\n struct mrq_cpu_ndiv_limits_request {\n-\t/** @brief Enum cluster_id */\n+\t/** @brief Logical CPU cluster identifier */\n \tuint32_t cluster_id;\n } BPMP_ABI_PACKED;\n \n@@ -2678,15 +3520,14 @@ struct mrq_cpu_ndiv_limits_response {\n } BPMP_ABI_PACKED;\n \n /** @} CPU */\n-/** @endcond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+\n+/** @cond (bpmp_t194)\n  * @ingroup MRQ_Codes\n  * @def MRQ_CPU_AUTO_CC3\n  * @brief Query CPU cluster auto-CC3 configuration\n  *\n- * * Platforms: T194\n- * @cond bpmp_t194\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_cpu_auto_cc3_request\n@@ -2702,15 +3543,15 @@ struct mrq_cpu_ndiv_limits_response {\n  */\n \n /**\n- * @brief Request for auto-CC3 configuration of a cluster\n+ * @brief Request payload for the #MRQ_CPU_AUTO_CC3 -command\n  */\n struct mrq_cpu_auto_cc3_request {\n-\t/** @brief Enum cluster_id (logical cluster id, known to CCPLEX s/w) */\n+\t/** @brief Logical CPU cluster ID */\n \tuint32_t cluster_id;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response to #MRQ_CPU_AUTO_CC3\n+ * @brief Response payload for the #MRQ_CPU_AUTO_CC3 -command\n  */\n struct mrq_cpu_auto_cc3_response {\n \t/**\n@@ -2724,9 +3565,9 @@ struct mrq_cpu_auto_cc3_response {\n } BPMP_ABI_PACKED;\n \n /** @} CC3 */\n-/** @endcond bpmp_t194 */\n+/** @endcond */\n \n-/**\n+/** @cond (bpmp_t186 || bpmp_t194 || bpmp_t234)\n  * @ingroup MRQ_Codes\n  * @def MRQ_RINGBUF_CONSOLE\n  * @brief A ring buffer debug console for BPMP\n@@ -2811,7 +3652,9 @@ struct cmd_ringbuf_console_query_abi_resp {\n  */\n struct cmd_ringbuf_console_read_req {\n \t/**\n-\t * @brief Number of bytes requested to be read from the BPMP TX buffer\n+\t * @brief Number of bytes requested to be read from the BPMP TX buffer.\n+\t *\n+\t * Valid range is [0, #MRQ_RINGBUF_CONSOLE_MAX_READ_LEN]\n \t */\n \tuint8_t len;\n } BPMP_ABI_PACKED;\n@@ -2823,7 +3666,11 @@ struct cmd_ringbuf_console_read_req {\n struct cmd_ringbuf_console_read_resp {\n \t/** @brief The actual data read from the BPMP TX buffer */\n \tuint8_t data[MRQ_RINGBUF_CONSOLE_MAX_READ_LEN];\n-\t/** @brief Number of bytes in cmd_ringbuf_console_read_resp::data */\n+\t/**\n+\t * @brief Number of bytes in cmd_ringbuf_console_read_resp::data\n+\t *\n+\t * Valid range is [0, #MRQ_RINGBUF_CONSOLE_MAX_WRITE_LEN]\n+\t */\n \tuint8_t len;\n } BPMP_ABI_PACKED;\n \n@@ -2904,14 +3751,13 @@ union mrq_ringbuf_console_bpmp_to_host_response {\n } BPMP_ABI_PACKED;\n \n /** @} RingbufConsole */\n+/** @endcond */\n \n-/**\n+/** @cond (!bpmp_t186 && !(bpmp_safe && bpmp_t234))\n  * @ingroup MRQ_Codes\n  * @def MRQ_STRAP\n  * @brief Set a strap value controlled by BPMP\n  *\n- * * Platforms: T194 onwards\n- * @cond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_strap_request\n@@ -2925,10 +3771,14 @@ union mrq_ringbuf_console_bpmp_to_host_response {\n  * deasserted.\n  *\n  * BPMP owns registers which act as straps to various units. It\n- * exposes limited control of those straps via #MRQ_STRAP.\n+ * exposes limited control of those registers via #MRQ_STRAP.\n  *\n  * @{\n  */\n+\n+/**\n+ * @brief Sub-command identifiers for the #MRQ_STRAP -command.\n+ */\n enum mrq_strap_cmd {\n \t/** @private */\n \tSTRAP_RESERVED = 0,\n@@ -2937,27 +3787,31 @@ enum mrq_strap_cmd {\n };\n \n /**\n- * @brief Request with #MRQ_STRAP\n+ * @brief Request payload for the #MRQ_STRAP -command.\n  */\n struct mrq_strap_request {\n-\t/** @brief @ref mrq_strap_cmd */\n+\t/** @brief Sub-command identifier from @ref mrq_strap_cmd */\n \tuint32_t cmd;\n-\t/** @brief Strap ID from @ref Strap_Identifiers */\n+\t/**\n+\t * @if (bpmp_t234 || bpmp_th500 || bpmp_t264)\n+\t * @brief Strap ID from @ref bpmp_strap_ids\n+\t * @else\n+\t * @brief Strap ID (undefined)\n+\t * @endif\n+\t */\n \tuint32_t id;\n-\t/** @brief Desired value for strap (if cmd is #STRAP_SET) */\n+\t/** @brief Desired value for strap (if #cmd is #STRAP_SET) */\n \tuint32_t value;\n } BPMP_ABI_PACKED;\n \n /** @} Strap */\n-/** @endcond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (bpmp_t194 || bpmp_t234 || bpmp_th500)\n  * @ingroup MRQ_Codes\n  * @def MRQ_UPHY\n  * @brief Perform a UPHY operation\n  *\n- * * Platforms: T194 onwards\n- * @cond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_uphy_request\n@@ -2966,52 +3820,124 @@ struct mrq_strap_request {\n  * @addtogroup UPHY\n  * @{\n  */\n-enum {\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_UPHY.\n+ */\n+enum mrq_uphy_cmd {\n+\t/** @brief Trigger PCIE lane margining procedure. */\n \tCMD_UPHY_PCIE_LANE_MARGIN_CONTROL = 1,\n+\t/** @brief Return PCIE lane margining status. */\n \tCMD_UPHY_PCIE_LANE_MARGIN_STATUS = 2,\n+\t/** @brief Initialize PCIE EP PLL controller. */\n \tCMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT = 3,\n+\t/** @brief Set state of the PCIE RP/EP controller. */\n \tCMD_UPHY_PCIE_CONTROLLER_STATE = 4,\n+\t/** @brief Disable PCIE EP PLL controller. */\n \tCMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF = 5,\n+\n+\t/**\n+\t * @cond bpmp_t238\n+\t * @brief Initialize and enable UPHY display port.\n+\t */\n \tCMD_UPHY_DISPLAY_PORT_INIT = 6,\n+\t/** @brief Disable UPHY display port. */\n \tCMD_UPHY_DISPLAY_PORT_OFF = 7,\n+\t/** @brief Trigger sequence to restore XUSB DYN lanes during SC7 exit. */\n \tCMD_UPHY_XUSB_DYN_LANES_RESTORE = 8,\n+\t/** @endcond */\n+\n+\t/**\n+\t * @cond bpmp_th500\n+\t * @brief Perform UPHY Lane EOM scan.\n+\t */\n+\tCMD_UPHY_LANE_EOM_SCAN = 9,\n+\t/** @brief Config PCIe VDM with a given BDF ID. */\n+\tCMD_UPHY_PCIE_CONFIG_VDM = 10,\n+\t/** @endcond */\n+\n \tCMD_UPHY_MAX,\n };\n \n+/**\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_PCIE_LANE_MARGIN_CONTROL.\n+ */\n struct cmd_uphy_margin_control_request {\n-\t/** @brief Enable margin */\n+\t/**\n+\t * @brief Enable margin.\n+\t *\n+\t * Valid values:\n+\t * * Value 0 disables margin,\n+\t * * Value 1 enables margin.\n+\t */\n \tint32_t en;\n-\t/** @brief Clear the number of error and sections */\n+\t/**\n+\t * @brief Clear the number of error and sections.\n+\t *\n+\t * Valid values:\n+\t *\n+\t * * Value 0: Skip clear,\n+\t * * Value 1: Perform clear.\n+\t */\n \tint32_t clr;\n-\t/** @brief Set x offset (1's complement) for left/right margin type (y should be 0) */\n+\t/**\n+\t * @brief Set x offset (1's complement) for left/right margin type (y should be 0).\n+\t *\n+\t * Valid range is [0, 127]\n+\t */\n \tuint32_t x;\n-\t/** @brief Set y offset (1's complement) for left/right margin type (x should be 0) */\n+\t/**\n+\t * @brief Set y offset (1's complement) for left/right margin type (x should be 0)\n+\t *\n+\t * Valid range is [0, 63]\n+\t */\n \tuint32_t y;\n-\t/** @brief Set number of bit blocks for each margin section */\n+\t/**\n+\t * @brief Set number of bit blocks for each margin section.\n+\t *\n+\t * Valid range is [0, 15]\n+\t */\n \tuint32_t nblks;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_UPHY sub-command #CMD_UPHY_PCIE_LANE_MARGIN_STATUS.\n+ */\n struct cmd_uphy_margin_status_response {\n \t/** @brief Number of errors observed */\n \tuint32_t status;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT.\n+ */\n struct cmd_uphy_ep_controller_pll_init_request {\n \t/** @brief EP controller number, T194 valid: 0, 4, 5; T234 valid: 5, 6, 7, 10; T238 valid: 0 */\n \tuint8_t ep_controller;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_PCIE_CONTROLLER_STATE.\n+ */\n struct cmd_uphy_pcie_controller_state_request {\n \t/** @brief PCIE controller number, T194 valid: 0-4; T234 valid: 0-10; T238 valid: 0-3 */\n \tuint8_t pcie_controller;\n+\t/** @brief Nonzero value to enable controller, zero value to disable */\n \tuint8_t enable;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF.\n+ */\n struct cmd_uphy_ep_controller_pll_off_request {\n \t/** @brief EP controller number, T194 valid: 0, 4, 5; T234 valid: 5, 6, 7, 10; T238 valid: 0 */\n \tuint8_t ep_controller;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @cond bpmp_t238\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_DISPLAY_PORT_INIT.\n+ */\n struct cmd_uphy_display_port_init_request {\n \t/** @brief DisplayPort link rate, T238 valid: 1620, 2700, 5400, 8100, 2160, 2430, 3240, 4320, 6750 */\n \tuint16_t link_rate;\n@@ -3019,37 +3945,90 @@ struct cmd_uphy_display_port_init_request {\n \tuint16_t lanes_bitmap;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_XUSB_DYN_LANES_RESTORE.\n+ */\n struct cmd_uphy_xusb_dyn_lanes_restore_request {\n \t/** @brief 1: lane 0; 2: lane 1; 3: lane 0 and 1 */\n \tuint16_t lanes_bitmap;\n } BPMP_ABI_PACKED;\n+/** @endcond */\n+\n+/**\n+ * @cond bpmp_th500\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_LANE_EOM_SCAN\n+ */\n+struct cmd_uphy_lane_eom_scan_request {\n+\t/** @brief UPHY brick number, valid: 0-5 */\n+\tuint32_t brick;\n+\t/** @brief UPHY lane number, valid: 0-15 for UPHY0-UPHY3, 0-1 for UPHY4-UPHY5 */\n+\tuint32_t lane;\n+\t/** @brief Perform EOM for PCIE GEN5 link: 1 for yes, 0 for no. */\n+\tuint32_t pcie_gen5;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for #MRQ_UPHY sub-command #CMD_UPHY_LANE_EOM_SCAN\n+ */\n+struct cmd_uphy_lane_eom_scan_response {\n+\tuint32_t data;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for #MRQ_UPHY sub-command #CMD_UPHY_PCIE_CONFIG_VDM\n+ */\n+struct cmd_uphy_pcie_config_vdm_request {\n+\tuint8_t pcie_controller;\n+\t/**\n+\t * @brief Bus/Dev/Func ID to be programmed for VDM.\n+\t *\n+\t * - bits[15..8] Bus\n+\t * - bits[7..3]  Dev\n+\t * - bit [2..0]  Func\n+\t */\n+\tuint16_t bdf;\n+} BPMP_ABI_PACKED;\n+/** @endcond */\n \n /**\n  * @ingroup UPHY\n- * @brief Request with #MRQ_UPHY\n+ * @brief Request payload for the #MRQ_UPHY -command.\n  *\n  * Used by the sender of an #MRQ_UPHY message to control UPHY.\n  * The uphy_request is split into several sub-commands. CMD_UPHY_PCIE_LANE_MARGIN_STATUS\n  * requires no additional data. Others have a sub-command specific payload. Below table\n  * shows sub-commands with their corresponding payload data.\n  *\n- * |sub-command                          |payload                                 |\n- * |------------------------------------ |----------------------------------------|\n- * |CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    |uphy_set_margin_control                 |\n- * |CMD_UPHY_PCIE_LANE_MARGIN_STATUS     |                                        |\n- * |CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT |cmd_uphy_ep_controller_pll_init_request |\n- * |CMD_UPHY_PCIE_CONTROLLER_STATE       |cmd_uphy_pcie_controller_state_request  |\n- * |CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  |cmd_uphy_ep_controller_pll_off_request  |\n- * |CMD_UPHY_PCIE_DISPLAY_PORT_INIT      |cmd_uphy_display_port_init_request      |\n- * |CMD_UPHY_PCIE_DISPLAY_PORT_OFF       |                                        |\n- * |CMD_UPHY_XUSB_DYN_LANES_RESTORE      |cmd_uphy_xusb_dyn_lanes_restore_request |\n+ * |sub-command                           |payload                                  |\n+ * |--------------------------------------|-----------------------------------------|\n+ * |#CMD_UPHY_PCIE_LANE_MARGIN_CONTROL    |#cmd_uphy_margin_control_request         |\n+ * |#CMD_UPHY_PCIE_LANE_MARGIN_STATUS     |-                                        |\n+ * |#CMD_UPHY_PCIE_EP_CONTROLLER_PLL_INIT |#cmd_uphy_ep_controller_pll_init_request |\n+ * |#CMD_UPHY_PCIE_CONTROLLER_STATE       |#cmd_uphy_pcie_controller_state_request  |\n+ * |#CMD_UPHY_PCIE_EP_CONTROLLER_PLL_OFF  |#cmd_uphy_ep_controller_pll_off_request  |\n+ *\n+ * @cond bpmp_t238\n+ * The following additional sub-commands are supported on T238 platforms:\n+ *\n+ * |sub-command                           |payload                                  |\n+ * |--------------------------------------|-----------------------------------------|\n+ * |#CMD_UPHY_DISPLAY_PORT_INIT           |#cmd_uphy_display_port_init_request      |\n+ * |#CMD_UPHY_DISPLAY_PORT_OFF            |-                                        |\n+ * |#CMD_UPHY_XUSB_DYN_LANES_RESTORE      |#cmd_uphy_xusb_dyn_lanes_restore_request |\n+ * @endcond\n  *\n+ * @cond bpmp_th500\n+ * The following additional sub-commands are supported on TH500 platforms:\n+ * |sub-command                           |payload                                  |\n+ * |--------------------------------------|-----------------------------------------|\n+ * |#CMD_UPHY_LANE_EOM_SCAN               |#cmd_uphy_lane_eom_scan_request          |\n+ * |#CMD_UPHY_PCIE_CONFIG_VDM             |#cmd_uphy_pcie_config_vdm_request        |\n+ * @endcond\n  */\n-\n struct mrq_uphy_request {\n \t/** @brief Lane number. */\n \tuint16_t lane;\n-\t/** @brief Sub-command id. */\n+\t/** @brief Sub-command ID from @ref mrq_uphy_cmd. */\n \tuint16_t cmd;\n \n \tunion {\n@@ -3057,53 +4036,68 @@ struct mrq_uphy_request {\n \t\tstruct cmd_uphy_ep_controller_pll_init_request ep_ctrlr_pll_init;\n \t\tstruct cmd_uphy_pcie_controller_state_request controller_state;\n \t\tstruct cmd_uphy_ep_controller_pll_off_request ep_ctrlr_pll_off;\n+\t\t/** @cond bpmp_t238 */\n \t\tstruct cmd_uphy_display_port_init_request display_port_init;\n \t\tstruct cmd_uphy_xusb_dyn_lanes_restore_request xusb_dyn_lanes_restore;\n+\t\t/** @endcond */\n+\t\t/** @cond bpmp_th500 */\n+\t\tstruct cmd_uphy_lane_eom_scan_request lane_eom_scan;\n+\t\tstruct cmd_uphy_pcie_config_vdm_request pcie_vdm;\n+\t\t/** @endcond */\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n /**\n  * @ingroup UPHY\n- * @brief Response to MRQ_UPHY\n+ * @brief Response payload for the #MRQ_UPHY -command.\n  *\n  * Each sub-command supported by @ref mrq_uphy_request may return\n  * sub-command-specific data. Some do and some do not as indicated in\n  * the following table\n  *\n- * |sub-command                       |payload                 |\n- * |----------------------------      |------------------------|\n- * |CMD_UPHY_PCIE_LANE_MARGIN_CONTROL |                        |\n- * |CMD_UPHY_PCIE_LANE_MARGIN_STATUS  |uphy_get_margin_status  |\n+ * |sub-command                        |payload                          |\n+ * |-----------------------------------|---------------------------------|\n+ * |#CMD_UPHY_PCIE_LANE_MARGIN_CONTROL |-                                |\n+ * |#CMD_UPHY_PCIE_LANE_MARGIN_STATUS  |#cmd_uphy_margin_status_response |\n  *\n+ * @cond bpmp_th500\n+ * The following additional sub-commands are supported on TH500 platforms:\n+ * |sub-command                        |payload                          |\n+ * |-----------------------------------|---------------------------------|\n+ * |#CMD_UPHY_LANE_EOM_SCAN            |#cmd_uphy_lane_eom_scan_response |\n+ * |#CMD_UPHY_PCIE_CONFIG_VDM          |-                                |\n+ * @endcond\n  */\n-\n struct mrq_uphy_response {\n \tunion {\n \t\tstruct cmd_uphy_margin_status_response uphy_get_margin_status;\n+\t\t/** @cond bpmp_th500 */\n+\t\tstruct cmd_uphy_lane_eom_scan_response eom_status;\n+\t\t/** @endcond */\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n /** @} UPHY */\n-/** @endcond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500) */\n+/** @endcond */\n \n-/**\n+/** @cond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_t264)\n  * @ingroup MRQ_Codes\n  * @def MRQ_FMON\n- * @brief Perform a frequency monitor configuration operations\n+ * @brief Perform a frequency monitor configuration operation\n  *\n- * * Platforms: T194 onwards\n- * @cond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500)\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_fmon_request\n  * * Response Payload: @ref mrq_fmon_response\n- * @endcond (bpmp_t194 || bpmp_t234 || bpmp_t238 || bpmp_th500)\n  *\n  * @addtogroup FMON\n  * @{\n- * @cond (bpmp_t194 || bpmp_t234)\n  */\n-enum {\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_FMON\n+ */\n+enum mrq_fmon_cmd {\n \t/**\n \t * @brief Clamp FMON configuration to specified rate.\n \t *\n@@ -3111,62 +4105,80 @@ enum {\n \t * clamped, FMON configuration is preserved when clock rate\n \t * and/or state is changed.\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EACCES: FMON access error @n\n-\t * -#BPMP_EBADCMD if subcommand is not supported @n\n-\t * -#BPMP_EBADSLT: clamp FMON on cluster with auto-CC3 enabled @n\n-\t * -#BPMP_EBUSY: fmon is already clamped at different rate @n\n-\t * -#BPMP_EFAULT: self-diagnostic error @n\n-\t * -#BPMP_EINVAL: invalid FMON configuration @n\n-\t * -#BPMP_EOPNOTSUPP: not in production mode @n\n-\t * -#BPMP_ENODEV: invalid clk_id @n\n-\t * -#BPMP_ENOENT: no calibration data, uninitialized @n\n-\t * -#BPMP_ENOTSUP: avfs config not set @n\n-\t * -#BPMP_ENOSYS: clamp FMON on cluster clock w/ no NAFLL @n\n-\t * -#BPMP_ETIMEDOUT: operation timed out @n\n+\t * mrq_response::err for this sub-command is defined to be:\n+\t *\n+\t * | Value             | Description                                       |\n+\t * |-------------------|---------------------------------------------------|\n+\t * | 0                 | Operation was successful.                         |\n+\t * | -#BPMP_EBADCMD    | Subcommand is not supported.                      |\n+\t * | -#BPMP_EACCES     | FMON access error.                                |\n+\t * | -#BPMP_EBADSLT    | Clamp FMON on cluster with auto-CC3 enabled.      |\n+\t * | -#BPMP_EBUSY      | FMON is already clamped at different rate.        |\n+\t * | -#BPMP_EFAULT     | Self-diagnostic error detected.                   |\n+\t * | -#BPMP_EINVAL     | Invalid FMON configuration.                       |\n+\t * | -#BPMP_EOPNOTSUPP | Not in production mode.                           |\n+\t * | -#BPMP_ENODEV     | Invalid clock ID in mrq_fmon_request::cmd_and_id. |\n+\t * | -#BPMP_ENOENT     | No calibration data, uninitialized.               |\n+\t * | -#BPMP_ENOTSUP    | AVFS config not set.                              |\n+\t * | -#BPMP_ENOSYS     | Clamp FMON on cluster clock w/ no NAFLL.          |\n+\t * | -#BPMP_ETIMEDOUT  | Operation timed out.                              |\n \t */\n \tCMD_FMON_GEAR_CLAMP = 1,\n+\n \t/**\n \t * @brief Release clamped FMON configuration.\n \t *\n \t * Allow FMON configuration to follow monitored clock rate\n \t * and/or state changes.\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EBADCMD if subcommand is not supported @n\n-\t * -#BPMP_ENODEV: invalid clk_id @n\n-\t * -#BPMP_ENOENT: no calibration data, uninitialized @n\n-\t * -#BPMP_ENOTSUP: avfs config not set @n\n-\t * -#BPMP_EOPNOTSUPP: not in production mode @n\n+\t * mrq_response::err for this sub-command is defined to be:\n+\t *\n+\t * | Value             | Description                                       |\n+\t * |-------------------|---------------------------------------------------|\n+\t * | 0                 | Operation was successful.                         |\n+\t * | -#BPMP_EBADCMD    | Subcommand is not supported.                      |\n+\t * | -#BPMP_ENODEV     | Invalid clock ID in mrq_fmon_request::cmd_and_id. |\n+\t * | -#BPMP_ENOENT     | No calibration data, uninitialized.               |\n+\t * | -#BPMP_ENOTSUP    | AVFS config not set.                              |\n+\t * | -#BPMP_EOPNOTSUPP | Not in production mode.                           |\n \t */\n \tCMD_FMON_GEAR_FREE = 2,\n+\n \t/**\n-\t * @brief Return rate FMON is clamped at, or 0 if FMON is not\n-\t *         clamped.\n+\t * @brief Return rate FMON is clamped at, or 0 if FMON is not clamped.\n \t *\n-\t * Inherently racy, since clamp state can be changed\n-\t * concurrently. Useful for testing.\n+\t * Inherently racy, since clamp state can be changed concurrently,\n+\t * only provided and useful for testing purposes.\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EBADCMD if subcommand is not supported @n\n-\t * -#BPMP_ENODEV: invalid clk_id @n\n-\t * -#BPMP_ENOENT: no calibration data, uninitialized @n\n-\t * -#BPMP_ENOTSUP: avfs config not set @n\n-\t * -#BPMP_EOPNOTSUPP: not in production mode @n\n+\t * mrq_response::err for this sub-command is defined to be:\n+\t *\n+\t * | Value             | Description                                       |\n+\t * |-------------------|---------------------------------------------------|\n+\t * | 0                 | Operation was successful.                         |\n+\t * | -#BPMP_EBADCMD    | Subcommand is not supported.                      |\n+\t * | -#BPMP_ENODEV     | Invalid clock ID in mrq_fmon_request::cmd_and_id. |\n+\t * | -#BPMP_ENOENT     | No calibration data, uninitialized.               |\n+\t * | -#BPMP_ENOTSUP    | AVFS config not set.                              |\n+\t * | -#BPMP_EOPNOTSUPP | Not in production mode.                           |\n \t */\n \tCMD_FMON_GEAR_GET = 3,\n+\n \t/**\n \t * @brief Return current status of FMON faults detected by FMON\n-\t *         h/w or s/w since last invocation of this command.\n-\t *         Clears fault status.\n+\t *        HW or SW since last invocation of this sub-command.\n+\t *        Clears fault status.\n \t *\n-\t * mrq_response::err is 0 if the operation was successful, or @n\n-\t * -#BPMP_EBADCMD if subcommand is not supported @n\n-\t * -#BPMP_EINVAL: invalid fault type @n\n-\t * -#BPMP_ENODEV: invalid clk_id @n\n-\t * -#BPMP_ENOENT: no calibration data, uninitialized @n\n-\t * -#BPMP_ENOTSUP: avfs config not set @n\n-\t * -#BPMP_EOPNOTSUPP: not in production mode @n\n+\t * mrq_response::err for this sub-command is defined to be:\n+\t *\n+\t * | Value             | Description                                       |\n+\t * |-------------------|---------------------------------------------------|\n+\t * | 0                 | Operation was successful.                         |\n+\t * | -#BPMP_EBADCMD    | Subcommand is not supported.                      |\n+\t * | -#BPMP_ENODEV     | Invalid clock ID in mrq_fmon_request::cmd_and_id. |\n+\t * | -#BPMP_ENOENT     | No calibration data, uninitialized.               |\n+\t * | -#BPMP_ENOTSUP    | AVFS config not set.                              |\n+\t * | -#BPMP_EOPNOTSUPP | Not in production mode.                           |\n+\t * | -#BPMP_EINVAL     | Invalid fault type.                               |\n \t */\n \tCMD_FMON_FAULT_STS_GET = 4,\n };\n@@ -3177,25 +4189,30 @@ enum {\n  */\n #define CMD_FMON_NUM\t\t4\n \n-/** @endcond DEPRECATED */\n+/** @endcond */\n \n /**\n- * @defgroup fmon_fault_type FMON fault type\n+ * @defgroup fmon_fault_type FMON fault types\n  * @addtogroup fmon_fault_type\n  * @{\n  */\n-/** @brief All detected FMON faults (h/w or s/w) */\n+/** @brief All detected FMON faults (HW or SW) */\n #define FMON_FAULT_TYPE_ALL\t\t0U\n-/** @brief FMON faults detected by h/w */\n+/** @brief FMON faults detected by HW */\n #define FMON_FAULT_TYPE_HW\t\t1U\n-/** @brief FMON faults detected by s/w */\n+/** @brief FMON faults detected by SW */\n #define FMON_FAULT_TYPE_SW\t\t2U\n \n /** @} fmon_fault_type */\n \n-\n+/**\n+ * @brief Request payload for #MRQ_FMON sub-command #CMD_FMON_GEAR_CLAMP.\n+ */\n struct cmd_fmon_gear_clamp_request {\n+\t/** @brief Unused / reserved */\n \tint32_t unused;\n+\n+\t/** @brief Target rate in Hz. Valid range for the rate is [1, INT64_MAX] */\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n@@ -3219,40 +4236,63 @@ struct cmd_fmon_gear_get_request {\n \tBPMP_ABI_EMPTY\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_FMON sub-command #CMD_FMON_GEAR_GET.\n+ */\n struct cmd_fmon_gear_get_response {\n \tint64_t rate;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Request payload for #MRQ_FMON sub-command #CMD_FMON_FAULT_STS_GET\n+ */\n struct cmd_fmon_fault_sts_get_request {\n-\tuint32_t fault_type;\t/**< @ref fmon_fault_type */\n+\t/**\n+\t * @brief Which fault types to return in response:\n+\t *\n+\t * | Value                | Description                             |\n+\t * |----------------------|-----------------------------------------|\n+\t * | #FMON_FAULT_TYPE_ALL | Return all detected faults (HW and SW). |\n+\t * | #FMON_FAULT_TYPE_HW  | Return only HW detected faults.         |\n+\t * | #FMON_FAULT_TYPE_SW  | Return only SW detected faults.         |\n+\t */\n+\tuint32_t fault_type;\n } BPMP_ABI_PACKED;\n \n+/**\n+ * @brief Response payload for #MRQ_FMON sub-command #CMD_FMON_FAULT_STS_GET\n+ */\n struct cmd_fmon_fault_sts_get_response {\n+\t/**\n+\t * Bitmask of detected HW / SW specific faults, or 0 if no faults have\n+\t * been detected since last invocation of #CMD_FMON_FAULT_STS_GET.\n+\t */\n \tuint32_t fault_sts;\n } BPMP_ABI_PACKED;\n \n /**\n  * @ingroup FMON\n- * @brief Request with #MRQ_FMON\n+ * @brief Request payload for the #MRQ_FMON -command.\n  *\n  * Used by the sender of an #MRQ_FMON message to configure clock\n  * frequency monitors. The FMON request is split into several\n- * sub-commands. Some sub-commands require no additional data.\n- * Others have a sub-command specific payload\n+ * sub-commands. Sub-command specific payloads are defined in\n+ * the following table:\n  *\n- * |sub-command                 |payload                |\n- * |----------------------------|-----------------------|\n- * |CMD_FMON_GEAR_CLAMP         |fmon_gear_clamp        |\n- * |CMD_FMON_GEAR_FREE          |-                      |\n- * |CMD_FMON_GEAR_GET           |-                      |\n- * |CMD_FMON_FAULT_STS_GET      |fmon_fault_sts_get     |\n+ * |Sub-command             |Payload                         |\n+ * |------------------------|--------------------------------|\n+ * |#CMD_FMON_GEAR_CLAMP    |#cmd_fmon_gear_clamp_request    |\n+ * |#CMD_FMON_GEAR_FREE     |-                               |\n+ * |#CMD_FMON_GEAR_GET      |-                               |\n+ * |#CMD_FMON_FAULT_STS_GET |#cmd_fmon_fault_sts_get_request |\n  *\n  */\n struct mrq_fmon_request {\n-\t/** @brief Sub-command and clock id concatenated to 32-bit word.\n-\t * - bits[31..24] is the sub-cmd.\n-\t * - bits[23..0] is monitored clock id used to select target\n-\t *   FMON\n+\t/**\n+\t * @brief Sub-command and clock id concatenated to 32-bit word.\n+\t *\n+\t * - bits[31..24] -> Sub-command identifier from @ref mrq_fmon_cmd.\n+\t * - bits[23..0] -> Monitored clock identifier used to select target FMON.\n \t */\n \tuint32_t cmd_and_id;\n \n@@ -3268,20 +4308,19 @@ struct mrq_fmon_request {\n \n /**\n  * @ingroup FMON\n- * @brief Response to MRQ_FMON\n+ * @brief Response payload for the #MRQ_FMON -command.\n  *\n  * Each sub-command supported by @ref mrq_fmon_request may\n  * return sub-command-specific data as indicated below.\n  *\n- * |sub-command                 |payload                 |\n- * |----------------------------|------------------------|\n- * |CMD_FMON_GEAR_CLAMP         |-                       |\n- * |CMD_FMON_GEAR_FREE          |-                       |\n- * |CMD_FMON_GEAR_GET           |fmon_gear_get           |\n- * |CMD_FMON_FAULT_STS_GET      |fmon_fault_sts_get      |\n+ * |Sub-command             |Payload                          |\n+ * |------------------------|---------------------------------|\n+ * |#CMD_FMON_GEAR_CLAMP    |-                                |\n+ * |#CMD_FMON_GEAR_FREE     |-                                |\n+ * |#CMD_FMON_GEAR_GET      |#cmd_fmon_gear_get_response      |\n+ * |#CMD_FMON_FAULT_STS_GET |#cmd_fmon_fault_sts_get_response |\n  *\n  */\n-\n struct mrq_fmon_response {\n \tunion {\n \t\t/** @private */\n@@ -3293,17 +4332,15 @@ struct mrq_fmon_response {\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/** @endcond (bpmp_t194 || bpmp_t234) */\n /** @} FMON */\n+/** @endcond */\n \n-/**\n+/** @cond (bpmp_t194)\n  * @ingroup MRQ_Codes\n  * @def MRQ_EC\n  * @brief Provide status information on faults reported by Error\n  *        Collator (EC) to HSM.\n  *\n- * * Platforms: T194\n- * @cond bpmp_t194\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_ec_request\n@@ -3311,10 +4348,8 @@ struct mrq_fmon_response {\n  *\n  * @note This MRQ ABI is under construction, and subject to change\n  *\n- * @endcond bpmp_t194\n  * @addtogroup EC\n  * @{\n- * @cond bpmp_t194\n  */\n enum {\n \t/**\n@@ -3325,7 +4360,7 @@ enum {\n \t * -#BPMP_ENODEV if target EC is not owned by BPMP @n\n \t * -#BPMP_EACCES if target EC power domain is turned off @n\n \t * -#BPMP_EBADCMD if subcommand is not supported\n-\t * @endcond DEPRECATED\n+\t * @endcond\n \t */\n \tCMD_EC_STATUS_GET = 1,\t/* deprecated */\n \n@@ -3572,7 +4607,7 @@ struct cmd_ec_status_get_response {\n \t/** @brief  EC error descriptors */\n \tunion ec_err_desc error_descs[EC_ERR_STATUS_DESC_MAX_NUM];\n } BPMP_ABI_PACKED;\n-/** @endcond DEPRECATED */\n+/** @endcond */\n \n struct cmd_ec_status_ex_get_response {\n \t/** @brief Target EC id (the same id received with request). */\n@@ -3610,7 +4645,7 @@ struct cmd_ec_status_ex_get_response {\n  * |sub-command                 |payload                |\n  * |----------------------------|-----------------------|\n  * |@ref CMD_EC_STATUS_GET      |ec_status_get          |\n- * @endcond DEPRECATED\n+ * @endcond\n  *\n  * |sub-command                 |payload                |\n  * |----------------------------|-----------------------|\n@@ -3638,7 +4673,7 @@ struct mrq_ec_request {\n  * |sub-command                 |payload                 |\n  * |----------------------------|------------------------|\n  * |@ref CMD_EC_STATUS_GET      |ec_status_get           |\n- * @endcond DEPRECATED\n+ * @endcond\n  *\n  * |sub-command                 |payload                 |\n  * |----------------------------|------------------------|\n@@ -3652,22 +4687,20 @@ struct mrq_ec_response {\n \t\t * @cond DEPRECATED\n \t\t */\n \t\tstruct cmd_ec_status_get_response ec_status_get;\n-\t\t/** @endcond DEPRECATED */\n+\t\t/** @endcond */\n \t\tstruct cmd_ec_status_ex_get_response ec_status_ex_get;\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/** @endcond bpmp_t194 */\n /** @} EC */\n+/** @endcond */\n \n-/**\n+/** @cond (bpmp_th500)\n  * @ingroup MRQ_Codes\n  * @def MRQ_TELEMETRY\n  * @brief Get address of memory buffer refreshed with recently sampled\n  *        telemetry data\n  *\n- * * Platforms: TH500 onwards\n- * @cond bpmp_th500\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: N/A\n@@ -3677,14 +4710,17 @@ struct mrq_ec_response {\n  */\n \n /**\n- * @brief Response to #MRQ_TELEMETRY\n+ * @brief Response payload for the #MRQ_TELEMETRY -command\n  *\n- * mrq_response::err is\n- * * 0: Telemetry data is available at returned address\n- * * -#BPMP_EACCES: MRQ master is not allowed to request buffer refresh\n- * * -#BPMP_ENAVAIL: Telemetry buffer cannot be refreshed via this MRQ channel\n- * * -#BPMP_ENOTSUP: Telemetry buffer is not supported by BPMP-FW\n- * * -#BPMP_ENODEV: Telemetry mrq is not supported by BPMP-FW\n+ * mrq_response::err is defined as:\n+ *\n+ * | Value           | Description                                                |\n+ * |-----------------|------------------------------------------------------------|\n+ * | 0               | Telemetry data is available at returned address.           |\n+ * | -#BPMP_EACCES   | MRQ master is not allowed to request buffer refresh.       |\n+ * | -#BPMP_ENAVAIL  | Telemetry buffer cannot be refreshed via this MRQ channel. |\n+ * | -#BPMP_ENOTSUP  | Telemetry buffer is not supported by BPMP-FW.              |\n+ * | -#BPMP_ENODEV   | Telemetry MRQ is not supported by BPMP-FW.                 |\n  */\n struct mrq_telemetry_response {\n \t/** @brief Physical address of telemetry data buffer */\n@@ -3692,15 +4728,112 @@ struct mrq_telemetry_response {\n } BPMP_ABI_PACKED;\n \n /** @} Telemetry */\n-/** @endcond bpmp_th500 */\n+/** @endcond */\n+\n+/** @cond (bpmp_tb500)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_TELEMETRY_EX\n+ * @brief Get telemetry configuration settings.\n+ *\n+ * * Initiators: Any\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_telemetry_ex_request\n+ * * Response Payload: @ref mrq_telemetry_ex_response\n+ *\n+ * @addtogroup Telemetry_ex\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_TELEMETRY_EX.\n+ */\n+enum mrq_telemetry_ex_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_TELEMETRY_EX sub-command.\n+\t *\n+\t * mrq_response::err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_TELEMETRY_EX_QUERY_ABI = 0,\n+\n+\t/**\n+\t * @brief Get telemetry buffer base address and data size\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                    |\n+\t * |----------------|------------------------------------------------|\n+\t * | 0              | Success                                        |\n+\t * | -#BPMP_ENODEV  | #MRQ_TELEMETRY_EX is not supported by BPMP-FW. |\n+\t */\n+\tCMD_TELEMETRY_EX_BASE_SZ_GET = 1,\n+};\n \n /**\n+ * @brief Request data for #MRQ_TELEMETRY_EX sub-command\n+ *        #CMD_TELEMETRY_EX_QUERY_ABI\n+ */\n+struct cmd_telemetry_ex_query_abi_request {\n+\t/** @brief Sub-command identifier from @ref mrq_telemetry_ex_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for #MRQ_TELEMETRY_EX sub-command\n+ *        #CMD_TELEMETRY_EX_BASE_SZ_GET\n+ */\n+struct cmd_telemetry_ex_base_sz_get_response {\n+\t/**\n+\t *  @brief Physical address of telemetry data buffer\n+\t *\n+\t *  0 if no buffer is allocated for the initiator sending MRQ.\n+\t */\n+\tuint64_t buf_base_addr;\n+\t/** @brief Telemetry data size in bytes */\n+\tuint32_t buf_size;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_TELEMETRY_EX -command\n+ *\n+ * | Sub-command                   | Request payload                        |\n+ * |-------------------------------|----------------------------------------|\n+ * | #CMD_TELEMETRY_EX_QUERY_ABI   | #cmd_telemetry_ex_query_abi_request    |\n+ * | #CMD_TELEMETRY_EX_BASE_SZ_GET | -                                      |\n+ */\n+struct mrq_telemetry_ex_request {\n+\t/** @brief Sub-command ID from @ref mrq_telemetry_ex_cmd. */\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_telemetry_ex_query_abi_request\n+\t\t\ttelemetry_ex_query_abi_req;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for the #MRQ_TELEMETRY_EX -command.\n+ *\n+ * | Sub-command                   | Response payload                       |\n+ * |-------------------------------|----------------------------------------|\n+ * | #CMD_TELEMETRY_EX_QUERY_ABI   | -                                      |\n+ * | #CMD_TELEMETRY_EX_BASE_SZ_GET | #cmd_telemetry_ex_base_sz_get_response |\n+ */\n+struct mrq_telemetry_ex_response {\n+\tunion {\n+\t\tstruct cmd_telemetry_ex_base_sz_get_response\n+\t\t\ttelemetry_ex_base_sz_get_rsp;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} Telemetry_ex */\n+/** @endcond */\n+\n+/** @cond (bpmp_th500 || bpmp_tb500)\n  * @ingroup MRQ_Codes\n  * @def MRQ_PWR_LIMIT\n  * @brief Control power limits.\n  *\n- * * Platforms: TH500 onwards\n- * @cond bpmp_th500\n  * * Initiators: Any\n  * * Targets: BPMP\n  * * Request Payload: @ref mrq_pwr_limit_request\n@@ -3709,10 +4842,14 @@ struct mrq_telemetry_response {\n  * @addtogroup Pwrlimit\n  * @{\n  */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_PWR_LIMIT.\n+ */\n enum mrq_pwr_limit_cmd {\n \t/**\n \t * @brief Check whether the BPMP-FW supports the specified\n-\t * command\n+\t * #MRQ_PWR_LIMIT sub-command.\n \t *\n \t * mrq_response::err is 0 if the specified request is\n \t * supported and -#BPMP_ENODEV otherwise.\n@@ -3722,31 +4859,43 @@ enum mrq_pwr_limit_cmd {\n \t/**\n \t * @brief Set power limit\n \t *\n-\t * mrq_response:err is\n-\t * * 0: Success\n-\t * * -#BPMP_ENODEV: Pwr limit mrq is not supported by BPMP-FW\n-\t * * -#BPMP_ENAVAIL: Invalid request parameters\n-\t * * -#BPMP_EACCES: Request is not accepted\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_PWR_LIMIT is not supported by BPMP-FW. |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t * | -#BPMP_EACCES  | Request is not accepted.                    |\n \t */\n \tCMD_PWR_LIMIT_SET = 1,\n \n \t/**\n \t * @brief Get power limit setting\n \t *\n-\t * mrq_response:err is\n-\t * * 0: Success\n-\t * * -#BPMP_ENODEV: Pwr limit mrq is not supported by BPMP-FW\n-\t * * -#BPMP_ENAVAIL: Invalid request parameters\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_PWR_LIMIT is not supported by BPMP-FW. |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n \t */\n \tCMD_PWR_LIMIT_GET = 2,\n \n \t/**\n-\t * @brief Get current power cap\n+\t * @brief Get current aggregated power cap\n \t *\n-\t * mrq_response:err is\n-\t * * 0: Success\n-\t * * -#BPMP_ENODEV: Pwr limit mrq is not supported by BPMP-FW\n-\t * * -#BPMP_ENAVAIL: Invalid request parameters\n+\t * Get currently applied power cap for the specified limit id\n+\t * aggregated across all limit sources and types.\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_PWR_LIMIT is not supported by BPMP-FW. |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n \t */\n \tCMD_PWR_LIMIT_CURR_CAP = 3,\n };\n@@ -3761,7 +4910,7 @@ enum mrq_pwr_limit_cmd {\n #define PWR_LIMIT_TYPE_BOUND_MAX\t\t1U\n /** @brief Limit value specifies minimum possible target cap */\n #define PWR_LIMIT_TYPE_BOUND_MIN\t\t2U\n-/** @brief Number of limit types supported by mrq interface */\n+/** @brief Number of limit types supported by #MRQ_PWR_LIMIT command */\n #define PWR_LIMIT_TYPE_NUM\t\t\t3U\n \n /** @} bpmp_pwr_limit_type */\n@@ -3770,7 +4919,8 @@ enum mrq_pwr_limit_cmd {\n  * @brief Request data for #MRQ_PWR_LIMIT command CMD_PWR_LIMIT_QUERY_ABI\n  */\n struct cmd_pwr_limit_query_abi_request {\n-\tuint32_t cmd_code; /**< @ref mrq_pwr_limit_cmd */\n+\t/** @brief Sub-command identifier from @ref mrq_pwr_limit_cmd */\n+\tuint32_t cmd_code;\n } BPMP_ABI_PACKED;\n \n /**\n@@ -3782,56 +4932,66 @@ struct cmd_pwr_limit_query_abi_request {\n  * is ignored by the arbitration (i.e., indicates \"no limit set\").\n  */\n struct cmd_pwr_limit_set_request {\n-\tuint32_t limit_id;   /**< @ref bpmp_pwr_limit_id */\n+\t/** @brief Power limit identifier from @ref bpmp_pwr_limit_id */\n+\tuint32_t limit_id;\n+\t/** @brief Power limit source identifier from @ref bpmp_pwr_limit_src */\n \tuint32_t limit_src;  /**< @ref bpmp_pwr_limit_src */\n-\tuint32_t limit_type; /**< @ref bpmp_pwr_limit_type */\n+\t/** @brief Power limit type from @ref bpmp_pwr_limit_type */\n+\tuint32_t limit_type;\n+\t/** @brief New power limit value */\n \tuint32_t limit_setting;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Request data for #MRQ_PWR_LIMIT command CMD_PWR_LIMIT_GET\n+ * @brief Request payload for #MRQ_PWR_LIMIT sub-command #CMD_PWR_LIMIT_GET\n  *\n  * Get previously set from specified source specified limit value of specified\n  * type.\n  */\n struct cmd_pwr_limit_get_request {\n-\tuint32_t limit_id;   /**< @ref bpmp_pwr_limit_id */\n+\t/** @brief Power limit identifier from @ref bpmp_pwr_limit_id */\n+\tuint32_t limit_id;\n+\t/** @brief Power limit source identifier from @ref bpmp_pwr_limit_src */\n \tuint32_t limit_src;  /**< @ref bpmp_pwr_limit_src */\n-\tuint32_t limit_type; /**< @ref bpmp_pwr_limit_type */\n+\t/** @brief Power limit type from @ref bpmp_pwr_limit_type */\n+\tuint32_t limit_type;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response data for #MRQ_PWR_LIMIT command CMD_PWR_LIMIT_GET\n+ * @brief Response payload for #MRQ_PWR_LIMIT sub-command #CMD_PWR_LIMIT_GET\n  */\n struct cmd_pwr_limit_get_response {\n+\t/** @brief Power limit value */\n \tuint32_t limit_setting;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Request data for #MRQ_PWR_LIMIT command CMD_PWR_LIMIT_CURR_CAP\n+ * @brief Request payload for #MRQ_PWR_LIMIT sub-command #CMD_PWR_LIMIT_CURR_CAP\n  *\n  * For specified limit get current power cap aggregated from all sources.\n  */\n struct cmd_pwr_limit_curr_cap_request {\n-\tuint32_t limit_id;   /**< @ref bpmp_pwr_limit_id */\n+\t/** @brief Power limit identifier from @ref bpmp_pwr_limit_id */\n+\tuint32_t limit_id;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response data for #MRQ_PWR_LIMIT command CMD_PWR_LIMIT_CURR_CAP\n+ * @brief Response payload for #MRQ_PWR_LIMIT sub-command #CMD_PWR_LIMIT_CURR_CAP\n  */\n struct cmd_pwr_limit_curr_cap_response {\n+\t/** @brief Current power cap value */\n \tuint32_t curr_cap;\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Request with #MRQ_PWR_LIMIT\n+ * @brief Request payload for the #MRQ_PWR_LIMIT -command\n  *\n- * |sub-command                 |payload                          |\n- * |----------------------------|---------------------------------|\n- * |CMD_PWR_LIMIT_QUERY_ABI     | cmd_pwr_limit_query_abi_request |\n- * |CMD_PWR_LIMIT_SET           | cmd_pwr_limit_set_request       |\n- * |CMD_PWR_LIMIT_GET           | cmd_pwr_limit_get_request       |\n- * |CMD_PWR_LIMIT_CURR_CAP      | cmd_pwr_limit_curr_cap_request  |\n+ * | Sub-command              | Request payload                  |\n+ * |--------------------------|----------------------------------|\n+ * | #CMD_PWR_LIMIT_QUERY_ABI | #cmd_pwr_limit_query_abi_request |\n+ * | #CMD_PWR_LIMIT_SET       | #cmd_pwr_limit_set_request       |\n+ * | #CMD_PWR_LIMIT_GET       | #cmd_pwr_limit_get_request       |\n+ * | #CMD_PWR_LIMIT_CURR_CAP  | #cmd_pwr_limit_curr_cap_request  |\n  */\n struct mrq_pwr_limit_request {\n \tuint32_t cmd;\n@@ -3844,14 +5004,14 @@ struct mrq_pwr_limit_request {\n } BPMP_ABI_PACKED;\n \n /**\n- * @brief Response to MRQ_PWR_LIMIT\n+ * @brief Response payload for the #MRQ_PWR_LIMIT -command.\n  *\n- * |sub-command                 |payload                          |\n- * |----------------------------|---------------------------------|\n- * |CMD_PWR_LIMIT_QUERY_ABI     | -                               |\n- * |CMD_PWR_LIMIT_SET           | -                               |\n- * |CMD_PWR_LIMIT_GET           | cmd_pwr_limit_get_response      |\n- * |CMD_PWR_LIMIT_CURR_CAP      | cmd_pwr_limit_curr_cap_response |\n+ * | Sub-command              | Response payload                 |\n+ * |--------------------------|----------------------------------|\n+ * | #CMD_PWR_LIMIT_QUERY_ABI | -                                |\n+ * | #CMD_PWR_LIMIT_SET       | -                                |\n+ * | #CMD_PWR_LIMIT_GET       | #cmd_pwr_limit_get_response      |\n+ * | #CMD_PWR_LIMIT_CURR_CAP  | #cmd_pwr_limit_curr_cap_response |\n  */\n struct mrq_pwr_limit_response {\n \tunion {\n@@ -3860,17 +5020,395 @@ struct mrq_pwr_limit_response {\n \t} BPMP_UNION_ANON;\n } BPMP_ABI_PACKED;\n \n-/** @} PwrLimit */\n-/** @endcond bpmp_th500 */\n+/** @} Pwrlimit */\n+/** @endcond */\n+\n \n \n+/** @cond (bpmp_th500)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_PWRMODEL\n+ * @brief Retrieve power evaluted by SoC power model.\n+ *\n+ * * Initiators: Any\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_pwrmodel_request\n+ * * Response Payload: @ref mrq_pwrmodel_response\n+ *\n+ * @addtogroup Pwrmodel\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_PWRMODEL.\n+ */\n+enum mrq_pwrmodel_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_PWRMODEL sub-command.\n+\t *\n+\t * mrq_response::err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_PWRMODEL_QUERY_ABI = 0,\n+\n+\t/**\n+\t * @brief Get power model output power\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_PWRMODEL is not supported by BPMP-FW.  |\n+\t * | -#BPMP_ERANGE  | Power model calculation overflow.           |\n+\t */\n+\tCMD_PWRMODEL_PWR_GET = 1,\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_PWRMODEL sub-command #CMD_PWRMODEL_QUERY_ABI\n+ */\n+struct cmd_pwrmodel_query_abi_request {\n+\t/** @brief Sub-command identifier from @ref mrq_pwrmodel_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for #MRQ_PWRMODEL sub-command #CMD_PWRMODEL_PWR_GET\n+ *\n+ * Rerieve power evaluated by power model for specified work-load factor,\n+ * temperature, and cpu iso frequency for all cores.\n+ */\n+struct cmd_pwrmodel_pwr_get_request {\n+\t/** @brief Unitless work load factor to evaluate power model at */\n+\tuint32_t work_load_factor;\n+\t/** @brief CPU frequency in kHz to evaluate power model at */\n+\tuint32_t cpu_frequency;\n+\t/** @brief Temperature in mC to evaluate power model at */\n+\tint32_t temperature;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for #MRQ_PWRMODEL sub-command #CMD_PWRMODEL_PWR_GET\n+ */\n+struct cmd_pwrmodel_pwr_get_response {\n+\t/** @brief Power model output in mW */\n+\tuint32_t power;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_PWRMODEL -command\n+ *\n+ * | Sub-command              | Request payload                  |\n+ * |--------------------------|----------------------------------|\n+ * | #CMD_PWRMODEL_QUERY_ABI  | #cmd_pwrmodel_query_abi_request  |\n+ * | #CMD_PWRMODEL_PWR_GET    | #cmd_pwrmodel_pwr_get_request    |\n+ */\n+struct mrq_pwrmodel_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_pwrmodel_query_abi_request pwrmodel_query_abi_req;\n+\t\tstruct cmd_pwrmodel_pwr_get_request pwrmodel_pwr_get_req;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n /**\n+ * @brief Response payload for the #MRQ_PWRMODEL -command.\n+ *\n+ * | Sub-command              | Response payload                 |\n+ * |--------------------------|----------------------------------|\n+ * | #CMD_PWRMODEL_QUERY_ABI  | -                                |\n+ * | #CMD_PWRMODEL_PWR_GET    | #cmd_pwrmodel_pwr_get_response   |\n+ */\n+struct mrq_pwrmodel_response {\n+\tunion {\n+\t\tstruct cmd_pwrmodel_pwr_get_response pwrmodel_pwr_get_rsp;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} Pwrmodel */\n+/** @endcond */\n+\n+\n+/** @cond (bpmp_th500)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_PWR_CNTRL\n+ * @brief Configure power controllers.\n+ *\n+ * * Initiators: Any\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_pwr_cntrl_request\n+ * * Response Payload: @ref mrq_pwr_cntrl_response\n+ *\n+ * @addtogroup Pwrcntrl\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_PWR_CNTRL.\n+ */\n+enum mrq_pwr_cntrl_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_PWR_CNTRL sub-command.\n+\t *\n+\t * mrq_response::err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_PWR_CNTRL_QUERY_ABI = 0,\n+\n+\t/**\n+\t * @brief Switch power controller to/out of bypass mode\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_PWR_CNTRL is not supported by BPMP-FW. |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t * | -#BPMP_ENOTSUP | Bypass mode is not supported.               |\n+\t */\n+\tCMD_PWR_CNTRL_BYPASS_SET = 1,\n+\n+\t/**\n+\t * @brief Get power controller bypass mode status\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_PWR_CNTRL is not supported by BPMP-FW. |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_PWR_CNTRL_BYPASS_GET = 2,\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_PWR_CNTRL sub-command #CMD_PWR_CNTRL_QUERY_ABI\n+ */\n+struct cmd_pwr_cntrl_query_abi_request {\n+\t/** @brief Sub-command identifier from @ref mrq_pwr_cntrl_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_PWR_CNTRL sub-command #CMD_PWR_CNTRL_BYPASS_SET\n+ *\n+ * Switch specified power controller to / out of bypass mode provided such\n+ * mode is supported by the controller.\n+ */\n+struct cmd_pwr_cntrl_bypass_set_request {\n+\t/** @brief Power controller identifier from @ref bpmp_pwr_cntrl_id */\n+\tuint32_t cntrl_id;\n+\t/**\n+\t * @brief Bypass setting.\n+\t *\n+\t * Valid values:\n+\t *\n+\t * * 1 to enter bypass mode,\n+\t * * 0 to exit bypass mode.\n+\t */\n+\tuint32_t bypass_setting;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_PWR_CNTRL sub-command #CMD_PWR_CNTRL_BYPASS_GET\n+ *\n+ * Get bypass mode status of the specified power controller.\n+ */\n+struct cmd_pwr_cntrl_bypass_get_request {\n+\t/** @brief Power controller identifier from @ref bpmp_pwr_cntrl_id */\n+\tuint32_t cntrl_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_PWR_CNTRL sub-command #CMD_PWR_CNTRL_BYPASS_GET\n+ *\n+ * Get current bypass mode status if such mode is supported by the controller.\n+ * Otherwise, return \"out of bypass\" .\n+ */\n+struct cmd_pwr_cntrl_bypass_get_response {\n+\t/**\n+\t * @brief Bypass mode status: 1 controller is in bypass,\n+\t * 0 controller is out of bypass.\n+\t */\n+\tuint32_t bypass_status;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_PWR_CNTRL -command\n+ *\n+ * | Sub-command               | Request payload                   |\n+ * |---------------------------|-----------------------------------|\n+ * | #CMD_PWR_CNTRL_QUERY_ABI  | #cmd_pwr_cntrl_query_abi_request  |\n+ * | #CMD_PWR_CNTRL_BYPASS_SET | #cmd_pwr_cntrl_bypass_set_request |\n+ * | #CMD_PWR_CNTRL_BYPASS_GET | #cmd_pwr_cntrl_bypass_get_request |\n+ */\n+struct mrq_pwr_cntrl_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_pwr_cntrl_query_abi_request pwr_cntrl_query_abi_req;\n+\t\tstruct cmd_pwr_cntrl_bypass_set_request pwr_cntrl_bypass_set_req;\n+\t\tstruct cmd_pwr_cntrl_bypass_get_request pwr_cntrl_bypass_get_req;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for the #MRQ_PWR_CNTRL -command.\n+ *\n+ * | Sub-command               | Response payload                  |\n+ * |---------------------------|-----------------------------------|\n+ * | #CMD_PWR_CNTRL_QUERY_ABI  | -                                 |\n+ * | #CMD_PWR_CNTRL_BYPASS_SET | -                                 |\n+ * | #CMD_PWR_CNTRL_BYPASS_GET | #cmd_pwr_cntrl_bypass_get_response|\n+ */\n+struct mrq_pwr_cntrl_response {\n+\tunion {\n+\t\tstruct cmd_pwr_cntrl_bypass_get_response pwr_cntrl_bypass_get_rsp;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} Pwrcntrl */\n+/** @endcond */\n+\n+\n+/** @cond (bpmp_t264)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_SLC\n+ * @brief Configure SLC state.\n+ *\n+ * * Initiators: Any\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_slc_request\n+ * * Response Payload: @ref mrq_slc_response\n+ *\n+ * @addtogroup Slc\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_SLC.\n+ */\n+enum mrq_slc_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_SLC sub-command.\n+\t *\n+\t * mrq_response::err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_SLC_QUERY_ABI = 0,\n+\n+\t/**\n+\t * @brief Switch SLC to/out of bypass mode\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_SLC is not supported by BPMP-FW.       |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t * | -#BPMP_ENOTSUP | Bypass mode is not supported.               |\n+\t */\n+\tCMD_SLC_BYPASS_SET = 1,\n+\n+\t/**\n+\t * @brief Get SLC bypass mode status\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * |----------------|---------------------------------------------|\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_SLC is not supported by BPMP-FW.       |\n+\t */\n+\tCMD_SLC_BYPASS_GET = 2,\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_SLC sub-command #CMD_SLC_QUERY_ABI\n+ */\n+struct cmd_slc_query_abi_request {\n+\t/** @brief Sub-command identifier from @ref mrq_slc_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_SLC sub-command #CMD_SLC_BYPASS_SET\n+ *\n+ * Switch SLC to / out of bypass mode provided such\n+ * mode is supported by the SLC.\n+ */\n+struct cmd_slc_bypass_set_request {\n+\t/**\n+\t * @brief Bypass setting.\n+\t *\n+\t * Valid values:\n+\t *\n+\t * * 1 to enter bypass mode,\n+\t * * 0 to exit bypass mode.\n+\t */\n+\tuint32_t bypass_setting;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_SLC sub-command #CMD_SLC_BYPASS_GET\n+ *\n+ * Get current bypass mode status if such mode is supported by the SLC.\n+ * Otherwise, return \"out of bypass\" .\n+ */\n+struct cmd_slc_bypass_get_response {\n+\t/**\n+\t * @brief Bypass mode status: 1 SLC is in bypass,\n+\t * 0 SLC is out of bypass.\n+\t */\n+\tuint32_t bypass_status;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_SLC -command\n+ *\n+ * | Sub-command               | Request payload                   |\n+ * |---------------------------|-----------------------------------|\n+ * | #CMD_SLC_QUERY_ABI        | #cmd_slc_query_abi_request        |\n+ * | #CMD_SLC_BYPASS_SET       | #cmd_slc_bypass_set_request       |\n+ * | #CMD_SLC_BYPASS_GET       | -       |\n+ */\n+struct mrq_slc_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_slc_query_abi_request slc_query_abi_req;\n+\t\tstruct cmd_slc_bypass_set_request slc_bypass_set_req;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for the #MRQ_SLC -command.\n+ *\n+ * | Sub-command               | Response payload                  |\n+ * |---------------------------|-----------------------------------|\n+ * | #CMD_SLC_QUERY_ABI        | -                                 |\n+ * | #CMD_SLC_BYPASS_SET       | -                                 |\n+ * | #CMD_SLC_BYPASS_GET       | #cmd_slc_bypass_get_response      |\n+ */\n+struct mrq_slc_response {\n+\tunion {\n+\t\tstruct cmd_slc_bypass_get_response slc_bypass_get_rsp;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} Slc */\n+/** @endcond */\n+\n+/** @cond (bpmp_th500)\n  * @ingroup MRQ_Codes\n  * @def MRQ_GEARS\n  * @brief Get thresholds for NDIV offset switching\n  *\n- * * Platforms: TH500 onwards\n- * @cond bpmp_th500\n  * * Initiators: CCPLEX\n  * * Targets: BPMP\n  * * Request Payload: N/A\n@@ -3905,11 +5443,1248 @@ struct mrq_pwr_limit_response {\n  */\n struct mrq_gears_response {\n \t/** @brief number of online CPUs for each gear */\n-\tuint32_t ncpu[16];\n+\tuint32_t ncpu[8];\n+\t/** @brief ndiv offset for each gear */\n+\tuint32_t ndiv_offset[8];\n+\t/** @brief voltage below which gears are disabled */\n+\tuint32_t uv_threshold;\n } BPMP_ABI_PACKED;\n \n /** @} Gears */\n-/** @endcond bpmp_th500 */\n+/** @endcond */\n+\n+\n+/**\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_SHUTDOWN\n+ * @brief System shutdown\n+ *\n+ * This message indicates system shutdown or reboot request. BPMP will\n+ * initiate system shutdown/reboot after receiving this message, it\n+ * may include turning off some rails in sequence and programming\n+ * PMIC.\n+ *\n+ * * Initiators: CPU_S, MCE\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_shutdown_request\n+ * * Response Payload: N/A\n+ * @addtogroup Shutdown\n+ * @{\n+ */\n+\n+/**\n+ * @brief Request with #MRQ_SHUTDOWN\n+ */\n+struct mrq_shutdown_request {\n+\t/**\n+\t * @brief Shutdown state ID\n+\t *\n+\t * Legal values:\n+\t * *  0 - Power off\n+\t * *  1 - Reboot\n+\t * @cond bpmp_t264\n+\t * *  2 - Suspend\n+\t * @endcond\n+\t */\n+\tuint32_t state;\n+} BPMP_ABI_PACKED;\n+\n+/** @} Shutdown */\n+\n+/** @cond (bpmp_th500 || bpmp_tb500)\n+ * @defgroup bpmp_c2c_status C2C link status\n+ * @addtogroup bpmp_c2c_status\n+ * @{\n+ */\n+/** @brief initial status code */\n+#define BPMP_C2C_STATUS_INIT_NOT_STARTED\t\t0\n+/** @brief Invalid speedo code */\n+#define BPMP_C2C_STATUS_C2C_INVALID_SPEEDO_CODE\t\t7\n+/** @brief Invalid frequency */\n+#define BPMP_C2C_STATUS_C2C_INVALID_FREQ\t\t8\n+/** @brief Invalid link */\n+#define BPMP_C2C_STATUS_C2C_INVALID_LINK\t\t9\n+/** @brief refpll lock polling times out - partition 0 */\n+#define BPMP_C2C_STATUS_C2C0_REFPLL_FAIL\t\t10\n+/** @brief refpll lock polling times out - partition 1 */\n+#define BPMP_C2C_STATUS_C2C1_REFPLL_FAIL\t\t11\n+/** @brief PLL cal times out - partition 0 */\n+#define BPMP_C2C_STATUS_C2C0_PLLCAL_FAIL\t\t12\n+/** @brief PLL cal times out - partition 1 */\n+#define BPMP_C2C_STATUS_C2C1_PLLCAL_FAIL\t\t13\n+/** @brief clock detection times out - partition 0 */\n+#define BPMP_C2C_STATUS_C2C0_CLKDET_FAIL\t\t14\n+/** @brief clock detection times out - partition 1 */\n+#define BPMP_C2C_STATUS_C2C1_CLKDET_FAIL\t\t15\n+/** @brief Final trainings fail partition 0 */\n+#define BPMP_C2C_STATUS_C2C0_TR_FAIL\t\t\t16\n+/** @brief Final trainings fail partition 1 */\n+#define BPMP_C2C_STATUS_C2C1_TR_FAIL\t\t\t17\n+/** @brief C2C FW init done */\n+#define NV_GFW_GLOBAL_DEVINIT_C2C_STATUS_C2C_FW_INIT_DONE\t20\n+/** @brief C2C FW init failed partition 0 */\n+#define NV_GFW_GLOBAL_DEVINIT_C2C_STATUS_C2C0_FW_INIT_FAIL\t21\n+/** @brief C2C FW init failed partition 1 */\n+#define NV_GFW_GLOBAL_DEVINIT_C2C_STATUS_C2C1_FW_INIT_FAIL\t22\n+/** @brief no failure seen, c2c init was successful */\n+#define BPMP_C2C_STATUS_C2C_LINK_TRAIN_PASS\t\t255\n+/** @} bpmp_c2c_status */\n+\n+/**\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_C2C\n+ * @brief Control C2C partitions initialization.\n+ *\n+ * * Initiators: Any\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_c2c_request\n+ * * Response Payload: @ref mrq_c2c_response\n+ *\n+ * @addtogroup C2C\n+ * @{\n+ */\n+enum mrq_c2c_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP driver supports the specified request\n+\t * type\n+\t *\n+\t * mrq_response:: err is 0 if the specified request is supported and\n+\t * -#BPMP_ENODEV otherwise\n+\t */\n+\tCMD_C2C_QUERY_ABI = 0,\n+\n+\t/**\n+\t * @brief Start C2C initialization\n+\t *\n+\t * mrq_response:err is\n+\t * * 0: Success\n+\t * * -#BPMP_ENODEV: MRQ_C2C is not supported by BPMP-FW\n+\t * * -#BPMP_ENAVAIL: Invalid request parameters\n+\t * * -#BPMP_EACCES: Request is not accepted\n+\t */\n+\tCMD_C2C_START_INITIALIZATION = 1,\n+\n+\t/**\n+\t * @brief Command to query current C2C training status\n+\t *\n+\t * This command will return the result of the latest C2C re-training that is initiated with\n+\t * MRQ_C2C.CMD_C2C_START_INITIALIZATION or MRQ_C2C.CMD_C2C_START_HOTRESET calls.\n+\t * If no training has been initiated yet, the command will return code BPMP_C2C_STATUS_INIT_NOT_STARTED.\n+\t *\n+\t * mrq_response:err is\n+\t * * 0: Success\n+\t * * -#BPMP_ENODEV: MRQ_C2C is not supported by BPMP-FW\n+\t * * -#BPMP_EACCES: Request is not accepted\n+\t */\n+\tCMD_C2C_GET_STATUS = 2,\n+\t/**\n+\t * @brief C2C hot-reset precondition\n+\t *\n+\t * mrq_response:err is\n+\t * * 0: Success\n+\t * * -#BPMP_ENODEV: MRQ_C2C is not supported by BPMP-FW\n+\t * * -#BPMP_ENAVAIL: Invalid request parameters\n+\t * * -#BPMP_EACCES: Request is not accepted\n+\t */\n+\tCMD_C2C_HOTRESET_PREP = 3,\n+\t/**\n+\t * @brief Start C2C hot-reset\n+\t *\n+\t * mrq_response:err is\n+\t * * 0: Success\n+\t * * -#BPMP_ENODEV: MRQ_C2C is not supported by BPMP-FW\n+\t * * -#BPMP_ENAVAIL: Invalid request parameters\n+\t * * -#BPMP_EACCES: Request is not accepted\n+\t */\n+\tCMD_C2C_START_HOTRESET = 4,\n+\n+\tCMD_C2C_MAX\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_C2C command CMD_C2C_QUERY_ABI\n+ */\n+struct cmd_c2c_query_abi_request {\n+\t/** @brief Command identifier to be queried */\n+\tuint32_t cmd;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_C2C command CMD_C2C_START_INITIALIZATION\n+ */\n+struct cmd_c2c_start_init_request {\n+\t/** @brief 1: partition 0; 2: partition 1; 3: partition 0 and 1; */\n+\tuint8_t partitions;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_C2C command CMD_C2C_START_INITIALIZATION\n+ */\n+struct cmd_c2c_start_init_response {\n+\t/** @brief Refer to @ref bpmp_c2c_status */\n+\tuint8_t status;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_C2C command CMD_C2C_GET_STATUS\n+ */\n+struct cmd_c2c_get_status_response {\n+\t/** @brief Refer to @ref bpmp_c2c_status */\n+\tuint8_t status;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_C2C command CMD_C2C_HOTRESET_PREP\n+ */\n+struct cmd_c2c_hotreset_prep_request {\n+\t/** @brief 1: partition 0; 2: partition 1; 3: partition 0 and 1; */\n+\tuint8_t partitions;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_C2C command CMD_C2C_START_HOTRESET\n+ */\n+struct cmd_c2c_start_hotreset_request {\n+\t/** @brief 1: partition 0; 2: partition 1; 3: partition 0 and 1; */\n+\tuint8_t partitions;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_C2C command CMD_C2C_START_HOTRESET\n+ */\n+struct cmd_c2c_start_hotreset_response {\n+\t/** @brief Refer to @ref bpmp_c2c_status */\n+\tuint8_t status;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request with #MRQ_C2C\n+ *\n+ * |sub-command                  |payload                        |\n+ * |-----------------------------|-------------------------------|\n+ * |CMD_C2C_QUERY_ABI            |cmd_c2c_query_abi_request      |\n+ * |CMD_C2C_START_INITIALIZATION |cmd_c2c_start_init_request     |\n+ * |CMD_C2C_GET_STATUS           |                               |\n+ * |CMD_C2C_HOTRESET_PREP        |cmd_c2c_hotreset_prep_request  |\n+ * |CMD_C2C_START_HOTRESET       |cmd_c2c_start_hotreset_request |\n+\n+ */\n+struct mrq_c2c_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_c2c_query_abi_request c2c_query_abi_req;\n+\t\tstruct cmd_c2c_start_init_request c2c_start_init_req;\n+\t\tstruct cmd_c2c_hotreset_prep_request c2c_hotreset_prep_req;\n+\t\tstruct cmd_c2c_start_hotreset_request c2c_start_hotreset_req;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response to MRQ_C2C\n+ *\n+ * |sub-command                  |payload                         |\n+ * |-----------------------------|--------------------------------|\n+ * |CMD_C2C_QUERY_ABI            |                                |\n+ * |CMD_C2C_START_INITIALIZATION |cmd_c2c_start_init_response     |\n+ * |CMD_C2C_GET_STATUS           |cmd_c2c_get_status_response     |\n+ * |CMD_C2C_HOTRESET_PREP        |                                |\n+ * |CMD_C2C_START_HOTRESET       |cmd_c2c_start_hotreset_response |\n+ */\n+struct mrq_c2c_response {\n+\tunion {\n+\t\tstruct cmd_c2c_start_init_response c2c_start_init_resp;\n+\t\tstruct cmd_c2c_get_status_response c2c_get_status_resp;\n+\t\tstruct cmd_c2c_start_hotreset_response c2c_start_hotreset_resp;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+/** @} */\n+/** @endcond */\n+\n+\n+/** @cond (bpmp_t264)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_PCIE\n+ * @brief Perform a PCIE operation\n+ *\n+ * * Initiators: CCPLEX\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_pcie_request\n+ *\n+ * @addtogroup PCIE\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_PCIE.\n+ */\n+enum mrq_pcie_cmd {\n+\t/** @brief Initialize PCIE EP controller. */\n+\tCMD_PCIE_EP_CONTROLLER_INIT = 0,\n+\t/** @brief Disable PCIE EP controller. */\n+\tCMD_PCIE_EP_CONTROLLER_OFF = 1,\n+\n+\t/** @brief Disable PCIE RP controller. */\n+\tCMD_PCIE_RP_CONTROLLER_OFF = 100,\n+\n+\tCMD_PCIE_MAX,\n+};\n+\n+/**\n+ * @brief Request payload for #MRQ_PCIE sub-command #CMD_PCIE_EP_CONTROLLER_INIT.\n+ */\n+struct cmd_pcie_ep_controller_init_request {\n+\t/**\n+\t * @brief PCIe EP controller number.\n+\t * Valid entries for T264 are 2, 4 and 5.\n+\t */\n+\tuint8_t ep_controller;\n+\t/**\n+\t * @brief PCIe EP function programming interface code.\n+\t * Valid range in HW is [0, 0xFFU], BPMP-FW programs the input value without any check.\n+\t * It is up to the requester to send valid input as documented in \"PCI CODE AND ID\n+\t * ASSIGNMENT SPECIFICATION\".\n+\t */\n+\tuint8_t progif_code;\n+\t/**\n+\t * @brief PCIe EP function sub-class code.\n+\t * Valid range in HW is [0, 0xFFU], BPMP-FW programs the input value without any check.\n+\t * It is up to the requester to send valid input as documented in \"PCI CODE AND ID\n+\t * ASSIGNMENT SPECIFICATION\".\n+\t */\n+\tuint8_t subclass_code;\n+\t/**\n+\t * @brief PCIe EP function base class code.\n+\t * Valid range in HW is [0, 0xFFU], BPMP-FW programs the input value without any check.\n+\t * It is up to the requester to send valid input as documented in \"PCI CODE AND ID\n+\t * ASSIGNMENT SPECIFICATION\".\n+\t */\n+\tuint8_t baseclass_code;\n+\t/**\n+\t * @brief PCIe EP function device id.\n+\t * Valid range is [0, 0x7FU], only LSB 7 bits are writable in 16-bit PCI device id.\n+\t * Valid range check is done on input value and returns -BPMP_EINVAL on failure.\n+\t */\n+\tuint8_t deviceid;\n+\t/**\n+\t * @brief PCIe EP EP BAR1 size.\n+\t * Valid range is [6U, 16U], which translate to [64MB, 64GB] size.\n+\t * Valid range check is done on input value and returns -BPMP_EINVAL on failure.\n+\t */\n+\tuint8_t bar1_size;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for #MRQ_PCIE sub-command #CMD_PCIE_EP_CONTROLLER_OFF.\n+ */\n+struct cmd_pcie_ep_controller_off_request {\n+\t/** @brief EP controller number, T264 valid: 2, 4, 5. */\n+\tuint8_t ep_controller;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for #MRQ_PCIE sub-command #CMD_PCIE_RP_CONTROLLER_OFF.\n+ */\n+struct cmd_pcie_rp_controller_off_request {\n+\t/** @brief RP controller number, T264 valid: 1-5 */\n+\tuint8_t rp_controller;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @ingroup PCIE\n+ * @brief Request payload for the #MRQ_PCIE command.\n+ *\n+ * Used by the sender of an #MRQ_PCIE message to control PCIE.\n+ * Below table shows sub-commands with their corresponding payload data.\n+ *\n+ * |sub-command                           |payload                                  |\n+ * |--------------------------------------|-----------------------------------------|\n+ * |#CMD_PCIE_EP_CONTROLLER_INIT          |#cmd_pcie_ep_controller_init_request     |\n+ * |#CMD_PCIE_EP_CONTROLLER_OFF           |#cmd_pcie_ep_controller_off_request      |\n+ *\n+ * @cond (!bpmp_safe)\n+ *\n+ * The following additional MRQs are supported on non-functional-safety\n+ * builds:\n+ * |sub-command                           |payload                                  |\n+ * |--------------------------------------|-----------------------------------------|\n+ * |#CMD_PCIE_RP_CONTROLLER_OFF           |#cmd_pcie_rp_controller_off_request      |\n+ *\n+ * @endcond\n+ *\n+ */\n+struct mrq_pcie_request {\n+\t/** @brief Sub-command ID from @ref mrq_pcie_cmd. */\n+\tuint32_t cmd;\n+\n+\tunion {\n+\t\tstruct cmd_pcie_ep_controller_init_request ep_ctrlr_init;\n+\t\tstruct cmd_pcie_ep_controller_off_request ep_ctrlr_off;\n+\t\t/** @cond (!bpmp_safe) */\n+\t\tstruct cmd_pcie_rp_controller_off_request rp_ctrlr_off;\n+\t\t/** @endcond */\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} PCIE */\n+/** @endcond */\n+\n+/** @cond (bpmp_t264)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_CR7\n+ * @brief Perform a CR7 operation\n+ *\n+ * * Initiators: CPU_S\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_cr7_request\n+ *\n+ * @addtogroup CR7\n+ * @{\n+ */\n+\n+/**\n+ * @brief Payload for #MRQ_CR7\n+ * 2 fields for future parameters are provided. These must be 0 currently.\n+ */\n+struct cmd_cr7_request {\n+\tuint32_t fld0;\n+\tuint32_t fld1;\n+} BPMP_ABI_PACKED;\n+\n+struct cmd_cr7_query_abi_request {\n+\t/** #MRQ_CR7 sub-command identifier from @ref mrq_cr7_cmd */\n+\tuint32_t type;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_CR7.\n+ */\n+enum mrq_cr7_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP driver supports the specified request\n+\t * type\n+\t *\n+\t * mrq_response:: err is 0 if the specified request is supported and\n+\t * -#BPMP_ENODEV otherwise\n+\t */\n+\tCMD_CR7_QUERY_ABI = 0,\n+\n+\t/** @brief Enter CR7 state on the package BPMP-FW is running on. */\n+\tCMD_CR7_ENTRY = 1,\n+\t/** @brief Exit CR7 state on the package BPMP-FW is running on. */\n+\tCMD_CR7_EXIT = 2,\n+\n+\tCMD_CR7_MAX,\n+};\n+\n+/**\n+ * @ingroup CR7\n+ * @brief #MRQ_CR7 structure\n+ *\n+ * |Sub-command                 |Payload                    |\n+ * |----------------------------|---------------------------|\n+ * |#CMD_CR7_QUERY_ABI          | #cmd_cr7_query_abi_request|\n+ * |#CMD_CR7_ENTRY              | #cmd_cr7_request\t    |\n+ * |#CMD_CR7_EXIT               | #cmd_cr7_request\t    |\n+\n+ */\n+struct mrq_cr7_request {\n+\t/** @brief Sub-command ID from @ref mrq_cr7_cmd. */\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_cr7_query_abi_request query_abi;\n+\t\tstruct cmd_cr7_request cr7_request;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} CR7 */\n+/** @endcond */\n+\n+/** @cond (bpmp_tb500)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_HWPM\n+ * @brief Configure and query HWPM functionality\n+ *\n+ * * Initiators: CCPLEX\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_hwpm_request\n+ * * Response Payload: @ref mrq_hwpm_response\n+ *\n+ * @addtogroup HWPM\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_HWPM.\n+ */\n+enum mrq_hwpm_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_HWPM sub-command.\n+\t *\n+\t * mrq_response:err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_HWPM_QUERY_ABI = 1,\n+\n+\t/**\n+\t * @brief Configure IPMU triggers\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_IPMU_SET_TRIGGERS = 2,\n+\n+\t/**\n+\t * @brief Configure IPMU payloads and shifts\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_IPMU_SET_PAYLOADS_SHIFTS = 3,\n+\n+\t/**\n+\t * @brief Get maximum number of payloads\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t */\n+\tCMD_HWPM_IPMU_GET_MAX_PAYLOADS = 4,\n+\n+\t/**\n+\t * @brief Configure NVTHERM sample rate\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_NVTHERM_SET_SAMPLE_RATE = 5,\n+\n+\t/**\n+\t * @brief Set NVTHERM bubble interval\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_NVTHERM_SET_BUBBLE_INTERVAL = 6,\n+\n+\t/**\n+\t * @brief Configure NVTHERM DG flexible channels\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_NVTHERM_SET_FLEX_CHANNELS = 7,\n+\n+\t/**\n+\t * @brief Get ISENSE sensor name\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_ISENSE_GET_SENSOR_NAME = 8,\n+\n+\t/**\n+\t * @brief Get ISENSE sensor channel\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_ISENSE_GET_SENSOR_CHANNEL = 9,\n+\n+\t/**\n+\t * @brief Get ISENSE sensor scale factor\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_ISENSE_GET_SENSOR_SCALE_FACTOR = 10,\n+\n+\t/**\n+\t * @brief Get ISENSE sensor offset\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t * | -#BPMP_ENODATA | No sensor offset.                           |\n+\t */\n+\tCMD_HWPM_ISENSE_GET_SENSOR_OFFSET = 11,\n+\n+\t/**\n+\t * @brief Get ISENSE sum block name\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_ISENSE_GET_SUM_BLOCK_NAME = 12,\n+\n+\t/**\n+\t * @brief Get ISENSE sum input sensor IDs\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_HWPM is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_HWPM_ISENSE_GET_SUM_BLOCK_INPUTS = 13,\n+\n+\t/**\n+\t * @brief Largest supported #MRQ_HWPM sub-command identifier + 1\n+\t */\n+\tCMD_HWPM_MAX,\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_QUERY_ABI\n+ */\n+struct cmd_hwpm_query_abi_req {\n+\t/** @brief Sub-command identifier from @ref mrq_hwpm_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Maximum array length for IPMU trigger bitmask\n+ */\n+#define HWPM_IPMU_TRIGGER_ARR_LEN\t28U\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_IPMU_SET_TRIGGERS\n+ */\n+struct cmd_hwpm_ipmu_set_triggers_req {\n+\t/** @brief IPMU physical ID\n+\t *\n+\t * @note Valid range from [0, MAX_CPU_CORES), see @ref bpmp_hwpm_core_config\n+\t */\n+\tuint32_t ipmu_phys_id;\n+\t/** @brief Trigger bitmask, see @ref bpmp_ipmu_trigger_ids\n+\t *\n+\t * @note Setting a trigger bit will cause the associated trigger to\n+\t *       generate an output packet from IPMU to the HWPM perfmux.\n+\t * @note Up to a maximum possible 896 triggers\n+\t */\n+\tuint32_t triggers[HWPM_IPMU_TRIGGER_ARR_LEN];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Array length for IPMU payload bitmask\n+ */\n+#define HWPM_IPMU_PAYLOAD_ARR_LEN\t26U\n+\n+/**\n+ * @brief Array length for IPMU payload shift bitmask\n+ */\n+#define HWPM_IPMU_SHIFT_ARR_LEN\t2U\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_IPMU_SET_PAYLOADS_SHIFTS\n+ */\n+struct cmd_hwpm_ipmu_set_payloads_shifts_req {\n+\t/** @brief IPMU physical ID\n+\t *\n+\t * @note Valid range from [0, MAX_CPU_CORES), see @ref bpmp_hwpm_core_config\n+\t */\n+\tuint32_t ipmu_phys_id;\n+\t/** @brief Payload bitmask, see @ref bpmp_ipmu_payload_ids\n+\t *\n+\t * @note Setting a payload bit will add the associated payload to the\n+\t *       IPMU output packet.\n+\t * @note The maximum number of payloads is platform dependent,\n+\t *       @see #CMD_HWPM_IPMU_GET_MAX_PAYLOADS\n+\t * @note To disable IPMU streaming on this instance, set all payload bits to 0.\n+\t * @note Up to a maximum of 832 available payloads\n+\t */\n+\tuint32_t payloads[HWPM_IPMU_PAYLOAD_ARR_LEN];\n+\t/**\n+\t * @brief Payload shift mask\n+\t *\n+\t * @note Setting the i-th shift bit will right-shift the\n+\t *       i-th enabled payload by 1 bit.\n+\t * @note Up to a maximum of 64 simultaneous emitted payloads\n+\t */\n+\tuint32_t shifts[HWPM_IPMU_SHIFT_ARR_LEN];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_IPMU_GET_MAX_PAYLOADS\n+ */\n+struct cmd_hwpm_ipmu_get_max_payloads_req {\n+\tBPMP_ABI_EMPTY\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_NVTHERM_SET_SAMPLE_RATE\n+ */\n+struct cmd_hwpm_nvtherm_set_sample_rate_req {\n+\t/** @brief Sample rate in microseconds\n+\t *\n+\t * @note Requesting a sample rate of 0 will disable NVTHERM streaming.\n+\t */\n+\tuint32_t sample_rate;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_NVTHERM_SET_BUBBLE_INTERVAL\n+ */\n+struct cmd_hwpm_nvtherm_set_bubble_interval_req {\n+\t/** @brief Bubble interval in microseconds */\n+\tuint32_t bubble_interval;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Maximum array length for NVTHERM flexible channel bitmask\n+ */\n+#define HWPM_NVTHERM_FLEX_CHANNEL_ARR_LEN\t29U\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_NVTHERM_SET_FLEX_CHANNELS\n+ */\n+struct cmd_hwpm_nvtherm_set_flex_channels_req {\n+\t/** @brief NVTHERM flexible channel bitmask\n+\t *\n+\t * @see #bpmp_nvtherm_flex_channel_ids\n+\t *\n+\t * @note Up to a maximum of 928 flexible channels\n+\t */\n+\tuint32_t channels[HWPM_NVTHERM_FLEX_CHANNEL_ARR_LEN];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_NAME\n+ */\n+struct cmd_hwpm_isense_get_sensor_name_req {\n+\t/** @brief Sensor ID from @ref bpmp_isense_sensor_ids */\n+\tuint32_t sensor_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_CHANNEL\n+ */\n+struct cmd_hwpm_isense_get_sensor_channel_req {\n+\t/** @brief Sensor ID from @ref bpmp_isense_sensor_ids */\n+\tuint32_t sensor_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_SCALE_FACTOR\n+ */\n+struct cmd_hwpm_isense_get_sensor_scale_factor_req {\n+\t/** @brief Sensor ID from @ref bpmp_isense_sensor_ids */\n+\tuint32_t sensor_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_OFFSET\n+ */\n+struct cmd_hwpm_isense_get_sensor_offset_req {\n+\t/** @brief Sensor ID from @ref bpmp_isense_sensor_ids */\n+\tuint32_t sensor_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SUM_BLOCK_NAME\n+ */\n+struct cmd_hwpm_isense_get_sum_block_name_req {\n+\t/** @brief Sum block index */\n+\tuint32_t sum_block_index;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SUM_BLOCK_INPUTS\n+ */\n+struct cmd_hwpm_isense_get_sum_block_inputs_req {\n+\t/** @brief Sum block index */\n+\tuint32_t sum_block_index;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_IPMU_GET_MAX_PAYLOADS\n+ */\n+struct cmd_hwpm_ipmu_get_max_payloads_resp {\n+\t/** @brief Maximum number of payloads */\n+\tuint32_t max_payloads;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Maximum array length for ISENSE sensor name\n+ */\n+#define HWPM_ISENSE_SENSOR_MAX_NAME_LEN\t\t64U\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_NAME\n+ */\n+struct cmd_hwpm_isense_get_sensor_name_resp {\n+\t/** @brief Sensor name */\n+\tchar sensor_name[HWPM_ISENSE_SENSOR_MAX_NAME_LEN];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_CHANNEL\n+ */\n+struct cmd_hwpm_isense_get_sensor_channel_resp {\n+\t/** @brief Physical channel index */\n+\tuint32_t channel_index;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_SCALE_FACTOR\n+ */\n+struct cmd_hwpm_isense_get_sensor_scale_factor_resp {\n+\t/** @brief Scale factor */\n+\tfloat scale_factor;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SENSOR_OFFSET\n+ */\n+struct cmd_hwpm_isense_get_sensor_offset_resp {\n+\t/** @brief Offset sensor ID */\n+\tuint32_t offset_sensor_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Maximum array length for ISENSE sum name\n+ */\n+#define HWPM_ISENSE_SUM_BLOCK_MAX_NAME_LEN\t64U\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SUM_BLOCK_NAME\n+ */\n+struct cmd_hwpm_isense_get_sum_block_name_resp {\n+\t/** @brief Sum block name */\n+\tchar sum_block_name[HWPM_ISENSE_SUM_BLOCK_MAX_NAME_LEN];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Maximum array length for ISENSE sum block input sensor IDs\n+ */\n+#define HWPM_ISENSE_SUM_BLOCK_INPUTS_MAX\t16U\n+\n+/**\n+ * @brief Response data for #MRQ_HWPM sub-command #CMD_HWPM_ISENSE_GET_SUM_BLOCK_INPUTS\n+ */\n+struct cmd_hwpm_isense_get_sum_block_inputs_resp {\n+\t/** @brief Input channel indices; negative if no input is applied */\n+\tint32_t input_channel_idx[HWPM_ISENSE_SUM_BLOCK_INPUTS_MAX];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_HWPM -command\n+ *\n+ * | Sub-command                              | Request payload                              |\n+ * | ---------------------------------------- | -------------------------------------------- |\n+ * | #CMD_HWPM_QUERY_ABI                      | #cmd_hwpm_query_abi_req                      |\n+ * | #CMD_HWPM_IPMU_SET_TRIGGERS              | #cmd_hwpm_ipmu_set_triggers_req              |\n+ * | #CMD_HWPM_IPMU_SET_PAYLOADS_SHIFTS       | #cmd_hwpm_ipmu_set_payloads_shifts_req       |\n+ * | #CMD_HWPM_IPMU_GET_MAX_PAYLOADS          | #cmd_hwpm_ipmu_get_max_payloads_req          |\n+ * | #CMD_HWPM_NVTHERM_SET_SAMPLE_RATE        | #cmd_hwpm_nvtherm_set_sample_rate_req        |\n+ * | #CMD_HWPM_NVTHERM_SET_BUBBLE_INTERVAL    | #cmd_hwpm_nvtherm_set_bubble_interval_req    |\n+ * | #CMD_HWPM_NVTHERM_SET_FLEX_CHANNELS      | #cmd_hwpm_nvtherm_set_flex_channels_req      |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_CHANNEL      | #cmd_hwpm_isense_get_sensor_channel_req      |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_SCALE_FACTOR | #cmd_hwpm_isense_get_sensor_scale_factor_req |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_OFFSET       | #cmd_hwpm_isense_get_sensor_offset_req       |\n+ * | #CMD_HWPM_ISENSE_GET_SUM_BLOCK_NAME      | #cmd_hwpm_isense_get_sum_block_name_req      |\n+ * | #CMD_HWPM_ISENSE_GET_SUM_BLOCK_INPUTS    | #cmd_hwpm_isense_get_sum_block_inputs_req    |\n+ */\n+struct mrq_hwpm_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_hwpm_query_abi_req query_abi;\n+\t\tstruct cmd_hwpm_ipmu_set_triggers_req ipmu_set_triggers;\n+\t\tstruct cmd_hwpm_ipmu_set_payloads_shifts_req ipmu_set_payloads_shifts;\n+\t\tstruct cmd_hwpm_ipmu_get_max_payloads_req ipmu_get_max_payloads;\n+\t\tstruct cmd_hwpm_nvtherm_set_sample_rate_req nvtherm_set_sample_rate;\n+\t\tstruct cmd_hwpm_nvtherm_set_bubble_interval_req nvtherm_set_bubble_interval;\n+\t\tstruct cmd_hwpm_nvtherm_set_flex_channels_req nvtherm_set_flex_channels;\n+\t\tstruct cmd_hwpm_isense_get_sensor_name_req isense_get_sensor_name;\n+\t\tstruct cmd_hwpm_isense_get_sensor_channel_req isense_get_sensor_channel;\n+\t\tstruct cmd_hwpm_isense_get_sensor_scale_factor_req isense_get_sensor_scale_factor;\n+\t\tstruct cmd_hwpm_isense_get_sensor_offset_req isense_get_sensor_offset;\n+\t\tstruct cmd_hwpm_isense_get_sum_block_name_req isense_get_sum_block_name;\n+\t\tstruct cmd_hwpm_isense_get_sum_block_inputs_req isense_get_sum_block_inputs;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for the #MRQ_HWPM -command\n+ *\n+ * | Sub-command                              | Response payload                              |\n+ * | ---------------------------------------- | --------------------------------------------- |\n+ * | #CMD_HWPM_QUERY_ABI                      | -                                             |\n+ * | #CMD_HWPM_IPMU_SET_TRIGGERS              | -                                             |\n+ * | #CMD_HWPM_IPMU_SET_PAYLOADS_SHIFTS       | -                                             |\n+ * | #CMD_HWPM_IPMU_GET_MAX_PAYLOADS          | #cmd_hwpm_ipmu_get_max_payloads_resp          |\n+ * | #CMD_HWPM_NVTHERM_SET_SAMPLE_RATE        | -                                             |\n+ * | #CMD_HWPM_NVTHERM_SET_BUBBLE_INTERVAL    | -                                             |\n+ * | #CMD_HWPM_NVTHERM_SET_FLEX_CHANNELS      | -                                             |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_NAME         | #cmd_hwpm_isense_get_sensor_name_resp         |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_CHANNEL      | #cmd_hwpm_isense_get_sensor_channel_resp      |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_SCALE_FACTOR | #cmd_hwpm_isense_get_sensor_scale_factor_resp |\n+ * | #CMD_HWPM_ISENSE_GET_SENSOR_OFFSET       | #cmd_hwpm_isense_get_sensor_offset_resp       |\n+ * | #CMD_HWPM_ISENSE_GET_SUM_BLOCK_NAME      | #cmd_hwpm_isense_get_sum_block_name_resp      |\n+ * | #CMD_HWPM_ISENSE_GET_SUM_BLOCK_INPUTS    | #cmd_hwpm_isense_get_sum_block_inputs_resp    |\n+ */\n+struct mrq_hwpm_response {\n+\tuint32_t err;\n+\tunion {\n+\t\tstruct cmd_hwpm_ipmu_get_max_payloads_resp ipmu_get_max_payloads;\n+\t\tstruct cmd_hwpm_isense_get_sensor_name_resp isense_get_sensor_name;\n+\t\tstruct cmd_hwpm_isense_get_sensor_channel_resp isense_get_sensor_channel;\n+\t\tstruct cmd_hwpm_isense_get_sensor_scale_factor_resp isense_get_sensor_scale_factor;\n+\t\tstruct cmd_hwpm_isense_get_sensor_offset_resp isense_get_sensor_offset;\n+\t\tstruct cmd_hwpm_isense_get_sum_block_name_resp isense_get_sum_block_name;\n+\t\tstruct cmd_hwpm_isense_get_sum_block_inputs_resp isense_get_sum_block_inputs;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} HWPM */\n+/** @endcond */\n+\n+/** @cond (bpmp_tb500)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_DVFS\n+ * @brief Configure DVFS functionality\n+ *\n+ * * Initiators: CCPLEX\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_dvfs_request\n+ *\n+ * @addtogroup DVFS\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_DVFS.\n+ */\n+enum mrq_dvfs_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_DVFS sub-command.\n+\t *\n+\t * mrq_response:err is 0 if the specified request is\n+\t * supported and -#BPMP_ENODEV otherwise.\n+\t */\n+\tCMD_DVFS_QUERY_ABI = 1,\n+\n+\t/**\n+\t * @brief Configure DVFS controller\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_DVFS is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_DVFS_SET_CTRL_STATE = 2,\n+\n+\t/**\n+\t * @brief Configure DVFS manager\n+\t *\n+\t * mrq_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                 |\n+\t * | -------------- | ------------------------------------------- |\n+\t * | 0              | Success                                     |\n+\t * | -#BPMP_ENODEV  | #MRQ_DVFS is not supported by BPMP-FW.      |\n+\t * | -#BPMP_ENOTSUP | Subcommand is not supported by BPMP-FW.     |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                 |\n+\t */\n+\tCMD_DVFS_SET_MGR_STATE = 3,\n+\n+\t/**\n+\t * @brief Largest supported #MRQ_DVFS sub-command identifier + 1\n+\t */\n+\tCMD_DVFS_MAX,\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_DVFS sub-command #CMD_DVFS_QUERY_ABI\n+ */\n+struct cmd_dvfs_query_abi_req {\n+\t/** @brief Sub-command identifier from @ref mrq_dvfs_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+struct cmd_dvfs_set_ctrl_state_req {\n+\t/** @brief Controller ID from @ref bpmp_dvfs_ctrl_ids */\n+\tuint32_t ctrl_id;\n+\t/** @brief Controller enable state */\n+\tuint32_t enable;\n+} BPMP_ABI_PACKED;\n+\n+struct cmd_dvfs_set_mgr_state_req {\n+\t/** @brief Manager ID from @ref bpmp_dvfs_mgr_ids */\n+\tuint32_t mgr_id;\n+\t/** @brief Manager enable state */\n+\tuint32_t enable;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_DVFS -command\n+ *\n+ * | Sub-command                              | Request payload                              |\n+ * | ---------------------------------------- | -------------------------------------------- |\n+ * | #CMD_DVFS_QUERY_ABI                      | #cmd_dvfs_query_abi_req                      |\n+ * | #CMD_DVFS_SET_CTRL_STATE                 | #cmd_dvfs_set_ctrl_state_req                 |\n+ * | #CMD_DVFS_SET_MGR_STATE                  | #cmd_dvfs_set_mgr_state_req                  |\n+ */\n+struct mrq_dvfs_request {\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_dvfs_query_abi_req query_abi;\n+\t\tstruct cmd_dvfs_set_ctrl_state_req set_ctrl_state;\n+\t\tstruct cmd_dvfs_set_mgr_state_req set_mgr_state;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} DVFS */\n+/** @endcond */\n+\n+/** @cond (bpmp_tb500)\n+ * @ingroup MRQ_Codes\n+ * @def MRQ_PPP_PROFILE\n+ * @brief Get power/performance profile configuration settings.\n+ *\n+ * * Initiators: Any\n+ * * Targets: BPMP\n+ * * Request Payload: @ref mrq_ppp_profile_request\n+ * * Response Payload: @ref mrq_ppp_profile_response\n+ *\n+ * @addtogroup PPP\n+ * @{\n+ */\n+\n+/**\n+ * @brief Sub-command identifiers for #MRQ_PPP_PROFILE.\n+ */\n+enum mrq_ppp_profile_cmd {\n+\t/**\n+\t * @brief Check whether the BPMP-FW supports the specified\n+\t * #MRQ_PPP_PROFILE sub-command.\n+\t *\n+\t * mrq_ppp_profile_response:err is 0 if the specified request is\n+\t * supported and -#BPMP_ENOTSUP otherwise.\n+\t */\n+\n+\tCMD_PPP_PROFILE_QUERY_ABI = 0,\n+\t/**\n+\t * @brief Query the BPMP for the CPU core and SLC slice configuration associated\n+\t * with a given Power/Performance Profile (PPP).\n+\t *\n+\t * mrq_ppp_profile_response:err is defined as:\n+\t *\n+\t * | Value\t    | Description                                    |\n+\t * |----------------|------------------------------------------------|\n+\t * | 0\t\t    | Success                                        |\n+\t * | -#BPMP_ENOTSUP | #MRQ_PPP_PROFILE is not supported by BPMP-FW.  |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                    |\n+\t */\n+\tCMD_PPP_PROFILE_QUERY_MASKS = 1,\n+\t/**\n+\t * @brief Query BPMP for the CPU mask corresponding to a requested\n+\t * number of active CPU cores.\n+\t *\n+\t * mrq_ppp_profile_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                    |\n+\t * |----------------|------------------------------------------------|\n+\t * | 0              | Success                                        |\n+\t * | -#BPMP_ENOTSUP | #MRQ_PPP_PROFILE is not supported by BPMP-FW.  |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                    |\n+\t */\n+\tCMD_PPP_CORE_QUERY_CPU_MASK = 2,\n+\t/**\n+\t * @brief Query BPMP-FW for the currently available Power/Performance Profiles.\n+\t *\n+\t * mrq_ppp_profile_response:err is defined as:\n+\t *\n+\t * | Value          | Description                                    |\n+\t * |----------------|------------------------------------------------|\n+\t * | 0              | Success                                        |\n+\t * | -#BPMP_ENOTSUP | #MRQ_PPP_PROFILE is not supported by BPMP-FW.  |\n+\t * | -#BPMP_EINVAL  | Invalid request parameters.                    |\n+\t */\n+\tCMD_PPP_AVAILABLE_QUERY = 3,\n+};\n+\n+/**\n+ * @brief Request data for #MRQ_PPP_PROFILE sub-command\n+ *        #CMD_PPP_PROFILE_QUERY_ABI\n+ */\n+struct cmd_ppp_profile_query_abi_req {\n+\t/** @brief Sub-command identifier from @ref mrq_ppp_profile_cmd */\n+\tuint32_t cmd_code;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_PPP_PROFILE sub-command\n+ *        #CMD_PPP_AVAILABLE_QUERY\n+ */\n+struct cmd_ppp_available_query_resp {\n+\t/**\n+\t * @brief Bitmask of available profiles.\n+\t * Bit N = 1 ⇒ profile N is available\n+\t */\n+\tuint32_t avail_ppp_mask;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_PPP_PROFILE sub-command\n+ *        #CMD_PPP_PROFILE_QUERY_MASKS\n+ */\n+struct cmd_ppp_profile_query_masks_req {\n+\t/** @brief power/perf profile identifier */\n+\tuint32_t profile_id;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for #MRQ_PPP_PROFILE sub-command\n+ *        #CMD_PPP_PROFILE_QUERY_MASKS\n+ */\n+struct cmd_ppp_profile_query_masks_resp {\n+\t/** @brief Enabled cores in this profile */\n+\tuint32_t  num_active_cores;\n+\t/** @brief Enabled SLC slices in this profile */\n+\tuint32_t  num_active_slcs;\n+\t/** @brief Number of valid words in active_core_masks array */\n+\tuint32_t  max_num_core_words;\n+\t/** @brief Number of valid words in active_slc_masks array */\n+\tuint32_t  max_num_slc_words;\n+\t/** @brief Enabled cores bit mask (bit N = 1 => core N enabled) */\n+\tuint32_t  active_core_masks[8];\n+\t/** @brief Enabled SLC slices bit mask (bit N = 1 => SLC slice N enabled) */\n+\tuint32_t  active_slc_masks[8];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request data for #MRQ_PPP_PROFILE sub-command\n+ *        #CMD_PPP_CORE_QUERY_CPU_MASK\n+ */\n+struct cmd_ppp_core_query_cpu_mask_req {\n+\t/** @brief Requested number of active cores */\n+\tuint32_t num_cores;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response data for #MRQ_PPP_PROFILE sub-command\n+ *        #CMD_PPP_CORE_QUERY_CPU_MASK\n+ */\n+struct cmd_ppp_core_query_cpu_mask_resp {\n+\t/** @brief Number of valid words in active_core_masks array */\n+\tuint32_t max_num_words;\n+\t/** @brief Enabled CPU core bitmask (bit N = 1 ⇒ core N enabled) */\n+\tuint32_t active_core_masks[8];\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Request payload for the #MRQ_PPP_PROFILE -command\n+ *\n+ * | Sub-command                   | Request payload                        |\n+ * |-------------------------------|----------------------------------------|\n+ * | #CMD_PPP_PROFILE_QUERY_ABI    | #cmd_ppp_profile_query_abi_req         |\n+ * | #CMD_PPP_PROFILE_QUERY_MASKS  | #cmd_ppp_profile_query_masks_req       |\n+ * | #CMD_PPP_CORE_QUERY_CPU_MASK  | #cmd_ppp_core_query_cpu_mask_req           |\n+ * | #CMD_PPP_AVAILABLE_QUERY      | -                                      |\n+ */\n+struct mrq_ppp_profile_request {\n+\t/** @brief Sub-command ID from @ref mrq_ppp_profile_cmd. */\n+\tuint32_t cmd;\n+\tunion {\n+\t\tstruct cmd_ppp_profile_query_abi_req query_abi;\n+\t\tstruct cmd_ppp_profile_query_masks_req ppp_profile_masks_req;\n+\t\tstruct cmd_ppp_core_query_cpu_mask_req ppp_core_mask_req;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/**\n+ * @brief Response payload for the #MRQ_PPP_PROFILE -command.\n+ *\n+ * | Sub-command                   | Response payload                       |\n+ * |-------------------------------|----------------------------------------|\n+ * | #CMD_PPP_PROFILE_QUERY_ABI    | -                                      |\n+ * | #CMD_PPP_PROFILE_QUERY_MASKS  | #cmd_ppp_profile_query_masks_resp      |\n+ * | #CMD_PPP_CORE_QUERY_CPU_MASK  | #cmd_ppp_core_query_cpu_mask_resp          |\n+ * | #CMD_PPP_AVAILABLE_QUERY      | #cmd_ppp_available_query_resp          |\n+ */\n+struct mrq_ppp_profile_response {\n+\tuint32_t err;\n+\tunion {\n+\t\tstruct cmd_ppp_profile_query_masks_resp ppp_profile_masks_resp;\n+\t\tstruct cmd_ppp_core_query_cpu_mask_resp ppp_core_mask_resp;\n+\t\tstruct cmd_ppp_available_query_resp ppp_avail_query_resp;\n+\t} BPMP_UNION_ANON;\n+} BPMP_ABI_PACKED;\n+\n+/** @} PPP */\n+/** @endcond */\n \n /**\n  * @addtogroup Error_Codes\n@@ -3953,6 +6728,8 @@ struct mrq_gears_response {\n #define BPMP_ENOSYS\t38\n /** @brief Invalid slot */\n #define BPMP_EBADSLT\t57\n+/** @brief No data */\n+#define BPMP_ENODATA\t61\n /** @brief Invalid message */\n #define BPMP_EBADMSG\t77\n /** @brief Operation not supported */\n",
    "prefixes": [
        "v3",
        "1/6"
    ]
}