| Message ID | 20260304175735.2660419-10-vladimir.oltean@nxp.com (mailing list archive) |
|---|---|
| State | New |
| Headers |
Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010028.outbound.protection.outlook.com [52.101.84.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6EB793D75DF; Wed, 4 Mar 2026 18:00:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772647232; cv=fail; b=nEQLkXJDpRgMxmRfguVVf+EXHaXGBGDsO3YIi1bvY/B9qHK97ZFOO1nXENbZaJBprRJLezSkRmEikHTwB41yImEPhS2bddqiu86EKhk6mU7USg1ditBOdYrx6gHKEbVzEfmF8SfmVUdB/7T/2eDwTFcK5mR1ZB/Ea37wHmvl3Y4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772647232; c=relaxed/simple; bh=BuTeTqz4xJ6r9shyXbm56ivD7MUq4kuzyGDe9/FeivU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Wbw40+51vJfQkUuQ+X+fd12cPoRXk4iOMjXt5R0OcnnkNRD6V5QlTh1nnXgc9iFJR4Hz4DGbYhzwAWi8j23Kc2VDZO1eB+VVttxYRXejlYkvAh/LdMKgGm/SPZ5MbpPjQArTxxT08WIJUWKXzfIoLv2lxBCGQLLT61aFb+BmfIU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=K3WzqB6c; arc=fail smtp.client-ip=52.101.84.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="K3WzqB6c" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nE0CoRsjOjoT3D/qXzT2JgOM/PCail10fckaKKlLM5fsGLLwC0D8wYQFLzpSzSeUPJhyaT1rD3OlfiNLJpMPQBzUqpjm2vHfBY9nIthD05BQsz+7pwhsMPsfgXJJEajntlWv4/GAURPAHR9OT8g6FnCWtwZA8klzYPWOILaYLup1snvRbUZ7NYJ5BUfUid1/DbS8R+TtQZ5gwop6zQ/EsF8odBgP+WjS7WejGRrqXFqfczDfj7uZAzTEi1BFruGZcsLxxfxDS1+ijz6bCVaRbPRnGJI4y4kmCcpQiNeHxPZAa029rcEcTB38DuytfRyJNivcHfS9fUd18qWbe4/tJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=LaMZwJVyCgXdb9XYJ6l+i4GfLsgKW1Np1xdrdc49/2c=; b=yQX9KUay0dfVXqcG8XxZzG4BM5stQwGZ9Ch/fN+wjGsUjucQ2AXK5/KVScpl5m724jaO4nFRppPbU3eE7gLyesXUbTKLoIgeEdGH3RHIjiFew+yEJDWkQS/HihQz6NE1M9T4gPLhP0F2+vQWaXixXXRfATPtyBix6g5jr6+IgVwj7g+lUXbWuxingDZ0ovzy0vye8XSWsOYAu4j7vE2vl0klitwjNt6DpxQcMqNriYks5LCBerAIDHYezlcEvcSqwI/xc5PUxvtKzWK5JA3yFNAqsEoPF94bDOLSz94YUPVIht9HfMi7rSAOKEOQwvblllVJGEkfxgyXfWJTO3CsiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LaMZwJVyCgXdb9XYJ6l+i4GfLsgKW1Np1xdrdc49/2c=; b=K3WzqB6cePemUPvURRprn9xDWHpBW2xV2wpqAiXWZeLT+tbsDj0CPqrnKDhoHYx87boOW+Lvzd8QuEW/6OqteVSvo26lavl4KsrIFzA/U+gdMB2Nq1HdVtQhwW0TFtlBIiubMrOwQNhg/EAthh8DR/t0Ko8vBSknCC4q7flkBav4gYGCjR1ctp7iaUXn/zuvl86wrwi0jdouOSaBO62VYnda19xG2SF4rzxDgmGrQ5KKJ1Md51Y4jjEDhP2/+yX08FljRKk+3VbDwJnkNozfNO81x1iyJ/3ilFhodLn/ay7G7be4mbf6s9L21p6SjqDqMgIU4KOEXiXNxh+N5uNkcw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) by GV1PR04MB10275.eurprd04.prod.outlook.com (2603:10a6:150:1ad::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.18; Wed, 4 Mar 2026 18:00:12 +0000 Received: from AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9678.016; Wed, 4 Mar 2026 18:00:12 +0000 From: Vladimir Oltean <vladimir.oltean@nxp.com> To: linux-phy@lists.infradead.org Cc: Vinod Koul <vkoul@kernel.org>, Neil Armstrong <neil.armstrong@linaro.org>, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-can@vger.kernel.org, linux-gpio@vger.kernel.org, linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev, linux-tegra@vger.kernel.org, linux-usb@vger.kernel.org, netdev@vger.kernel.org, spacemit@lists.linux.dev, UNGLinuxDriver@microchip.com, Alim Akhtar <alim.akhtar@samsung.com>, Peter Griffin <peter.griffin@linaro.org>, "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>, "Martin K. Petersen" <martin.petersen@oracle.com>, Krzysztof Kozlowski <krzk@kernel.org> Subject: [PATCH phy-next 09/22] ufs: exynos: stop poking into struct phy guts Date: Wed, 4 Mar 2026 19:57:22 +0200 Message-ID: <20260304175735.2660419-10-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304175735.2660419-1-vladimir.oltean@nxp.com> References: <20260304175735.2660419-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VI1P195CA0030.EURP195.PROD.OUTLOOK.COM (2603:10a6:802:5a::19) To AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: <linux-sunxi.lists.linux.dev> List-Subscribe: <mailto:linux-sunxi+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:linux-sunxi+unsubscribe@lists.linux.dev> MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8585:EE_|GV1PR04MB10275:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a62e5e5-ff73-4c28-6d05-08de7a17e166 X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|10070799003|19092799006|1800799024|366016; X-Microsoft-Antispam-Message-Info: /BAcIO7WNlf5skYIsHwaBk1jIBRUe2C42HB+zKCqE6FjmCEDY92f1OHsRQfo6wSH7cbGWKXeRGiFVqtY51F5dvKOpu3QoTpnN4ZJOV44L3O0uOVuw0Huv90yPaHqaLzFTotB8f+GGTv3ALXOJKQKQW+1QK9Osbqn2cy/D9AKHYiggcKOHJ2slfYSKzlhvASC/a9mM5bbuPUyrWAYBaRBymofBXH1j0IVKgVmMYRsEwiNOsjgLB2Z6LcR9JJqQp5wwNrrtbb9FQbo2Nf+rpJ+kP4it7raCIMUsKu2YaGIWRtt2ez2T7XX6JaxzBKdIQKELzGLjclJ9cXEQiMsjytv6bO8IKtaO5PBKIUoYIw70gCwHueNUla5pcL5xiZGwrHrFLiX+runDX4AsSQOp0UZ5vWjGvpfoKaBboND4Sz56Lp1QVuQDOoZZEwZ3EmNY5rfF0r7zGItDZ7cyksbKyEk9+eBmbC1Iws66suctAoim3Il6XJ3tRRf+cL4ml8fzQIstSfOeGQPW3u/mdl7hJRVj2uVn+oREi7MuGfotDaklFSX1h++WPt+tuKvQ6Ol7/E3/4iLYjPLUt4LePiqAKfnyOYmXCeILBIUzlIMfnoMB5LRRXD0/jQQilI2V9DgfCJt1ATe+LNKoZUqEwjPRrfMT4Sgf87PC5cUEArDUnchKRXYSxTijBTzG7xSwBGbef5nxbFVjSDD+RvGkRWWWp8SM8N8Bwn1jRH37YhDLta8Z3I= X-Forefront-Antispam-Report: CIP: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)(52116014)(7416014)(376014)(10070799003)(19092799006)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: 9E5LYusYCF4ykVh3ZxDspFbK77fH1y1XN4j8AkXKYoRXTSQQWCgWlA6nelRb0nYcL0DHW0/xIxuinniYmQLV3ZIdu3r5/+J2ovUercA9KGSYDhqisgsnr1o3RqgFHj5qRpYTUh+hkk9cnyCkSI4f+qVFdplBHXHUSN5Z20VVywbU6fu2oNew2L/g++C+126u6FKVfFKfXhZhJoMPAVe+el9813xlVSSe/D/OvfEMcRVxY9qp57K1nZxVMEyGDRZ/7Z/M0Z7TfY8rOp9nYYa9zXHCBychO+SaLNZXLyHn2p8B+O8Va2A8cmcSu1Zlzma4eaQxgZfvJrYaqqVqWvWa6peGtvZjnhdR3SPSlEJ7IOU5973vyXrbT8yXyONH25mG4EY6BqNcjOMDj97WU+MrUMSWKzu2l36GDIlEr4Pl7t3ZmdMW5vNxMRPT5lt6mM8MYdgPi/fbDmqkhbYzTQ4yn0old32YwUR2GbbHj2YBizxnQeuIoaIar7TpZ1HaeOSczJcNhqmmD9wbhgYtfpl0IhpYj3mik4H14mUewOQ9sWtwotW5f1qnRXpGkfYqBHCi9p6isigNi9VgaL3UKPT0QgyNLac8AXrhTTjhgxGsvUOA8/6jZtzCnLTEFgo4Olr4c80kEroLUng+oBUlhIg0aSEHRwkNEI0hMqeDCyqKAUOT9uoOXcw94FVgaeEVc1jRFC3JKpxW2S+sv+nQzlBbHM4+1sAw+FGJEBQDatBeiR41ACuhlukm33HH5s7cvCrZuJfzY4u8W0bQ64we1sOBtb8m5uFbu9+CMjzJtHTwV8nr4I38A8ZJsinArIhp7h/aglsoHg8PRKcVgnm0nnPLJB4FjyWmSsrvNKf+14/jVGIfBQ3GLjLTKSeU/Z7Ya4z1UZqKd2Cq64r5yGHSJMAqfha9qdPTvFQxP6j/wZqCBe5fXa6Ca0P4r3J7ik5xKZCEdZVEC91mK8mrmrFI6dWHpAiwPWY/c46dPjEb2JCocWTv08AyEOC180VfQ6HB+B1lL+TLZZgQz6J4AZ037euKKS7lN7WitneRVLiOeWT5B3mY9s9XqpKuj/5RgtjLN7IUqh17sQiHeV0NVphE/2x/TWtG9tZXj5QY3n8zU1MWcuu8wjahD5J6i9NQhaYeHf0oQRpFfMZFJhyN8uB6WFZMH4mA9vSB4dmTH937gsstaHxP2Dy1aMVpFsTg0pjgvV2V31Xtf+QVRJiokqLgt5EW+R8JnZHAYszZE14qful7XJMS/XFsnnp3IfYELtI1KFkLa3XOoNUL8uxKaW9QVUM2zRwiAHFRSDHygJ6sTTMyHvHbgHXd4Nnj1WGZvONCtKHYeKycVZAogeSUQSp9x0nzTatE8MQwSY5ZNg3Wo5gMRx26WXj8C1IfsvhKBb755ul3k5Nx7t2u9JBqtu+gyo6gV9FMmHPW4/iem+AdQroCsitfSXfEHGol64DobkqWJNHnQnD4TigX2YXppCo6cYxkdRA1mcvvuaK2Eqbwyv1Gtg5/0+nz/I02VBb+G5OwVkRj12i6qK9dPjl7+jPq3kxyhu7b1x2mxQFecy0KaNmNs71zIKdS+x6OLYNPVcAfjm/+VAgjUPi8dA3mhEf47CBt/kLsB84MCJlE9uFwXJWKwySe+fEqdK17gbU/ZMvBOczmOXlASspKfLxonbnWhmIZ8PP8bRi4YVA9XeOhNforGfCz5Ua+vcz4Qq0CKNDiTVWjFVZ9ZCwyajetdbw2iomXkyOayHaQ0Nqmd0LstmG8xJD0huZcJPNOWCnMibsDy/puhbMw032+ X-MS-Exchange-AntiSpam-MessageData-1: XphljbJhyuxjlontw/RwNRcvCQBvD9iD7LM= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a62e5e5-ff73-4c28-6d05-08de7a17e166 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8585.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Mar 2026 18:00:12.0148 (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: HIz24iC6pjkCKO72XskK9jHYkwXliR7bqQFnKd9xeADMnCHNdRvbMcLWVEVnr8HKvPPkTi1spD3ckYnJ7ViTtg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB10275 Status: O |
| Series |
Split Generic PHY consumer and provider API
|
|
Commit Message
Vladimir Oltean
March 4, 2026, 5:57 p.m. UTC
The Exynos host controller driver is clearly a PHY consumer (gets the
ufs->phy using devm_phy_get()), but pokes into the guts of struct phy
to get the generic_phy->power_count.
The UFS core (specifically ufshcd_link_startup()) may call the variant
operation exynos_ufs_pre_link() -> exynos_ufs_phy_init() multiple times
if the link startup fails and needs to be retried.
However ufs-exynos shouldn't be doing what it's doing, i.e. looking at
the generic_phy->power_count, because in the general sense of the API, a
single Generic PHY may have multiple consumers. If ufs-exynos looks at
generic_phy->power_count, there's no guarantee that *ufs-exynos* is the
one who previously bumped that power count. So it may be powering down
the PHY on behalf of another consumer.
The correct way in which this should be handled is ufs-exynos should
*remember* whether it has initialized and powered up the PHY before, and
power it down during link retries. Not rely on the power_count (which,
btw, on the writer side is modified under &phy->mutex, but on the reader
side is accessed unlocked). This is a discouraged pattern even if here
it doesn't cause functional problems.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
---
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Peter Griffin <peter.griffin@linaro.org>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
---
drivers/ufs/host/ufs-exynos.c | 17 ++++++++++++++---
drivers/ufs/host/ufs-exynos.h | 1 +
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c index 76fee3a79c77..eff2abbf9a9b 100644 --- a/drivers/ufs/host/ufs-exynos.c +++ b/drivers/ufs/host/ufs-exynos.c @@ -963,9 +963,10 @@ static int exynos_ufs_phy_init(struct exynos_ufs *ufs) phy_set_bus_width(generic_phy, ufs->avail_ln_rx); - if (generic_phy->power_count) { + if (ufs->phy_powered_on) { phy_power_off(generic_phy); phy_exit(generic_phy); + ufs->phy_powered_on = false; } ret = phy_init(generic_phy); @@ -979,6 +980,8 @@ static int exynos_ufs_phy_init(struct exynos_ufs *ufs) if (ret) goto out_exit_phy; + ufs->phy_powered_on = true; + return 0; out_exit_phy: @@ -1737,9 +1740,17 @@ static int exynos_ufs_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op, static int exynos_ufs_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op) { struct exynos_ufs *ufs = ufshcd_get_variant(hba); + int err; - if (!ufshcd_is_link_active(hba)) - phy_power_on(ufs->phy); + if (!ufshcd_is_link_active(hba)) { + err = phy_power_on(ufs->phy); + if (err) { + dev_err(hba->dev, "Failed to power on PHY: %pe\n", + ERR_PTR(err)); + } else { + ufs->phy_powered_on = true; + } + } exynos_ufs_config_smu(ufs); exynos_ufs_fmp_resume(hba); diff --git a/drivers/ufs/host/ufs-exynos.h b/drivers/ufs/host/ufs-exynos.h index abe7e472759e..683b9150e2ba 100644 --- a/drivers/ufs/host/ufs-exynos.h +++ b/drivers/ufs/host/ufs-exynos.h @@ -227,6 +227,7 @@ struct exynos_ufs { int avail_ln_rx; int avail_ln_tx; int rx_sel_idx; + bool phy_powered_on; struct ufs_pa_layer_attr dev_req_params; struct ufs_phy_time_cfg t_cfg; ktime_t entry_hibern8_t;