get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2232862,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2232862/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260505100523.1922388-12-vladimir.oltean@nxp.com/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/28/?format=api",
        "name": "Linux PCI development",
        "link_name": "linux-pci",
        "list_id": "linux-pci.vger.kernel.org",
        "list_email": "linux-pci@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260505100523.1922388-12-vladimir.oltean@nxp.com>",
    "list_archive_url": null,
    "date": "2026-05-05T10:05:03",
    "name": "[v8,phy-next,11/31] scsi: ufs: qcom: call phy_init() before phy_power_on()",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "42375e63cc2d3e0edb9927acab11e68368aeb23b",
    "submitter": {
        "id": 75582,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/75582/?format=api",
        "name": "Vladimir Oltean",
        "email": "vladimir.oltean@nxp.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260505100523.1922388-12-vladimir.oltean@nxp.com/mbox/",
    "series": [
        {
            "id": 502805,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/502805/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=502805",
            "date": "2026-05-05T10:04:53",
            "name": "Split Generic PHY consumer and provider API",
            "version": 8,
            "mbox": "http://patchwork.ozlabs.org/series/502805/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2232862/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2232862/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-53722-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-pci@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=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=TCarC9Xi;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-53722-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=\"TCarC9Xi\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.72.37",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=nxp.com",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g8vcK5V2yz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 05 May 2026 20:18:41 +1000 (AEST)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 9B1F6305EF6E\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 10:11:33 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A31943FAE10;\n\tTue,  5 May 2026 10:06:14 +0000 (UTC)",
            "from AM0PR02CU008.outbound.protection.outlook.com\n (mail-westeuropeazon11013037.outbound.protection.outlook.com [52.101.72.37])\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 4BA3733A9DB;\n\tTue,  5 May 2026 10:06:08 +0000 (UTC)",
            "from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13)\n by DB9PR04MB8363.eurprd04.prod.outlook.com (2603:10a6:10:24b::11) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 5 May\n 2026 10:05:59 +0000",
            "from AM9PR04MB8585.eurprd04.prod.outlook.com\n ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com\n ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9870.023; Tue, 5 May 2026\n 10:05:58 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777975574; cv=fail;\n b=iONrgFftbNiydYhENnFCXcnNJKOvu7b16rst89Mdc7ncTqvk+nXPpx5E3q/0WIBc2w0ftFsIC00rFZzawH9HhVxmcny1IlAOFXBBAf23kFh3XnyVxRRu96zPajnFXJYH2uK4dmE0znZZSjq/PxWLlAtYaUpdxaPnmLCO9IUtuK0=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=g26yx/JvVFeKw0kuns/qvqf21hvG56TG1Zx4xMt+pmPrDydqTLJe8IeMXieOWlTxiMz0bKOF3yyKRYDIi4bCKUUiktTuKKq610apl86metyJ9FrWhRvo93Czpru7Bh5fweUOoPoJ3cn/aTf1g/3ywm715AnG0XrNztWthifFJ7e1Fh7u229ZtYLAT9ZtlvkTSww3x4gN0YnjNDKF7nbKq6lv73ZOKiaNf+yYqsZoVfY3S1YfMXiguLu+Ee3X/A7rFjO7uHCI+d5A2/sOOp1XjjC9rj/z7d3IWvJGdlu2AqSWUgjL35A3FtJBzBuJPiIqVRKd79TLst+afQG3Q1iayw=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777975574; c=relaxed/simple;\n\tbh=SYXTVr/5771eCGd7rMmYbkCnuWgSL84ABvxAeLG447g=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=Zee4OLF2Fm8a4PlVCQM+CNm+jRvcncC2iV5qn8ubh3bGTgl2s5HFW+rdilpwaVuN1jHLh9zwRfqAUh+smP9xLdneGTsTRJWpN0Zgn0wpKZw/TPGFUJqnl9u4Vf4mwyJTdi7F90lU4qk6LmlsMJKLTJ5X+DNG1Iq5AiY4fFswOeQ=",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=UYAW3Mf5UXamv/g9VDqzzbVHVo1IqRgXCFZ4dRE6avE=;\n b=mmT9aqwUmfQthXIZ0nf14QZ6NbFE9Z5E9iUf5GB5m7M30qBBy3SsnR5QvcUCxClRx+B9fXtJeqr6bvEH9kFEQbT7AdCwDqbG+5MyqkyrRXwfhOPLA7E2wDupWy7ax4bP5pvOsUbkOCcbTJ0bUvMMgfWQBc3uh/g2EZWgB6i/x1wk8Z4eEUxN0UwfB4IBFLLWRDbJpef8sqmUZezv37o4TyuoNzbMkkJHJE6Sld7Q/74yFNGFvTeWjdXLKNFqc/nxxZZnzOPE9C/jj95mRcG7cVXCfCHLRntkXshBO8SHcYsN+T7snWycbXkwdR7Ri2o17xejGRB/iIW7BGwEsseZqw=="
        ],
        "ARC-Authentication-Results": [
            "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com;\n spf=pass smtp.mailfrom=nxp.com;\n dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=TCarC9Xi; arc=fail smtp.client-ip=52.101.72.37",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=UYAW3Mf5UXamv/g9VDqzzbVHVo1IqRgXCFZ4dRE6avE=;\n b=TCarC9Xiv1X/aTX8Q3Y5pxc8dmztKKCw54US5enQ8u52WM8DBqjZD2eu9N+fMUanRHTbB+ar8SB2kggX8DFPeYhMPb4m+M45OKimqhymu0TyZJkeJStXw/8ThiD0wVX1i1HzDIRwH97e3vYO9BtFChYfkr/pM9kKDpM4sfNs1Y1kmVC8qkSg4m2uiqmRPAl18N5hIQNZdCGPL+nStVW9jM/pvbOgr4/UB6YtxfEh91QI61j4tiRAYBCxPn6JwgCTNdyLwgm4O/2Ck2m+GEhtqngrdIqV8sB734tlacOiEHlTGgpIj2p0Gtx8lVqu9PjoFgUsSTgqLai/d60A1xe3FA==",
        "From": "Vladimir Oltean <vladimir.oltean@nxp.com>",
        "To": "linux-phy@lists.infradead.org",
        "Cc": "Vinod Koul <vkoul@kernel.org>,\n\tNeil Armstrong <neil.armstrong@linaro.org>,\n\tdri-devel@lists.freedesktop.org,\n\tfreedreno@lists.freedesktop.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-arm-msm@vger.kernel.org,\n\tlinux-can@vger.kernel.org,\n\tlinux-gpio@vger.kernel.org,\n\tlinux-ide@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-media@vger.kernel.org,\n\tlinux-pci@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org,\n\tlinux-riscv@lists.infradead.org,\n\tlinux-rockchip@lists.infradead.org,\n\tlinux-samsung-soc@vger.kernel.org,\n\tlinux-scsi@vger.kernel.org,\n\tlinux-sunxi@lists.linux.dev,\n\tlinux-tegra@vger.kernel.org,\n\tlinux-usb@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tspacemit@lists.linux.dev,\n\tUNGLinuxDriver@microchip.com,\n\t\"James E.J. Bottomley\" <James.Bottomley@HansenPartnership.com>,\n\t\"Martin K. Petersen\" <martin.petersen@oracle.com>,\n\tDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,\n\tNitin Rawat <quic_nitirawa@quicinc.com>,\n\tManivannan Sadhasivam <mani@kernel.org>",
        "Subject": "[PATCH v8 phy-next 11/31] scsi: ufs: qcom: call phy_init() before\n phy_power_on()",
        "Date": "Tue,  5 May 2026 13:05:03 +0300",
        "Message-Id": "<20260505100523.1922388-12-vladimir.oltean@nxp.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260505100523.1922388-1-vladimir.oltean@nxp.com>",
        "References": "<20260505100523.1922388-1-vladimir.oltean@nxp.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "FR4P281CA0329.DEUP281.PROD.OUTLOOK.COM\n (2603:10a6:d10:eb::12) To AM9PR04MB8585.eurprd04.prod.outlook.com\n (2603:10a6:20b:438::13)",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-pci@vger.kernel.org",
        "List-Id": "<linux-pci.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "AM9PR04MB8585:EE_|DB9PR04MB8363:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "f1cc87e0-9e67-43cf-f975-08deaa8de793",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|376014|1800799024|19092799006|7416014|366016|22082099003|18002099003|56012099003;",
        "X-Microsoft-Antispam-Message-Info": "\n\t73yzMLF9LD0w590Xu8FOvjQgYAxxuQt9n7c5dxgYkmvMtpdcHEwTBcmSPk878pgHH1VT2bjVbIXex3MKdwkpQRXl2DWufK8fCH5OJiKNRFmrCeC2xBs6IFtbDIW4IXyzmEY0346lQTmoVY1x9CDVTR4ff3GyacpH93+tu94cf/Atu3oAyeWnjiklCLBm9ItzJWqsKNrzVslPLbqAJW8ZFqvYxyUiDXr+lKj6GEv8NHqb5ZYmclm3cTHuK5OmgzXBwIcQx9c4XYryGRu2LpXFi663A5raxLbM5RMyKVQ2fUohohHrUOe5qRhfaiZWb1SSaljTU66idtuWx3zNHvQGq3uAo3+5YzTbHjzpywwZJUnl7F3pct0w3yfB6C+FsPZqWN1468Nc/cD6VzRh5U1p3jQJQWNDMKixw9hMTQgmNdvK9crCQfGerqCqqn7l88jTA0P3VHJASTZwNjbrg4sEroifU0ArwpjxJfRKhRD/Xbq8i/U5CULBBF+A3Aep9++hs8fQNf9AA5CEJwxnRBaBbpDvcVew3TfjZIBy1yPLi3AyiegNhlagz6P7eEChBORvXPW6FdTnPzfb8jXc5Pw9W48OpOBnledWIVGRN+R7WEymq9zifJc5X0N9LSgPp6i+/+EXk8cN4sDTf0P05wPZfZOKYTUZq1zmqSzhQ3h0WE314wmcT3rejfH9ZzpXKjYgdJMitpepRDMzdPusK5KXkg==",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8585.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(19092799006)(7416014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n 1gPMaARTglJuKkYD2FywXTG4+TKSzvyTxMQWUG7d6Xc1kVh9GjB07f9twZ5tZ2SnFaDS5PgdywVQQ5lWhOKv7San1xhNnY/Oe4GlD3l251tpnUbQjV/LizaFV37iUiGvhFMyAtxAAOmFapZNqWf+nsG+Hnlq/m1V9C3s3PbkOJf00X7A6MdTLSC3VvNv4xR8IY1vT2bQ3NHApHdGDUjD4dWwt14N9PjPIH0Eh0LDifML0jqLL8IBde/8gkMcYP26r6M7YX++xjO9eTEjh5foJtpntTNp1819XG/CNUcHqr2i0AoO6X0r4LDmEuRDTlZHQrhLx2dPF8zYD+5Vlj/xpe+gtoRW0WJI94Lbxjd45IuU21/uM/yGQd9k7DDt0R0Gi58rztYygwxM3dtYygyeOpS8F+h3BpfUrBEZNVxOkWKOED9C+utUYTWyOXr7aSDUN940t2mwPTFMd3E3wp96YcuQdu8QcIs2D+9Cjk8hNISaWQ6amZvKEcXRuDbqAyLt19wvfFY2yPJKLx8VdGt1VD5UBDoDy0f000j4xMYkrtWNF3C+H0H04VnAcace7+bXArOJLEWM3PuB2ERPX/wx9Rkiuj8P0aGdD3SksmkElqzlUC8vsJtXcPKdlu1/ryx5BXSlznPzxdEisH0c9rWuV2Yuce0o+IaWyevy+yR15H1LUKc03nvYa5toEbArqggZgM/DI84uoQz+NCU8tRUPV6fdQaDhRQb6eidL1v0DIYrdRLk9uemCkCwf6piCoQYHaoHtXZgj+94mebDwmaVEV+iJ8vM7KGGap4M5HH8fogTSoHX+1zthfqweeiaT1LJx0JRpv2thTTcgCtx5mCXotND0116an1rpL45N++nJHwKt3qykgcOqSLlSZs9b1SB0o6ApIBDK7S9fyoeiXWHaANf1Hwec5yMKok2rYgw0v5BLvMwPn5pREoO3y5Gj+ayYOisJ//iI/k7bkJXkSq+QsdyRHIfKtT5GacAN3W1r0b3L0pCXQgZl/xBQIL09Yy8rs1aAIMd6jgnAuaEWfkvc5z8igS/IB+J4RfcUzKZa5KqPxnWSU5fh2Na9ZnUd1OZWjBnPY0SbsuPXNgt5C5WqJNG6gmOkB55grZBliZmuzxDs602oTwSZ2pMixDelSPNpGr/WjEzQHg9khzbww3EqYD8Ji+Q6OF7lON7JEnBg2i4oCCrcljv6UDFYi3miGbFMk5rYZw2Gg6ThlHpgCi5CFzGMU3B73YjguS/LZVgachD+dC3NqJAX3qskl2/n6Yf9IAYxsMglzUpXCy97SLbe44Mm35cSnPOAA4qTUatcJLeUw7pSh8C/+QgNp2bLKoiD31rSMXX5+Dvh2cSpBGXn9O84XxKGkD/hkd+k1lH5uEcSN9MWDA+qSsi708Pl2LgkSnltplilJ7PtC16NOUpKd3xZXoRFw0TOrr5mxeDSCCsM475VAuJW4mFf5vpWo/6Yg98fTi01hSg3I3CM4EKgQ3WT1rUxCUUA27I62dR01uc5OnajTbQY98wAdmvXdejmO/6MvjYHBN1LjM5TIpYhsOWOYOg3xGe/qEYGXZrKVv1IZvaEc1zF5xPFaa6UxyFLIY2coPt3S/zwUaE0TzSrSjS7D2LmkuS7jd5Z7Mvekm/nacZONsdcgSq2OtUmxn/MHXO5eypWCIdPE0k98cPhn3n/OaYaQey/x6GF7Q8krKKV8wW2Xj5HDTlWRVURDQGh6DeEx9I5wvtRzEbLNWTXHg==",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n f1cc87e0-9e67-43cf-f975-08deaa8de793",
        "X-MS-Exchange-CrossTenant-AuthSource": "AM9PR04MB8585.eurprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "05 May 2026 10:05:58.7849\n (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n qFRHmG9sOqG9/oHc2veaP7HwAxOaYMFxwrPf+r2OjH094OolpS294ZwOPjEYwSHtnhj63RkVpuRrzu9hmUqLRg==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB9PR04MB8363"
    },
    "content": "The Qualcomm UFS host controller interacts with the QMP PHY in a way\nwhich violates the Generic PHY API expectation, documented in section\n\"Order of API calls\" from Documentation/driver-api/phy/phy.rst, and then\ntries to hide it.\n\nNamely, calls must be made in the phy_init() -> phy_power_on() ->\nphy_power_off() -> phy_exit() sequence.\n\nWhat we actually have is:\n\nufshcd_init()\n-> ufshcd_hba_init()\n   -> ufshcd_setup_clocks(hba, true)\n      -> ufshcd_vops_setup_clocks(hba, true, POST_CHANGE)\n         -> ufs_qcom_setup_clocks(hba, true, POST_CHANGE)\n            -> ufs_qcom_init() has not run, simply ignore\n   -> ufshcd_variant_hba_init()\n      -> ufs_qcom_init()\n         -> ufs_qcom_setup_clocks(hba, true, POST_CHANGE)\n            -> phy_power_on(phy)\n-> ufshcd_hba_enable()\n   -> ufshcd_vops_hce_enable_notify()\n      -> ufs_qcom_hce_enable_notify()\n         -> ufs_qcom_power_up_sequence()\n            -> if (phy->power_count) phy_power_off(phy)\n            -> phy_init(phy)\n\nThis \"works\" because the way that the \"phy_power_on was called before\nphy_init\\n\" warning condition is detected in phy-core.c is if the\npower_count is positive at the phy_init() call time.\n\nBy having that \"if (phy->power_count) phy_power_off(phy)\" logic, the\nufs-qcom.c technically sidesteps the test, but actually violates the\nGeneric PHY API even more (calls phy_power_on() *and* phy_power_off()\nbefore phy_init()).\n\nThe reason why I stumbled upon this was that I was trying to remove\ndereferences of phy->power_count (a PHY internal field) from consumer\ndrivers.\n\nphy_init(), implemented as qmp_ufs_phy_init(), calls qmp->ufs_reset =\ndevm_reset_control_get_exclusive(), so my understanding is that it needs\nto be called:\n- no earlier than ufs_qcom_init() -> devm_reset_controller_register()\n  which makes qmp->ufs_reset available\n- no later than ufs_qcom_power_up_sequence() -> phy_calibrate() ->\n  qmp_ufs_phy_calibrate() where the qmp->ufs_reset is needed; although\n  phy_init() should be the first PHY API call made.\n\nThe only mystery is why is the current phy_init() placement so late, in\nufs_qcom_power_up_sequence(), but I guess the answer is that the\nplacement is vestigial. After the incremental work of commit\nc9b589791fc1 (\"phy: qcom: Utilize UFS reset controller\") from\nEvan Green and commit cbfd6c124f27 (\"phy: qcom-qmp-ufs: Refactor\nphy_power_on and phy_calibrate callbacks\") from Nitin Rawat, the entire\nmulti-stage PHY init procedure was moved to phy_power_on(), but nobody\nbothered to move phy_init() anywhere else more natural.\n\nSo hopefully if the calculations are right, any placement within that\nbounding box should be good, and I'm picking the new phy_init() location\nto be in ufs_qcom_init().\n\nEven with phy_init() out of the way, ufs_qcom_power_up_sequence() ->\nphy_power_off() is still needed, for a separate reason which will be\ndealt with separately.\n\nSigned-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>\n---\nCc: \"James E.J. Bottomley\" <James.Bottomley@HansenPartnership.com>\nCc: \"Martin K. Petersen\" <martin.petersen@oracle.com>\nCc: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>\nCc: Nitin Rawat <quic_nitirawa@quicinc.com>\nCc: Manivannan Sadhasivam <mani@kernel.org>\n\nv7->v8: patch is new\nCommit was previously posted here but did not get any testing.\nhttps://lore.kernel.org/linux-phy/20260327112858.r5lpqygtvsane2vf@skbuf/\n---\n drivers/ufs/host/ufs-qcom.c | 22 ++++++++--------------\n 1 file changed, 8 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c\nindex bc037db46624..9039b087bf21 100644\n--- a/drivers/ufs/host/ufs-qcom.c\n+++ b/drivers/ufs/host/ufs-qcom.c\n@@ -513,13 +513,6 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)\n \n \n \t/* phy initialization - calibrate the phy */\n-\tret = phy_init(phy);\n-\tif (ret) {\n-\t\tdev_err(hba->dev, \"%s: phy init failed, ret = %d\\n\",\n-\t\t\t__func__, ret);\n-\t\treturn ret;\n-\t}\n-\n \tret = phy_set_mode_ext(phy, mode, host->phy_gear);\n \tif (ret)\n \t\tgoto out_disable_phy;\n@@ -529,23 +522,18 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)\n \tif (ret) {\n \t\tdev_err(hba->dev, \"%s: phy power on failed, ret = %d\\n\",\n \t\t\t__func__, ret);\n-\t\tgoto out_disable_phy;\n+\t\treturn ret;\n \t}\n \n \tret = phy_calibrate(phy);\n \tif (ret) {\n \t\tdev_err(hba->dev, \"Failed to calibrate PHY: %d\\n\", ret);\n-\t\tgoto out_disable_phy;\n+\t\treturn ret;\n \t}\n \n \tufs_qcom_select_unipro_mode(host);\n \n \treturn 0;\n-\n-out_disable_phy:\n-\tphy_exit(phy);\n-\n-\treturn ret;\n }\n \n /*\n@@ -1625,6 +1613,12 @@ static int ufs_qcom_init(struct ufs_hba *hba)\n \tif (err)\n \t\tgoto out_variant_clear;\n \n+\terr = phy_init(host->generic_phy);\n+\tif (err) {\n+\t\tdev_err(hba->dev, \"phy_init failed: %pe\\n\", ERR_PTR(err));\n+\t\tgoto out_variant_clear;\n+\t}\n+\n \tufs_qcom_setup_clocks(hba, true, POST_CHANGE);\n \n \tufs_qcom_get_default_testbus_cfg(host);\n",
    "prefixes": [
        "v8",
        "phy-next",
        "11/31"
    ]
}