From: Biju <biju.das.au@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jirislaby@kernel.org>
Cc: Biju Das <biju.das.jz@bp.renesas.com>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>,
Thierry Bultel <thierry.bultel.yh@bp.renesas.com>,
linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org,
Biju Das <biju.das.au@gmail.com>,
linux-renesas-soc@vger.kernel.org
Subject: [PATCH v3 3/3] serial: rsci: Refactor baud rate clock selection
Date: Mon, 20 Apr 2026 15:04:23 +0100 [thread overview]
Message-ID: <20260420140426.237865-4-biju.das.jz@bp.renesas.com> (raw)
In-Reply-To: <20260420140426.237865-1-biju.das.jz@bp.renesas.com>
From: Biju Das <biju.das.jz@bp.renesas.com>
Since RSCI only uses a single clock source (SCI_FCK), the multi-clock
tracking variables (best_clk, min_err, brr1, srr1, cks1) are redundant
and removed. ccr0_val and ccr4_val are likewise dropped, replaced with
hardcoded 0 at their write sites, as they were never modified from their
initial zero values.
No functional change intended.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v2->v3:
* Dropped reported by tag as the goto statement in rsci_set_termios()
removed in the previous patch.
* baud check removed by previous patch.
* Added missing macro CCR0_RE while dropping ccr0_val variable.
* Updated commit description.
v1->v2:
* Dropped the check (abs(err) < abs(min_err) as it is always true.
* Dropped the check (abs(err) < abs(min_err) as it is always true.
* Dropped variables best_clk and min_err as they are no longer needed.
* Dropped intermediate variables brr1, cks1 and srr1; results are now
written directly into brr, cks and srr.
* Moved dev_dbg() inside the if (baud) block.
* Dropped ccr0_val and ccr4_val, replaced with hardcoded 0 at their
write sites, as they were never modified from their initial values.
* Scoped variables err and srr locally within the if (baud) block.
* Updated commit description.
---
drivers/tty/serial/rsci.c | 31 ++++++++++---------------------
1 file changed, 10 insertions(+), 21 deletions(-)
diff --git a/drivers/tty/serial/rsci.c b/drivers/tty/serial/rsci.c
index 40db9daa4272..444e89696310 100644
--- a/drivers/tty/serial/rsci.c
+++ b/drivers/tty/serial/rsci.c
@@ -217,16 +217,15 @@ static void rsci_set_termios(struct uart_port *port, struct ktermios *termios,
const struct ktermios *old)
{
unsigned int ccr2_val = CCR2_INIT, ccr3_val = CCR3_INIT;
- unsigned int ccr0_val = 0, ccr1_val = 0, ccr4_val = 0;
- unsigned int brr1 = 255, cks1 = 0, srr1 = 15;
struct sci_port *s = to_sci_port(port);
unsigned int brr = 255, cks = 0;
- int min_err = INT_MAX, err;
- unsigned long max_freq = 0;
+ unsigned int ccr1_val = 0;
+ unsigned long max_freq;
unsigned int baud, i;
unsigned long flags;
unsigned int ctrl;
- int best_clk = -1;
+ unsigned int srr;
+ int err;
if ((termios->c_cflag & CSIZE) == CS7) {
ccr3_val |= CCR3_CHR0;
@@ -267,25 +266,16 @@ static void rsci_set_termios(struct uart_port *port, struct ktermios *termios,
baud = uart_get_baud_rate(port, termios, old, 0, max_freq);
/* Divided Functional Clock using standard Bit Rate Register */
- err = sci_scbrr_calc(s, baud, &brr1, &srr1, &cks1);
- if (abs(err) < abs(min_err)) {
- best_clk = SCI_FCK;
- ccr0_val = 0;
- min_err = err;
- brr = brr1;
- cks = cks1;
- }
-
- if (best_clk >= 0)
- dev_dbg(port->dev, "Using clk %pC for %u%+d bps\n",
- s->clks[best_clk], baud, min_err);
+ err = sci_scbrr_calc(s, baud, &brr, &srr, &cks);
+ dev_dbg(port->dev, "Using clk %pC for %u%+d bps\n", s->clks[SCI_FCK],
+ baud, err);
sci_port_enable(s);
uart_port_lock_irqsave(port, &flags);
uart_update_timeout(port, termios->c_cflag, baud);
- rsci_serial_out(port, CCR0, ccr0_val);
+ rsci_serial_out(port, CCR0, 0);
ccr3_val |= CCR3_FM;
rsci_serial_out(port, CCR3, ccr3_val);
@@ -294,7 +284,7 @@ static void rsci_set_termios(struct uart_port *port, struct ktermios *termios,
rsci_serial_out(port, CCR2, ccr2_val);
rsci_serial_out(port, CCR1, ccr1_val);
- rsci_serial_out(port, CCR4, ccr4_val);
+ rsci_serial_out(port, CCR4, 0);
ctrl = rsci_serial_in(port, FCR);
ctrl |= (FCR_RFRST | FCR_TFRST);
@@ -315,8 +305,7 @@ static void rsci_set_termios(struct uart_port *port, struct ktermios *termios,
rsci_serial_out(port, CFCLR, CFCLR_CLRFLAG);
rsci_serial_out(port, FFCLR, FFCLR_DRC);
- ccr0_val |= CCR0_RE;
- rsci_serial_out(port, CCR0, ccr0_val);
+ rsci_serial_out(port, CCR0, CCR0_RE);
if ((termios->c_cflag & CREAD) != 0)
rsci_start_rx(port);
--
2.43.0
next prev parent reply other threads:[~2026-04-20 14:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-20 14:04 [PATCH v3 0/3] serial: sh-sci/rsci: Fix divide-by-zero and clean up baud rate handling Biju
2026-04-20 14:04 ` [PATCH v3 1/3] serial: sh-sci: Avoid divide-by-zero fault Biju
2026-04-20 14:04 ` [PATCH v3 2/3] serial: sh-sci: Drop check for zero baud rate from uart_get_baud_rate() Biju
2026-04-20 15:59 ` Hugo Villeneuve
2026-04-22 7:04 ` Geert Uytterhoeven
2026-04-22 7:26 ` Biju Das
2026-04-22 8:59 ` Geert Uytterhoeven
2026-04-22 14:05 ` Hugo Villeneuve
2026-04-20 14:04 ` Biju [this message]
2026-04-22 6:26 ` [PATCH v3 3/3] serial: rsci: Refactor baud rate clock selection Biju Das
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260420140426.237865-4-biju.das.jz@bp.renesas.com \
--to=biju.das.au@gmail.com \
--cc=biju.das.jz@bp.renesas.com \
--cc=geert+renesas@glider.be \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
--cc=thierry.bultel.yh@bp.renesas.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox