From nobody Mon Dec 15 00:34:36 2025 Received: from SHSQR01.spreadtrum.com (mx1.unisoc.com [222.66.158.135]) (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 EA309224B0D for ; Wed, 10 Dec 2025 06:36:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765348574; cv=none; b=mlnEA6CbO86ZkyUAik0soMUGZGUoiRh0XoH8Ge+bKRvwksXP1Tv7rstm8HGedk8JL+rr2njfPEFDddwAqxy1IIRlG4AincCMwaXR++148UuaMzuA2e3RTDcbsOEZHl12dKmtlaPdJBBWic14+IefGEP1Qs0QDxLlwSqQNWEFJ30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765348574; c=relaxed/simple; bh=bWaeLXyrwPQoZNpJTS4rkPRAP6IqE3KxyPJwwHYaX+0=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=JwWov+/EmC+jH0x29ZsB9JRmSXRFfEIYXkSjiUCMPXrhJZOeZBQ554NdGCRbLHiyDus5wS0ChfzpvVC17EBaBTNbEiohQIk+Ar75nQhGqSbzoAC7GoWcwoYUg8fFBvplzw1V1vwiVtZcDoAEiYkkit3vtWpABzGt18WMWQNb6rI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b=XoRbGIJF; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b="XoRbGIJF" Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 5BA6ZlFp012763; Wed, 10 Dec 2025 14:35:47 +0800 (+08) (envelope-from Wenhua.Lin@unisoc.com) Received: from SHDLP.spreadtrum.com (zeshmbx09.spreadtrum.com [10.29.3.107]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4dR5TY664mz2KXpDt; Wed, 10 Dec 2025 14:31:29 +0800 (CST) Received: from zeshkernups01.spreadtrum.com (10.29.55.99) by zeshmbx09.spreadtrum.com (10.29.3.107) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Wed, 10 Dec 2025 14:35:45 +0800 From: Wenhua Lin To: Greg Kroah-Hartman , Jiri Slaby CC: Orson Zhai , Baolin Wang , Chunyan Zhang , Cixi Geng , , , wenhua lin , Wenhua Lin , Xiongpeng Wu , Zhaochen Su , Zhirong Qiu Subject: [PATCH V2] serial: sprd: Use devm_clk_get_optional() to get the input clock Date: Wed, 10 Dec 2025 14:35:43 +0800 Message-ID: <20251210063543.2185727-1-Wenhua.Lin@unisoc.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SHCAS03.spreadtrum.com (10.0.1.207) To zeshmbx09.spreadtrum.com (10.29.3.107) X-MAIL: SHSQR01.spreadtrum.com 5BA6ZlFp012763 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unisoc.com; s=default; t=1765348560; bh=bhfoQ/zG52KjLQqtMHJaCHwh3Ur9GbyKvPw5AodW5WE=; h=From:To:CC:Subject:Date; b=XoRbGIJFapLl2RJkcd6LM0VBc2WjyuMyOv57qw+Ggjd7dxIC7nDrFmqlQfzL9gjX0 quAhxMRIp/71qiXbp0SzdqKb/99dX9RxxCUjAJBE/JMWem1c7NwlqMA4qqntgODrRm TGLX5O0BUJceqIaEAV0SpMjOXj7hahlhHSSLEenAdU3DExF3xlIU7k/owIDI66C+0a atLYGF2OcEHL7d4BAMYvZ2fpP9Iqj2DNnuu0qUWaG5GbGJrphikUfh+0638YSq6Dr1 OqTG4rJtxNViyS0AONmi/5Bh1eoPzGp77RXv2koPw7chyR+stREm/nRoIf2YyplQov xGvBV+anJru1A== Content-Type: text/plain; charset="utf-8" Simplify the code which fetches the input clock by using devm_clk_get_optional(). If no input clock is present devm_clk_get_optional() will return NULL instead of an error which matches the behavior of the old code. Signed-off-by: Wenhua Lin --- Change in V2: -Change title. -Change commit message. -Replace devm_clk_get() by devm_clk_get_optional() and drop NULL assignment. -Delete the sprd_uart_is_console function, after using the devm_clk_get_opt= ional() interface, this conditional check is redundant. --- drivers/tty/serial/sprd_serial.c | 40 +++++++------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_ser= ial.c index 8c9366321f8e..83ce77b435ee 100644 --- a/drivers/tty/serial/sprd_serial.c +++ b/drivers/tty/serial/sprd_serial.c @@ -1115,34 +1115,21 @@ static void sprd_remove(struct platform_device *dev) uart_unregister_driver(&sprd_uart_driver); } =20 -static bool sprd_uart_is_console(struct uart_port *uport) -{ - struct console *cons =3D sprd_uart_driver.cons; - - if ((cons && cons->index >=3D 0 && cons->index =3D=3D uport->line) || - of_console_check(uport->dev->of_node, SPRD_TTY_NAME, uport->line)) - return true; - - return false; -} - static int sprd_clk_init(struct uart_port *uport) { struct clk *clk_uart, *clk_parent; struct sprd_uart_port *u =3D container_of(uport, struct sprd_uart_port, p= ort); =20 - clk_uart =3D devm_clk_get(uport->dev, "uart"); + clk_uart =3D devm_clk_get_optional(uport->dev, "uart"); if (IS_ERR(clk_uart)) { - dev_warn(uport->dev, "uart%d can't get uart clock\n", - uport->line); - clk_uart =3D NULL; + return dev_err_probe(uport->dev, PTR_ERR(clk_uart), + "uart%d can't get uart clock\n", uport->line); } =20 - clk_parent =3D devm_clk_get(uport->dev, "source"); + clk_parent =3D devm_clk_get_optional(uport->dev, "source"); if (IS_ERR(clk_parent)) { - dev_warn(uport->dev, "uart%d can't get source clock\n", - uport->line); - clk_parent =3D NULL; + return dev_err_probe(uport->dev, PTR_ERR(clk_parent), + "uart%d can't get source clock\n", uport->line); } =20 if (!clk_uart || clk_set_parent(clk_uart, clk_parent)) @@ -1150,19 +1137,10 @@ static int sprd_clk_init(struct uart_port *uport) else uport->uartclk =3D clk_get_rate(clk_uart); =20 - u->clk =3D devm_clk_get(uport->dev, "enable"); + u->clk =3D devm_clk_get_optional(uport->dev, "enable"); if (IS_ERR(u->clk)) { - if (PTR_ERR(u->clk) =3D=3D -EPROBE_DEFER) - return -EPROBE_DEFER; - - dev_warn(uport->dev, "uart%d can't get enable clock\n", - uport->line); - - /* To keep console alive even if the error occurred */ - if (!sprd_uart_is_console(uport)) - return PTR_ERR(u->clk); - - u->clk =3D NULL; + return dev_err_probe(uport->dev, PTR_ERR(u->clk), + "uart%d can't get enable clock\n", uport->line); } =20 return 0; --=20 2.34.1