FAILED: patch "[PATCH] mmc: sdhci-xenon: fix PHY init clock stability" failed to apply to 5.4-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.4.y
git checkout FETCH_HEAD
git cherry-pick -x 8e9f25a290ae0016353c9ea13314c95fb3207812
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024030400-debate-conclude-99e5@gregkh' --subject-prefix 'PATCH 5.4.y' HEAD^..
Possible dependencies:
8e9f25a290ae ("mmc: sdhci-xenon: fix PHY init clock stability")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8e9f25a290ae0016353c9ea13314c95fb3207812 Mon Sep 17 00:00:00 2001
From: Elad Nachman <[email protected]>
Date: Thu, 22 Feb 2024 22:09:30 +0200
Subject: [PATCH] mmc: sdhci-xenon: fix PHY init clock stability
Each time SD/mmc phy is initialized, at times, in some of the attempts, phy fails to completes its initialization which results into timeout error. Per the HW spec, it is a pre-requisite to ensure a stable SD clock before a phy initialization is attempted.
drivers/mmc/host/sdhci-xenon-phy.c +19 -0
@@ -11,6 +11,7 @@#include <linux/slab.h> #include <linux/delay.h> #include <linux/ktime.h> +#include <linux/iopoll.h> #include <linux/of_address.h> #include "sdhci-pltfm.h"
@@ -216,6 +217,19 @@ static int xenon_alloc_emmc_phy(struct sdhci_host *host)return 0 ; } +static int xenon_check_stability_internal_clk (struct sdhci_host *host) +{ +u32 reg; +int err; + + err =read_poll_timeout (sdhci_readw, reg, reg &SDHCI_CLOCK_INT_STABLE , +1100 ,20000 , false, host,SDHCI_CLOCK_CONTROL ); +if (err) +dev_err (mmc_dev (host->mmc),"phy_init: Internal clock never stabilized.\n" ); + +return err; +} +/* * eMMC 5.0/5.1 PHY init/re-init. * eMMC PHY init should be executed after:
@@ -232,6 +246,11 @@ static int xenon_emmc_phy_init(struct sdhci_host *host)struct xenon_priv *priv =sdhci_pltfm_priv (pltfm_host);struct xenon_emmc_phy_regs *phy_regs = priv->emmc_phy_regs; +int ret =xenon_check_stability_internal_clk (host); + +if (ret) +return ret; + reg =sdhci_readl (host, phy_regs->timing_adj); reg |=XENON_PHY_INITIALIZAION ;sdhci_writel (host, reg, phy_regs->timing_adj);