{"id":2232854,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2232854/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-tegra/patch/20260505100523.1922388-12-vladimir.oltean@nxp.com/","project":{"id":21,"url":"http://patchwork.ozlabs.org/api/1.2/projects/21/?format=json","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":"<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=json","name":"Vladimir Oltean","email":"vladimir.oltean@nxp.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-tegra/patch/20260505100523.1922388-12-vladimir.oltean@nxp.com/mbox/","series":[{"id":502802,"url":"http://patchwork.ozlabs.org/api/1.2/series/502802/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-tegra/list/?series=502802","date":"2026-05-05T10:04:55","name":"Split Generic PHY consumer and provider API","version":8,"mbox":"http://patchwork.ozlabs.org/series/502802/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2232854/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2232854/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-tegra+bounces-14189-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=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=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=linux-tegra+bounces-14189-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 sin.lore.kernel.org (sin.lore.kernel.org [104.64.211.4])\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 4g8vb65jtmz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 05 May 2026 20:17:38 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 674F8307D970\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 10:06:15 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0C8EB3FADEE;\n\tTue,  5 May 2026 10:06:15 +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-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","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"]}