{"id":2232901,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2232901/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260505100523.1922388-13-vladimir.oltean@nxp.com/","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/1.2/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260505100523.1922388-13-vladimir.oltean@nxp.com>","list_archive_url":null,"date":"2026-05-05T10:05:04","name":"[v8,phy-next,12/31] scsi: ufs: qcom: make use of QMP PHY dynamic gear switching ability","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"d1ce709f0f5b3095f9dad43163b1b85b6aaa4ea1","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-gpio/patch/20260505100523.1922388-13-vladimir.oltean@nxp.com/mbox/","series":[{"id":502803,"url":"http://patchwork.ozlabs.org/api/1.2/series/502803/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/list/?series=502803","date":"2026-05-05T10:04:53","name":"Split Generic PHY consumer and provider API","version":8,"mbox":"http://patchwork.ozlabs.org/series/502803/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2232901/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2232901/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-gpio+bounces-36153-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@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=AJCuNzdY;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-36153-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=\"AJCuNzdY\"","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\n [IPv6:2600:3c04:e001:36c::12fc:5321])\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 4g8vq76vLzz1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 05 May 2026 20:28:03 +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 51D6530A6FA6\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 10:12:08 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 678944014B2;\n\tTue,  5 May 2026 10:06:17 +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 BDC643FB049;\n\tTue,  5 May 2026 10:06:14 +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:06:01 +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:06:00 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777975577; cv=fail;\n b=esVic3Bbg056aAKGc/0fF48q4RXa+VQ1imsyC1Pe65uK4F9AOhsNsfmR2/T8aC4Qxk5eJS4RIr5SDFG+dLv69UVDx3imxR7cti1aLMB/jwqzhkVKxz1yKjXfxErmUKN2zvnfkJRPPthg7hYMTW3tRdWUz3R7ZxC11h7ZKu2ZdSs=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Qzu4otWk23bVNMwJgMBhviSj+5XmqRhQQgl6XtNU3ZQn74PeIIRelVxTBtr/r5v4BFIlpCFk4q1IrpMdeGgVE2G85G9GR5bgODUT3xsQRwa8p3OXFCu9CHM2zsDCwBIEFP2NnDYf82/vswpYOEW0TbvHyccvMm9FW4FsaOOgSWXHSZWRifm/+FUIJFWyRXx5+WH9Mu0rkT9aivsh1b+nquFyl6L6gxb5bwPopqHosZqAj16ML0JTd+VUrynIBo4C0mPR0g8IVm6/xALHqIe/MVGHKgnwZONFXwiP8Ll1dq0jReV0klrNDnu/I0jQ2+h7zdu4lIztMvAG2D1BIRkedQ=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777975577; c=relaxed/simple;\n\tbh=ZHH1cgFKix21vvk71mPJgHN9XbODyafruvQMeH+Ir7A=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=UEHFBG3gA+B4eF4doSLofqCSJICn1WxDeA+OHtcSbnTxAaWJSwLfaXyv6vDS8OFowW3gpm3PNUL7Ttr4ee9IaJpUjI7ayOuUG5cMMEE2MGWWZL0YlnuDddjmpVublFVcVuEha48XC3R+RCyV8aKP8LE/+JOyuzd7SE7VCv9mVAw=","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=peY7nwIrQ0Vo9Wg3nyAoFzgTp4el9JJoCbdirxkwdqk=;\n b=Ss1d3fAR3kozy7FHzPYpvLqnD+EJi8My9m+MznO+5TxA8WORLGDq+FHF4B955IBnUWWBZEPjIXSzmjUFnqaM1M+Gs+QRyzKniG7VDR3+8dTcH71NUGOsJqdhjy64127qHCt4OsfjxqFox9ltrK8rzKtkJPOcmkqqvkn1gxms1YuRmynR4QXIXoqWuRjhp9u7aPU8uX0algP14I+H/yGZAMSF/BdgovlLv3oHdQODG5PKrsCPo9DFv9PNxR2Z8unojvQdnBid7W01ojikCsvhwmV/JESJtjhMY2D239dNNt8MbqAANocxbnsfo9O6rn16dQyQUYuINmtyAI25b7L3mw=="],"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=AJCuNzdY; 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=peY7nwIrQ0Vo9Wg3nyAoFzgTp4el9JJoCbdirxkwdqk=;\n b=AJCuNzdYJokyTO80JgMKrtxfAcHe1Q5fp5MHltqBibLmfVMs9WYCYDbqB0TMAK7IHnc2QHu6C3+m9JoK2QRsitTncKQKy+T5jDDaTIgATpnaeP+0a81PI+HdtrKpUa04CqeyHR+zgIhgKDFxf8otvQvh7vVwswmRLn+ZpZ8aevRoifRK1dw2Bb8We66Z+P69FGK4izV6nPf9t0EXhIeF0TCSSXcA3HzOnqLbm+TO8QGIbqQpDzn2XrpHG40wfnVlAhccLdaBK+XHAqbfMmDahOCLRKDZ5KQRiB1NNGb954Z+J2HTWfM6TQvLS6vGYm5k8pjx7tt9nZNqGJWqM5fVZA==","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\tCan Guo <quic_cang@quicinc.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 12/31] scsi: ufs: qcom: make use of QMP PHY\n dynamic gear switching ability","Date":"Tue,  5 May 2026 13:05:04 +0300","Message-Id":"<20260505100523.1922388-13-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":"FR4P281CA0318.DEUP281.PROD.OUTLOOK.COM\n (2603:10a6:d10:eb::18) To AM9PR04MB8585.eurprd04.prod.outlook.com\n (2603:10a6:20b:438::13)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+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":"c5912e16-2270-417a-826b-08deaa8de8e0","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\tWYwMZhUHUemFwqXcR+xwqMsIhqpwbUAcQiPC4lxt3u8ZksTWkvNCQafH/MiqgKg6Zr0/LWv9R/Uyv79Ohu2qPCEeRShY72llaln2/l1IAxbN9aMRQezKbbiqfthAvOBB2X6ktPUCfvHgU74g2kVgKbGkJp0JA92xZJ128PM6ijLSQtOzIpnYYuA2h4GhDWXYv3q14v7jIFZwCLP4mnNYZsNYmq73i5YZjdQkGZdnluQ1VYa9iycsT/YE5iEx5yA+UdGwm3mTDG+fry5ia7AxdzuKXg2xMt8j8Fn87SZcX4q8Vxyc8UbmsgbcIWA8FLFKAL/wOZoLjVytXDp5N2/YCjtvp2Z6mZbuwYP6Uuvil9o/lEs07BfRbtN/cugLN6QP7k7lKzx16Dk6gQ29T9UUlpSiwP5NeuePlx3ZtnMcuDutDX7yghiCJ11OywAQXIWqE42g0HJjvsz9/I+YsNviBqUpmAOIXvzGAIxWG1HlmxzU5pBCwHrjMnkx02cNfi4YvEO7fRjdjIdwfFzqgNjQ1ZjGc/agZrB1NEaNucvsaDYGegSJ9ydvpuGObTTgQ56m9M/jgh5oo1ePOODlP4fo66VE5OoUPIVOhhyXfYnixwNgA2qD3ruQXy026izg44N1k7eaGV1dD1UUO/yoR2t6rUivI3rOHEIRwl7k5m3UmNUt4JzCAJO9z2tk4MCZiMH8E+S/FAAZEX9J10++zfverA==","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 pjKll4/ioIkeELFDNEd1hF0upjtMTS/DKjWtvcJTQFO10zOYLDFsRZWKOTX2ya3mc82lfOPSl+2UxIPYnudpGNdWuEg6KLMwjkM9SdgqbAXk1J6y2asgQcVZF17qn3TPOmeCI3AYn2wEg2boY2BU4UfYmErDYDbrreqG9mFNXAozb18cNnSnITscUdxJnA/ThZJgZHqMxm+pPx33Pw4rGO7G/QBBpWwtT+gIWHUjMqa9FK56WOlTuAg5TXsfL0xddKH+mC+Bfbx+hJD/IjMpsMhYkhuS8g+1hUIoMjn2Fp4hPz15DD1E4UAlMMr9NHecLZiKOFtmtzmdcDUIj0SjvE1mZMPQEOj0ii9htT+kLiwzl6yU1MwmewaHBfY0yNeYcCYXLF9i54AvL2M9BiA8nus4QUgwFU1aqmEQK/cE6yheNMqpN9jynyxde4iDdrIQaHTLdzCKAa4ZhkmTJfqYcQ6TyV2mf+zkYWwNOyUZsa0Pdv2GSR2Zuq9ToHJvApyPP213fJcr8WH5yqtCITPlVWgGp5opbnmRtEgmcIo+td6wb6UXmE1d03naTJllH2FeOCfOJpk/++KGqExZLdKK1jK9TXCSBsHXr/I/HykwMgXkkLlv8gzNVRPqSixo7QXMbiyaCdomBjJdkCQYKNdVsHlSsmM8A8aSZZprFc/CEj/WnG8w7+eU4+wpJV6J2J8dqOLHAK0hpSaRatE/BLfkuhG2mxNYKUdVraNq+hBVwQEebGNObcjQgjqmOzF8Ofln7H4xR0ZV/+Ozw1Z7txZNrlPE57YZSBd9p/z36yaWz8gvtjK5svJRN2U4iLkFpwoDII/I5hvwzANHjhObkFhHUVtG8WHyPdASHSY1IbO+ys43tjwgXdkMmof2eZ0tFS8GFIKeJuGtR1u3B8gthWFjagsDEw3fkVVuLgZ3G2c0Q8sBv9uQslkY1GLa4RNqBVccbeYKllRQrA3vrGE59L4TeOnldEL6jk70DFMxXS6YpPNOsWfOsqLXsRMfxDKlpj6g1fBj2SWmYxKCHP16YIJOBmCiqmdpQLCC59OPzvs70Ey6OWhiIyuwiq8sa9IRSZR1G/6gaq/PDVedd+63JIdGRslWOL/3Q5vSAf6ijK7wxvHy/2xLjA9/DHGht/o9KeBCIYGRkaHb6AjXOHgXC7qHtqm0IwdY7NjZKO2WvNbUcjbPgRFlKH9tuVfO7rSyhyjiT0qG6MkVhwrvPPgeXYcUOvD1HWqYcYqbSXgXEGMT9ootnKsxMTLntWmtKXAclYw8R5fuJlXIqh2PK6Cw6kqN9rB87KEqtfe+hFh6WWZv5OiUkIE/MJoPjAdOvDmVaJFwfC8bJlLKwNClmQRhKlfNlzh1Cym4jWEU36BFC/YF6Lz3WEUOnkX9k7DoAzKhfLoAsL0OFInKv9i890xo0p+PEcjdOrgMmi4MHMoujpVJ/vyZ7FJiPIT3jGGBrGiCG6Fo/4m4glgc1zG0sB+49tOdyjhwgZR15BiXMII+ZbbstHL66Vbwhtes9ns9JiFJacUWV1sXultdjh5kgNmEQZRpJwi9bshiZQRVMsOZwCGuFAd85jUgQ8HfNGiNmaw3i5N9kAOXfChAocNDonIsKFifFuZ3p8IgHDc6K3fV/Bo51P/XsR/KNAHXkHtEjhJYTVGdqaa/34PtbVKhE2ru0CrQ+bU/5uHqWHuoU+5AxeAH+4xtxBjKd/PbWqDtosFdW6WVk6f31fnHCoOpTkpVQdqkjw==","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n c5912e16-2270-417a-826b-08deaa8de8e0","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:06:00.9297\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 Kwx2JG4W23Z+iAECvHQij9XwnjMiVoyt7YcCzYmYSXWLSZCVocibJmdd+OdWtvwsPa1yoOCAP8/M5l4ryTZoXA==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DB9PR04MB8363"},"content":"Currently, phy_set_mode_ext() on the QMP UFS PHY makes no change to the\nhardware state, instead it is mandatory that phy_power_on() followed by\nphy_calibrate() be run afterwards, for the new mode to be picked up.\n\nBy absorbing the phy_power_off() -> ... -> phy_power_on() ->\nphy_calibrate() surrounding sequence into phy_set_mode_ext(), the UFS\nHCD consumer driver can be greatly simplified, and we also have a proper\nself-standing phy_set_mode_ext() implementation which does not rely on\nother calls to do its job.\n\nSo simplify ufs_qcom_power_up_sequence() to only call phy_set_mode_ext()\nand let PHY power management be handled just by ufs_qcom_setup_clocks().\nActually, after this change, ufs_qcom_power_up_sequence() becomes an\ninadequate name, since from the consumer perspective the powering up is\ninvisible. So change it to ufs_qcom_phy_change_mode().\n\nThe consumer and the provider are modified at once because ufs-qcom.c\nalready calls phy_set_mode_ext() while the QMP PHY is powered on, so\nintroducing the extra logic in qmp_ufs_set_mode() would cause a\npotentially breaking second QMP PHY power sequence until the consumer is\npatched to remove its own calls.\n\nSigned-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>\n---\nCc: Can Guo <quic_cang@quicinc.com>\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\nSigned-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>\n---\n drivers/phy/qualcomm/phy-qcom-qmp-ufs.c |  6 ++++++\n drivers/ufs/host/ufs-qcom.c             | 25 +++++--------------------\n 2 files changed, 11 insertions(+), 20 deletions(-)","diff":"diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c\nindex 771bc7c2ab50..e4e7966eb39a 100644\n--- a/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c\n+++ b/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c\n@@ -2012,6 +2012,12 @@ static int qmp_ufs_set_mode(struct phy *phy, enum phy_mode mode, int submode)\n \tqmp->mode = mode;\n \tqmp->submode = submode;\n \n+\tif (phy->power_count) {\n+\t\tqmp_ufs_power_off(phy);\n+\t\tqmp_ufs_power_on(phy);\n+\t\treturn qmp_ufs_phy_calibrate(phy);\n+\t}\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c\nindex 9039b087bf21..e28edcfd13a1 100644\n--- a/drivers/ufs/host/ufs-qcom.c\n+++ b/drivers/ufs/host/ufs-qcom.c\n@@ -485,7 +485,7 @@ static u32 ufs_qcom_get_hs_gear(struct ufs_hba *hba)\n \treturn UFS_HS_G3;\n }\n \n-static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)\n+static int ufs_qcom_phy_change_mode(struct ufs_hba *hba)\n {\n \tstruct ufs_qcom_host *host = ufshcd_get_variant(hba);\n \tstruct ufs_host_params *host_params = &host->host_params;\n@@ -508,26 +508,11 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)\n \tif (ret)\n \t\treturn ret;\n \n-\tif (phy->power_count)\n-\t\tphy_power_off(phy);\n-\n-\n-\t/* phy initialization - calibrate the phy */\n \tret = phy_set_mode_ext(phy, mode, host->phy_gear);\n-\tif (ret)\n-\t\tgoto out_disable_phy;\n-\n-\t/* power on phy - start serdes and phy's power and clocks */\n-\tret = phy_power_on(phy);\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\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\tdev_err(hba->dev,\n+\t\t\t\"Failed to change PHY mode %d submode %d: %pe\\n\",\n+\t\t\tmode, host->phy_gear, ERR_PTR(ret));\n \t\treturn ret;\n \t}\n \n@@ -582,7 +567,7 @@ static int ufs_qcom_hce_enable_notify(struct ufs_hba *hba,\n \n \tswitch (status) {\n \tcase PRE_CHANGE:\n-\t\terr = ufs_qcom_power_up_sequence(hba);\n+\t\terr = ufs_qcom_phy_change_mode(hba);\n \t\tif (err)\n \t\t\treturn err;\n \n","prefixes":["v8","phy-next","12/31"]}