FAILED: patch "[PATCH] serial: max310x: fail probe if clock crystal is unstable" failed to apply to 5.4-stable tree
Subsystems (2)
[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 8afa6c6decea37e7cb473d2c60473f37f46cea35
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024021912-contend-garter-a81d@gregkh' --subject-prefix 'PATCH 5.4.y' HEAD^..
Possible dependencies:
8afa6c6decea ("serial: max310x: fail probe if clock crystal is unstable") 93cd256ab224 ("serial: max310x: improve crystal stable clock detection") 0419373333c2 ("serial: max310x: set default value when reading clock ready bit") d4d6f03c4fb3 ("serial: max310x: Try to get crystal clock rate from property") 974e454d6f96 ("serial: max310x: Use devm_clk_get_optional() to get the input clock")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8afa6c6decea37e7cb473d2c60473f37f46cea35 Mon Sep 17 00:00:00 2001
From: Hugo Villeneuve <[email protected]>
Date: Tue, 16 Jan 2024 16:30:00 -0500
Subject: [PATCH] serial: max310x: fail probe if clock crystal is unstable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
A stable clock is really required in order to use this UART, so log an error message and bail out if the chip reports that the clock is not stable.
drivers/tty/serial/max310x.c +9 -3
@@ -587,7 +587,7 @@ static int max310x_update_best_err(unsigned long f, long *besterr)return 1 ; } -static u32 max310x_set_ref_clk (struct device *dev,struct max310x_port *s, +static s32 max310x_set_ref_clk (struct device *dev,struct max310x_port *s,unsigned long freq,bool xtal) {unsigned int div, clksrc, pllcfg =0 ;
@@ -657,7 +657,8 @@ static u32 max310x_set_ref_clk(struct device *dev, struct max310x_port *s, }while (!stable && (++try <MAX310X_XTAL_WAIT_RETRIES ));if (!stable) -dev_warn (dev,"clock is not stable yet\n" ); +return dev_err_probe (dev, -EAGAIN , +"clock is not stable\n" ); }return bestfreq;
@@ -1282,7 +1283,7 @@ static int max310x_probe(struct device *dev, const struct max310x_devtype *devty {int i, ret, fmin, fmax, freq;struct max310x_port *s; -u32 uartclk =0 ; +s32 uartclk =0 ;bool xtal;for (i =0 ; i < devtype->nr; i++)
@@ -1360,6 +1361,11 @@ static int max310x_probe(struct device *dev, const struct max310x_devtype *devty } uartclk =max310x_set_ref_clk (dev, s, freq, xtal); +if (uartclk <0 ) { + ret = uartclk; + goto out_uart; + } +dev_dbg (dev,"Reference clock set to %i Hz\n" , uartclk);for (i =0 ; i < devtype->nr; i++) {