[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250928111321-GYB1346428@gentoo.org>
Date: Sun, 28 Sep 2025 19:13:21 +0800
From: Yixun Lan <dlan@...too.org>
To: Jesse T <mr.bossman075@...il.com>
Cc: Troy Mitchell <troy.mitchell@...ux.spacemit.com>,
Andi Shyti <andi.shyti@...nel.org>, linux-i2c@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-riscv@...ts.infradead.org,
spacemit@...ts.linux.dev
Subject: Re: [PATCH v2] i2c: spacemit: configure ILCR for accurate SCL
frequency
Hi Jesse,
On 23:37 Thu 17 Jul , Jesse T wrote:
> On Thu, Jul 17, 2025 at 9:08 PM Troy Mitchell
> <troy.mitchell@...ux.spacemit.com> wrote:
> >
> > The SpacemiT I2C controller's SCL (Serial Clock Line) frequency for
> > master mode operations is determined by the ILCR (I2C Load Count Register).
> > Previously, the driver relied on the hardware's reset default
> > values for this register.
> >
> > The hardware's default ILCR values (SLV=0x156, FLV=0x5d) yield SCL
> > frequencies lower than intended. For example, with the default
> > 31.5 MHz input clock, these default settings result in an SCL
> > frequency of approximately 93 kHz (standard mode) when targeting 100 kHz,
> > and approximately 338 kHz (fast mode) when targeting 400 kHz.
> > These frequencies are below the 100 kHz/400 kHz nominal speeds.
> >
> > This patch integrates the SCL frequency management into
> > the Common Clock Framework (CCF). Specifically, the ILCR register,
> > which acts as a frequency divider for the SCL clock, is now registered
> > as a managed clock (scl_clk) within the CCF.
> >
> > This patch also cleans up unnecessary whitespace
> > in the included header files.
> >
> > Signed-off-by: Troy Mitchell <troy.mitchell@...ux.spacemit.com>
> > ---
..[snip]
> >
> > +static struct clk *spacemit_i2c_register_scl_clk(struct spacemit_i2c_dev *i2c,
> > + struct clk *parent)
> > +{
> > + struct clk_init_data init;
> > + char name[32];
> > +
> > + snprintf(name, sizeof(name), "%s_scl_clk", dev_name(i2c->dev));
> > +
> > + init.name = name;
> > + init.ops = &spacemit_i2c_clk_ops;
> > + init.parent_data = (struct clk_parent_data[]) {
> > + { .fw_name = "func" },
>
> Is "func" a placeholder? Can we name it i2c_scl_clk?
>
no, it's the parent clk of scl that need to request, which correspond to
the DT node
clocks = <&syscon_apbc CLK_TWSI8>,
..
clock-names = "func", ..
--
Yixun Lan (dlan)
Powered by blists - more mailing lists