* [PATCH v2 0/2] i2c: ls2x: Add clock- related properties and parsing @ 2026-03-25 1:18 Hongliang Wang 2026-03-25 1:18 ` [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties Hongliang Wang 2026-03-25 1:18 ` [PATCH v1 2/2] i2c: ls2x: Add clock-input and clock-div properties parsing Hongliang Wang 0 siblings, 2 replies; 21+ messages in thread From: Hongliang Wang @ 2026-03-25 1:18 UTC (permalink / raw) To: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Hongliang Wang Cc: linux-i2c, devicetree, loongarch From: wanghongliang <wanghongliang@loongson.cn> Hi all, On 3A/7A/2K platform, the input clock of i2c controller and the divisor of input clock maybe different, so define the clock-input and clock-div properties in i2c controller node description of dts or acpi. clock-input describes the input clock of i2c controller and clock-div describes the clock divisor of the input clock. Compared to v1, v2 modified the following content: 1. Add dt-bindings 2. In i2c-ls2x driver, the definition of pclk and div variables is placed on one line 3. list the different value of clock-input and clock-div on different platforms Thanks. wanghongliang (2): dt-bindings: i2c: ls2x-i2c: Add clock- related properties i2c: ls2x: Add clock-input and clock-div properties parsing .../devicetree/bindings/i2c/loongson,ls2x-i2c.yaml | 13 +++++++++++++ drivers/i2c/busses/i2c-ls2x.c | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) -- 2.47.2 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-25 1:18 [PATCH v2 0/2] i2c: ls2x: Add clock- related properties and parsing Hongliang Wang @ 2026-03-25 1:18 ` Hongliang Wang 2026-03-25 11:42 ` Krzysztof Kozlowski 2026-03-25 11:43 ` Krzysztof Kozlowski 2026-03-25 1:18 ` [PATCH v1 2/2] i2c: ls2x: Add clock-input and clock-div properties parsing Hongliang Wang 1 sibling, 2 replies; 21+ messages in thread From: Hongliang Wang @ 2026-03-25 1:18 UTC (permalink / raw) To: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Hongliang Wang Cc: linux-i2c, devicetree, loongarch From: wanghongliang <wanghongliang@loongson.cn> Add clock-input and clock-div properties. clock-input describes the input clock of i2c controller. clock-div describes the clock divisor of the input clock of i2c controller. Prcescale = (clock-input * 10) / (clock-div * t->bus_freq_hz) - 1 Signed-off-by: wanghongliang <wanghongliang@loongson.cn> --- .../devicetree/bindings/i2c/loongson,ls2x-i2c.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml b/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml index 67882ec6e06a..4659d7012bce 100644 --- a/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml +++ b/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml @@ -24,6 +24,16 @@ properties: interrupts: maxItems: 1 + clock-input: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Describes the input clock of i2c controller in HZ. + + clock-div: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Describes the divisor of the input clock of i2c controller. + required: - compatible - reg @@ -40,6 +50,9 @@ examples: reg = <0x1fe21000 0x8>; interrupt-parent = <&extioiic>; interrupts = <22 IRQ_TYPE_LEVEL_LOW>; + clock-frequency = <100000>; + clock-input = <100000000>; + clock-div = <40>; #address-cells = <1>; #size-cells = <0>; -- 2.47.2 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-25 1:18 ` [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties Hongliang Wang @ 2026-03-25 11:42 ` Krzysztof Kozlowski 2026-03-25 11:43 ` Krzysztof Kozlowski 1 sibling, 0 replies; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-25 11:42 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On Wed, Mar 25, 2026 at 09:18:51AM +0800, Hongliang Wang wrote: > From: wanghongliang <wanghongliang@loongson.cn> > > Add clock-input and clock-div properties. > > clock-input describes the input clock of i2c controller. No, it does not. > clock-div describes the clock divisor of the input clock > of i2c controller. No, it does not. Write proper explanations, instead of justyfing your code with tautology. > > Prcescale = (clock-input * 10) / (clock-div * t->bus_freq_hz) - 1 > > Signed-off-by: wanghongliang <wanghongliang@loongson.cn> > --- > .../devicetree/bindings/i2c/loongson,ls2x-i2c.yaml | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml b/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml > index 67882ec6e06a..4659d7012bce 100644 > --- a/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml > +++ b/Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml > @@ -24,6 +24,16 @@ properties: > interrupts: > maxItems: 1 > > + clock-input: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > + Describes the input clock of i2c controller in HZ. "clocks" property describes the clock input. And it is not in Hz (not HZ! It is coming from a person's name) but phandle already defined. > + > + clock-div: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > + Describes the divisor of the input clock of i2c controller. Use clock framework. > + > required: > - compatible > - reg > @@ -40,6 +50,9 @@ examples: > reg = <0x1fe21000 0x8>; > interrupt-parent = <&extioiic>; > interrupts = <22 IRQ_TYPE_LEVEL_LOW>; > + clock-frequency = <100000>; > + clock-input = <100000000>; > + clock-div = <40>; > #address-cells = <1>; > #size-cells = <0>; > > -- > 2.47.2 > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-25 1:18 ` [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties Hongliang Wang 2026-03-25 11:42 ` Krzysztof Kozlowski @ 2026-03-25 11:43 ` Krzysztof Kozlowski 2026-03-26 2:12 ` Hongliang Wang 1 sibling, 1 reply; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-25 11:43 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On Wed, Mar 25, 2026 at 09:18:51AM +0800, Hongliang Wang wrote: > From: wanghongliang <wanghongliang@loongson.cn> > > Add clock-input and clock-div properties. > > clock-input describes the input clock of i2c controller. > clock-div describes the clock divisor of the input clock > of i2c controller. > > Prcescale = (clock-input * 10) / (clock-div * t->bus_freq_hz) - 1 > > Signed-off-by: wanghongliang <wanghongliang@loongson.cn> Also, why are you using inconsistent identities? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-25 11:43 ` Krzysztof Kozlowski @ 2026-03-26 2:12 ` Hongliang Wang 2026-03-26 7:02 ` Krzysztof Kozlowski 2026-03-26 7:21 ` Andi Shyti 0 siblings, 2 replies; 21+ messages in thread From: Hongliang Wang @ 2026-03-26 2:12 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch Hi Krzysztof, Consider the clock framework relies on the device tree, and can only be used on Loongson 2K platform with dts parameter mechanism, It cannot be used on Loongson 3A+7A platform with the acpi parameter mechanism. The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A platform, parse the same parameters regardless of dts or acpi parameter passing, So clock-input and clock-div attributes are defined to describe input clock of i2c controller and divisor of input clock. It can be used on both 2K and 3A+7A platform. Thanks Hongliang Wang On 2026/3/25 下午7:43, Krzysztof Kozlowski wrote: > On Wed, Mar 25, 2026 at 09:18:51AM +0800, Hongliang Wang wrote: >> From: wanghongliang <wanghongliang@loongson.cn> >> >> Add clock-input and clock-div properties. >> >> clock-input describes the input clock of i2c controller. >> clock-div describes the clock divisor of the input clock >> of i2c controller. >> >> Prcescale = (clock-input * 10) / (clock-div * t->bus_freq_hz) - 1 >> >> Signed-off-by: wanghongliang <wanghongliang@loongson.cn> > Also, why are you using inconsistent identities? > > Best regards, > Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 2:12 ` Hongliang Wang @ 2026-03-26 7:02 ` Krzysztof Kozlowski 2026-03-26 7:49 ` Krzysztof Kozlowski 2026-03-26 7:21 ` Andi Shyti 1 sibling, 1 reply; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-26 7:02 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 26/03/2026 03:12, Hongliang Wang wrote: > Hi Krzysztof, > > Consider the clock framework relies on the device tree, and can only be > used on > Loongson 2K platform with dts parameter mechanism, It cannot be used on > Loongson Don't top post or request read receipts. > 3A+7A platform with the acpi parameter mechanism. And this patch is for ACPI? Then we finish discussion here, because dt-bindings is not for ACPI. > The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A > platform, parse > the same parameters regardless of dts or acpi parameter passing, So > clock-input > and clock-div attributes are defined to describe input clock of i2c > controller and > divisor of input clock. It can be used on both 2K and 3A+7A platform. And you cannot use them in DTS. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 7:02 ` Krzysztof Kozlowski @ 2026-03-26 7:49 ` Krzysztof Kozlowski 2026-03-26 11:48 ` Hongliang Wang 2026-03-27 3:09 ` Hongliang Wang 0 siblings, 2 replies; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-26 7:49 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 26/03/2026 08:02, Krzysztof Kozlowski wrote: > On 26/03/2026 03:12, Hongliang Wang wrote: >> Hi Krzysztof, >> >> Consider the clock framework relies on the device tree, and can only be >> used on >> Loongson 2K platform with dts parameter mechanism, It cannot be used on >> Loongson > > Don't top post or request read receipts. > >> 3A+7A platform with the acpi parameter mechanism. > > And this patch is for ACPI? Then we finish discussion here, because > dt-bindings is not for ACPI. > >> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >> platform, parse >> the same parameters regardless of dts or acpi parameter passing, So >> clock-input >> and clock-div attributes are defined to describe input clock of i2c >> controller and >> divisor of input clock. It can be used on both 2K and 3A+7A platform. > > And you cannot use them in DTS. I need to keep guessing what you want to achieve, because neither your message nor commit text was explicit - if you need properties for ACPI and you want to be sure that DTS does not have them, then you could define them as "foo:false" with a comment why (you always explain WHY you are doing things). We don't have such convention so far, but I think it will be useful when Rob finishes the ABI checker. *Otherwise* minimum would be a comment in the driver that these are not allowed in DTS. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 7:49 ` Krzysztof Kozlowski @ 2026-03-26 11:48 ` Hongliang Wang 2026-03-26 12:23 ` Krzysztof Kozlowski 2026-03-27 3:09 ` Hongliang Wang 1 sibling, 1 reply; 21+ messages in thread From: Hongliang Wang @ 2026-03-26 11:48 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch Hi Krzysztof and Andi, Sorry, I didn't express myself clearly. The purpose of defining clock-input and clock-div properties is to use them in both acpi and dts. If these properties cannot be used in dts, can I first use them in acpi? and second, use clock framework in dts. if these properties can be used in acpi, use clocks property describes the clock input may be appropriate. the [PATCH v2] i2c: ls2x: Add clocks and clock-div properties parsing for ACPI as follows: From 40bdf5588594d2b51f50682fb841c6cbe87c4297 Mon Sep 17 00:00:00 2001 From: wanghongliang <wanghongliang@loongson.cn> Date: Sun, 12 Apr 2026 03:13:09 +0800 Subject: [PATCH v2] i2c: ls2x: Add clocks and clock-div properties parsing for ACPI On 3A/7A/2K3000 platform, the input clock of i2c controller and the divisor of input clock maybe different, so define the clocks and clock-div properties in Device (I2Cx) in acpi parameter passing. clocks describes the input clock of i2c controller and clock-div describes the clock divisor of the input clock. Device (I2C1) { Name (_HID, "LOON0004" /* AT Real-Time Clock */) // _HID: Hardware ID Name (_UID, 0x1) // _UID: Unique ID Name (_DSD, Package (0x02) // _DSD: Device-Specific Data { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301") Package (0x03) { Package (0x02) { "clock-frequency", 100000 } Package (0x02) { "clocks", 100000000 } Package (0x02) { "clock-div", 40 } } }) The formulas is Prcescale = (clock-input * 10) / (clock-div * t->bus_freq_hz) - 1 The value of clocks and clock-div on different platforms are listed below: 1.7A1000/7A2000: clock-input = 80MHZ clock-div = 50 2.3A5000/3C5000/3A6000/3C6000: clock-input = 100MHZ clock-div = 40 3.2K3000: clock-input = 100MHZ clock-div = 55 Signed-off-by: wanghongliang <wanghongliang@loongson.cn> --- drivers/i2c/busses/i2c-ls2x.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-ls2x.c b/drivers/i2c/busses/i2c-ls2x.c index b475dd27b7af..4d1d461d065a 100644 --- a/drivers/i2c/busses/i2c-ls2x.c +++ b/drivers/i2c/busses/i2c-ls2x.c @@ -96,6 +96,7 @@ static irqreturn_t ls2x_i2c_isr(int this_irq, void *dev_id) static void ls2x_i2c_adjust_bus_speed(struct ls2x_i2c_priv *priv) { u16 val; + u32 pclk, div; struct i2c_timings *t = &priv->i2c_t; struct device *dev = priv->adapter.dev.parent; u32 acpi_speed = i2c_acpi_find_bus_speed(dev); @@ -107,12 +108,22 @@ static void ls2x_i2c_adjust_bus_speed(struct ls2x_i2c_priv *priv) else t->bus_freq_hz = LS2X_I2C_FREQ_STD; + if (has_acpi_companion(dev)) { + if (!device_property_read_u32(dev, "clock-input", &pclk) && + !device_property_read_u32(dev, "clock-div", &div) && + div != 0) + val = (pclk * 10) / (div * t->bus_freq_hz) - 1; + else + val = LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1; + } else { + val = LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1; + } + /* * According to the chip manual, we can only access the registers as bytes, * otherwise the high bits will be truncated. * So set the I2C frequency with a sequential writeb() instead of writew(). */ - val = LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1; writeb(FIELD_GET(GENMASK(7, 0), val), priv->base + I2C_LS2X_PRER_LO); writeb(FIELD_GET(GENMASK(15, 8), val), priv->base + I2C_LS2X_PRER_HI); } -- 2.47.2 Best regards, Hongliang Wang On 2026/3/26 下午3:49, Krzysztof Kozlowski wrote: > On 26/03/2026 08:02, Krzysztof Kozlowski wrote: >> On 26/03/2026 03:12, Hongliang Wang wrote: >>> Hi Krzysztof, >>> >>> Consider the clock framework relies on the device tree, and can only be >>> used on >>> Loongson 2K platform with dts parameter mechanism, It cannot be used on >>> Loongson >> Don't top post or request read receipts. >> >>> 3A+7A platform with the acpi parameter mechanism. >> And this patch is for ACPI? Then we finish discussion here, because >> dt-bindings is not for ACPI. >> >>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>> platform, parse >>> the same parameters regardless of dts or acpi parameter passing, So >>> clock-input >>> and clock-div attributes are defined to describe input clock of i2c >>> controller and >>> divisor of input clock. It can be used on both 2K and 3A+7A platform. >> And you cannot use them in DTS. > I need to keep guessing what you want to achieve, because neither your > message nor commit text was explicit - if you need properties for ACPI > and you want to be sure that DTS does not have them, then you could > define them as "foo:false" with a comment why (you always explain WHY > you are doing things). We don't have such convention so far, but I think > it will be useful when Rob finishes the ABI checker. > > *Otherwise* minimum would be a comment in the driver that these are not > allowed in DTS. > > Best regards, > Krzysztof ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 11:48 ` Hongliang Wang @ 2026-03-26 12:23 ` Krzysztof Kozlowski 2026-03-27 2:06 ` Hongliang Wang 0 siblings, 1 reply; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-26 12:23 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 26/03/2026 12:48, Hongliang Wang wrote: > Hi Krzysztof and Andi, > > Sorry, I didn't express myself clearly. The purpose of defining clock-input and > clock-div properties is to use them in both acpi and dts. If these properties > cannot be used in dts, can I first use them in acpi? and second, use clock > framework in dts. I already asked you: 1. Stop requesting read receipts on your email 2. Don't top post. I already told you also why these cannot be in DTS. Respond to technical arguments, not top-post of what you want. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 12:23 ` Krzysztof Kozlowski @ 2026-03-27 2:06 ` Hongliang Wang 0 siblings, 0 replies; 21+ messages in thread From: Hongliang Wang @ 2026-03-27 2:06 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 2026/3/26 下午8:23, Krzysztof Kozlowski wrote: > On 26/03/2026 12:48, Hongliang Wang wrote: >> Hi Krzysztof and Andi, >> >> Sorry, I didn't express myself clearly. The purpose of defining clock-input and >> clock-div properties is to use them in both acpi and dts. If these properties >> cannot be used in dts, can I first use them in acpi? and second, use clock >> framework in dts. > I already asked you: > 1. Stop requesting read receipts on your email OK, I have set my email and removed the read receipts. > 2. Don't top post. OK > > I already told you also why these cannot be in DTS. Respond to technical > arguments, not top-post of what you want. OK > > Best regards, > Krzysztof Best regards, Hongliang Wang ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 7:49 ` Krzysztof Kozlowski 2026-03-26 11:48 ` Hongliang Wang @ 2026-03-27 3:09 ` Hongliang Wang 2026-03-27 6:39 ` Krzysztof Kozlowski 1 sibling, 1 reply; 21+ messages in thread From: Hongliang Wang @ 2026-03-27 3:09 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 2026/3/26 下午3:49, Krzysztof Kozlowski wrote: > On 26/03/2026 08:02, Krzysztof Kozlowski wrote: >> On 26/03/2026 03:12, Hongliang Wang wrote: >>> Hi Krzysztof, >>> >>> Consider the clock framework relies on the device tree, and can only be >>> used on >>> Loongson 2K platform with dts parameter mechanism, It cannot be used on >>> Loongson >> Don't top post or request read receipts. OK >>> 3A+7A platform with the acpi parameter mechanism. >> And this patch is for ACPI? Then we finish discussion here, because >> dt-bindings is not for ACPI. >> The initial idea was that this patch could be used for both ACPI and DTS. >>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>> platform, parse >>> the same parameters regardless of dts or acpi parameter passing, So >>> clock-input >>> and clock-div attributes are defined to describe input clock of i2c >>> controller and >>> divisor of input clock. It can be used on both 2K and 3A+7A platform. >> And you cannot use them in DTS. OK > I need to keep guessing what you want to achieve, because neither your > message nor commit text was explicit What I want to achieve is to describe the input clock and divisor of I2C controller through parameters passing, and the parameters can be used in both ACPI and DTS. because clock framework cannot be used for ACPI, So I defined two new properties. > - if you need properties for ACPI > and you want to be sure that DTS does not have them, then you could > define them as "foo:false" with a comment why (you always explain WHY > you are doing things). We don't have such convention so far, but I think > it will be useful when Rob finishes the ABI checker. > > *Otherwise* minimum would be a comment in the driver that these are not > allowed in DTS. > > Best regards, > Krzysztof Best regards, Hongliang Wang ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-27 3:09 ` Hongliang Wang @ 2026-03-27 6:39 ` Krzysztof Kozlowski 2026-03-30 7:18 ` Hongliang Wang 0 siblings, 1 reply; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-27 6:39 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 27/03/2026 04:09, Hongliang Wang wrote: > The initial idea was that this patch could be used for both ACPI and DTS. >>>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>>> platform, parse >>>> the same parameters regardless of dts or acpi parameter passing, So >>>> clock-input >>>> and clock-div attributes are defined to describe input clock of i2c >>>> controller and >>>> divisor of input clock. It can be used on both 2K and 3A+7A platform. >>> And you cannot use them in DTS. > OK >> I need to keep guessing what you want to achieve, because neither your >> message nor commit text was explicit > What I want to achieve is to describe the input clock and divisor of I2C > controller Input clocks are defined as clock inputs obviously in DT, not as integers. Bindings need to describe the hardware, so start with that. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-27 6:39 ` Krzysztof Kozlowski @ 2026-03-30 7:18 ` Hongliang Wang 2026-03-30 7:23 ` Krzysztof Kozlowski 0 siblings, 1 reply; 21+ messages in thread From: Hongliang Wang @ 2026-03-30 7:18 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 2026/3/27 下午2:39, Krzysztof Kozlowski wrote: > On 27/03/2026 04:09, Hongliang Wang wrote: >> The initial idea was that this patch could be used for both ACPI and DTS. >>>>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>>>> platform, parse >>>>> the same parameters regardless of dts or acpi parameter passing, So >>>>> clock-input >>>>> and clock-div attributes are defined to describe input clock of i2c >>>>> controller and >>>>> divisor of input clock. It can be used on both 2K and 3A+7A platform. >>>> And you cannot use them in DTS. >> OK >>> I need to keep guessing what you want to achieve, because neither your >>> message nor commit text was explicit >> What I want to achieve is to describe the input clock and divisor of I2C >> controller > Input clocks are defined as clock inputs obviously in DT, not as > integers. Bindings need to describe the hardware, so start with that. I can describe the hardware in loongson,ls2x-i2c.yaml, and I would like to confirm with you what final implementation plan you agree to? clock framework or custom clock-input an clock-div attributes? if clock framework, how can it also be used for ACPI? > > Best regards, > Krzysztof Best regards, Hongliang Wang ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-30 7:18 ` Hongliang Wang @ 2026-03-30 7:23 ` Krzysztof Kozlowski 2026-03-31 7:11 ` Hongliang Wang 0 siblings, 1 reply; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-03-30 7:23 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 30/03/2026 09:18, Hongliang Wang wrote: > > On 2026/3/27 下午2:39, Krzysztof Kozlowski wrote: >> On 27/03/2026 04:09, Hongliang Wang wrote: >>> The initial idea was that this patch could be used for both ACPI and DTS. >>>>>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>>>>> platform, parse >>>>>> the same parameters regardless of dts or acpi parameter passing, So >>>>>> clock-input >>>>>> and clock-div attributes are defined to describe input clock of i2c >>>>>> controller and >>>>>> divisor of input clock. It can be used on both 2K and 3A+7A platform. >>>>> And you cannot use them in DTS. >>> OK >>>> I need to keep guessing what you want to achieve, because neither your >>>> message nor commit text was explicit >>> What I want to achieve is to describe the input clock and divisor of I2C >>> controller >> Input clocks are defined as clock inputs obviously in DT, not as >> integers. Bindings need to describe the hardware, so start with that. > I can describe the hardware in loongson,ls2x-i2c.yaml, and I would like to > confirm with you what final implementation plan you agree to? clock > framework > or custom clock-input an clock-div attributes? if clock framework, how > can it > also be used for ACPI? And you ask DT maintainer for that? It's not relevant. You sent DT bindings patch, so this patch must be correct and we discuss this patch here. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-30 7:23 ` Krzysztof Kozlowski @ 2026-03-31 7:11 ` Hongliang Wang 2026-04-09 12:03 ` Hongliang Wang 0 siblings, 1 reply; 21+ messages in thread From: Hongliang Wang @ 2026-03-31 7:11 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 2026/3/30 下午3:23, Krzysztof Kozlowski wrote: > On 30/03/2026 09:18, Hongliang Wang wrote: >> On 2026/3/27 下午2:39, Krzysztof Kozlowski wrote: >>> On 27/03/2026 04:09, Hongliang Wang wrote: >>>> The initial idea was that this patch could be used for both ACPI and DTS. >>>>>>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>>>>>> platform, parse >>>>>>> the same parameters regardless of dts or acpi parameter passing, So >>>>>>> clock-input >>>>>>> and clock-div attributes are defined to describe input clock of i2c >>>>>>> controller and >>>>>>> divisor of input clock. It can be used on both 2K and 3A+7A platform. >>>>>> And you cannot use them in DTS. >>>> OK >>>>> I need to keep guessing what you want to achieve, because neither your >>>>> message nor commit text was explicit >>>> What I want to achieve is to describe the input clock and divisor of I2C >>>> controller >>> Input clocks are defined as clock inputs obviously in DT, not as >>> integers. Bindings need to describe the hardware, so start with that. >> I can describe the hardware in loongson,ls2x-i2c.yaml, and I would like to >> confirm with you what final implementation plan you agree to? clock >> framework >> or custom clock-input an clock-div attributes? if clock framework, how >> can it >> also be used for ACPI? > And you ask DT maintainer for that? It's not relevant. You sent DT > bindings patch, so this patch must be correct and we discuss this patch > here. I don't. My idea is that if the clock input attribute can't be used for both dts and acpi, then clock framework will be used for dts and new define attribute will be used for acpi. I will first implement the hardware description and clock framework in Bindings. > Best regards, > Krzysztof Best regards, Hongliang Wang ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-31 7:11 ` Hongliang Wang @ 2026-04-09 12:03 ` Hongliang Wang 2026-04-09 12:11 ` Krzysztof Kozlowski 2026-04-09 15:29 ` Yao Zi 0 siblings, 2 replies; 21+ messages in thread From: Hongliang Wang @ 2026-04-09 12:03 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch Hi, Krzysztof On 2026/3/31 下午3:11, Hongliang Wang wrote: > > On 2026/3/30 下午3:23, Krzysztof Kozlowski wrote: >> On 30/03/2026 09:18, Hongliang Wang wrote: >>> On 2026/3/27 下午2:39, Krzysztof Kozlowski wrote: >>>> On 27/03/2026 04:09, Hongliang Wang wrote: >>>>> The initial idea was that this patch could be used for both ACPI >>>>> and DTS. >>>>>>>> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A >>>>>>>> platform, parse >>>>>>>> the same parameters regardless of dts or acpi parameter >>>>>>>> passing, So >>>>>>>> clock-input >>>>>>>> and clock-div attributes are defined to describe input clock of >>>>>>>> i2c >>>>>>>> controller and >>>>>>>> divisor of input clock. It can be used on both 2K and 3A+7A >>>>>>>> platform. >>>>>>> And you cannot use them in DTS. >>>>> OK >>>>>> I need to keep guessing what you want to achieve, because neither >>>>>> your >>>>>> message nor commit text was explicit >>>>> What I want to achieve is to describe the input clock and divisor >>>>> of I2C >>>>> controller >>>> Input clocks are defined as clock inputs obviously in DT, not as >>>> integers. Bindings need to describe the hardware, so start with that. >>> I can describe the hardware in loongson,ls2x-i2c.yaml, and I would >>> like to >>> confirm with you what final implementation plan you agree to? clock >>> framework >>> or custom clock-input an clock-div attributes? if clock framework, how >>> can it >>> also be used for ACPI? >> And you ask DT maintainer for that? It's not relevant. You sent DT >> bindings patch, so this patch must be correct and we discuss this patch >> here. > I don't. My idea is that if the clock input attribute can't be used > for both > dts and acpi, then clock framework will be used for dts and new define > attribute > will be used for acpi. I will first implement the hardware description > and clock > framework in Bindings. >> Best regards, >> Krzysztof > > Best regards, > Hongliang Wang > I have a question, the input clock of i2c controller can be described by "clocks", but there is no existing attribute can describe the divisor of the input clock, Can I define a new attribute named "clock-div" to describe it in DT bindings? or do you have any standard solutions for the divisor problem? Thank you. Best regards, Hongliang Wang ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-04-09 12:03 ` Hongliang Wang @ 2026-04-09 12:11 ` Krzysztof Kozlowski 2026-04-09 15:29 ` Yao Zi 1 sibling, 0 replies; 21+ messages in thread From: Krzysztof Kozlowski @ 2026-04-09 12:11 UTC (permalink / raw) To: Hongliang Wang Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 09/04/2026 14:03, Hongliang Wang wrote: > > I have a question, the input clock of i2c controller can be described by > "clocks", > but there is no existing attribute can describe the divisor of the input > clock, > Can I define a new attribute named "clock-div" to describe it in DT > bindings? > or do you have any standard solutions for the divisor problem? Thank you. > You should determine/calculate the divisor in the driver code, depending on clocks and bus frequencies. You don't need a property for that, usually. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-04-09 12:03 ` Hongliang Wang 2026-04-09 12:11 ` Krzysztof Kozlowski @ 2026-04-09 15:29 ` Yao Zi 1 sibling, 0 replies; 21+ messages in thread From: Yao Zi @ 2026-04-09 15:29 UTC (permalink / raw) To: Hongliang Wang, Krzysztof Kozlowski Cc: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On Thu, Apr 09, 2026 at 08:03:47PM +0800, Hongliang Wang wrote: > Hi, Krzysztof > > On 2026/3/31 下午3:11, Hongliang Wang wrote: > > > > On 2026/3/30 下午3:23, Krzysztof Kozlowski wrote: > > > On 30/03/2026 09:18, Hongliang Wang wrote: > > > > On 2026/3/27 下午2:39, Krzysztof Kozlowski wrote: > > > > > On 27/03/2026 04:09, Hongliang Wang wrote: > > > > > > The initial idea was that this patch could be used for > > > > > > both ACPI and DTS. > > > > > > > > > The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A > > > > > > > > > platform, parse > > > > > > > > > the same parameters regardless of dts or > > > > > > > > > acpi parameter passing, So > > > > > > > > > clock-input > > > > > > > > > and clock-div attributes are defined to > > > > > > > > > describe input clock of i2c > > > > > > > > > controller and > > > > > > > > > divisor of input clock. It can be used on > > > > > > > > > both 2K and 3A+7A platform. > > > > > > > > And you cannot use them in DTS. > > > > > > OK > > > > > > > I need to keep guessing what you want to achieve, > > > > > > > because neither your > > > > > > > message nor commit text was explicit > > > > > > What I want to achieve is to describe the input clock > > > > > > and divisor of I2C > > > > > > controller > > > > > Input clocks are defined as clock inputs obviously in DT, not as > > > > > integers. Bindings need to describe the hardware, so start with that. > > > > I can describe the hardware in loongson,ls2x-i2c.yaml, and I > > > > would like to > > > > confirm with you what final implementation plan you agree to? clock > > > > framework > > > > or custom clock-input an clock-div attributes? if clock framework, how > > > > can it > > > > also be used for ACPI? > > > And you ask DT maintainer for that? It's not relevant. You sent DT > > > bindings patch, so this patch must be correct and we discuss this patch > > > here. > > I don't. My idea is that if the clock input attribute can't be used for > > both > > dts and acpi, then clock framework will be used for dts and new define > > attribute > > will be used for acpi. I will first implement the hardware description > > and clock > > framework in Bindings. > > > Best regards, > > > Krzysztof > > > > Best regards, > > Hongliang Wang > > > > I have a question, the input clock of i2c controller can be described by > "clocks", > but there is no existing attribute can describe the divisor of the input > clock, From the description of 7A1000's user manual (section 2.3 "时钟功能描述"), it seems the divider isn't part of the I2C controller, but instead is an on-chip divider with fixed 1/2 factor, feeding both "MISC" block (including I2C) and SPI. > Can I define a new attribute named "clock-div" to describe it in DT > bindings? > or do you have any standard solutions for the divisor problem? Thank you. If these devicetree-based Loongson platforms follow a similar pattern as the bridge chip, then the divisor shouldn't be described in the I2C controller node. You may want to include a "fixed-factor-clock" node to match the hardware. > Best regards, > Hongliang Wang > > > Regards, Yao Zi ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 2:12 ` Hongliang Wang 2026-03-26 7:02 ` Krzysztof Kozlowski @ 2026-03-26 7:21 ` Andi Shyti 2026-03-27 2:08 ` Hongliang Wang 1 sibling, 1 reply; 21+ messages in thread From: Andi Shyti @ 2026-03-26 7:21 UTC (permalink / raw) To: Hongliang Wang Cc: Krzysztof Kozlowski, Binbin Zhou, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch Hi Hongliang, > Consider the clock framework relies on the device tree, and can only be used > on > Loongson 2K platform with dts parameter mechanism, It cannot be used on > Loongson > 3A+7A platform with the acpi parameter mechanism. > The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A platform, > parse > the same parameters regardless of dts or acpi parameter passing, So > clock-input > and clock-div attributes are defined to describe input clock of i2c > controller and > divisor of input clock. It can be used on both 2K and 3A+7A platform. Thanks for the explanation, but please do consider Krzysztof's review. Without him agreeing on the change I can't take your patch. If you have questions, please ask. Andi ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties 2026-03-26 7:21 ` Andi Shyti @ 2026-03-27 2:08 ` Hongliang Wang 0 siblings, 0 replies; 21+ messages in thread From: Hongliang Wang @ 2026-03-27 2:08 UTC (permalink / raw) To: Andi Shyti Cc: Krzysztof Kozlowski, Binbin Zhou, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-i2c, devicetree, loongarch On 2026/3/26 下午3:21, Andi Shyti wrote: > Hi Hongliang, > >> Consider the clock framework relies on the device tree, and can only be used >> on >> Loongson 2K platform with dts parameter mechanism, It cannot be used on >> Loongson >> 3A+7A platform with the acpi parameter mechanism. >> The i2c-ls2x driver is compatible with both Loongson 2K and 3A+7A platform, >> parse >> the same parameters regardless of dts or acpi parameter passing, So >> clock-input >> and clock-div attributes are defined to describe input clock of i2c >> controller and >> divisor of input clock. It can be used on both 2K and 3A+7A platform. > Thanks for the explanation, but please do consider Krzysztof's > review. Without him agreeing on the change I can't take your > patch. > > If you have questions, please ask. OK, thank you > Andi ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v1 2/2] i2c: ls2x: Add clock-input and clock-div properties parsing 2026-03-25 1:18 [PATCH v2 0/2] i2c: ls2x: Add clock- related properties and parsing Hongliang Wang 2026-03-25 1:18 ` [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties Hongliang Wang @ 2026-03-25 1:18 ` Hongliang Wang 1 sibling, 0 replies; 21+ messages in thread From: Hongliang Wang @ 2026-03-25 1:18 UTC (permalink / raw) To: Binbin Zhou, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Hongliang Wang Cc: linux-i2c, devicetree, loongarch From: wanghongliang <wanghongliang@loongson.cn> On 3A/7A/2K platform, the input clock of i2c controller and the divisor of input clock maybe different, so define the clock-input and clock-div properties in i2c controller node description of dts or acpi. clock-input describes the input clock of i2c controller and clock-div describes the clock divisor of the input clock. The formulas is Prcescale = (clock-input * 10) / (clock-div * t->bus_freq_hz) - 1 The value of clock-input and clock-div on different platforms are listed below: 1.7A1000/7A2000: clock-input = 80MHZ clock-div = 50 2.3A5000/3C5000/3A6000/3C6000: clock-input = 100MHZ clock-div = 40 3.2K0500/2K1000LA/2K2000: clock-input = 100MHZ clock-div = 40 4.2K3000: clock-input = 100MHZ clock-div = 55 Signed-off-by: wanghongliang <wanghongliang@loongson.cn> --- drivers/i2c/busses/i2c-ls2x.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-ls2x.c b/drivers/i2c/busses/i2c-ls2x.c index b475dd27b7af..08c242e5fd75 100644 --- a/drivers/i2c/busses/i2c-ls2x.c +++ b/drivers/i2c/busses/i2c-ls2x.c @@ -96,6 +96,7 @@ static irqreturn_t ls2x_i2c_isr(int this_irq, void *dev_id) static void ls2x_i2c_adjust_bus_speed(struct ls2x_i2c_priv *priv) { u16 val; + u32 pclk, div; struct i2c_timings *t = &priv->i2c_t; struct device *dev = priv->adapter.dev.parent; u32 acpi_speed = i2c_acpi_find_bus_speed(dev); @@ -107,12 +108,16 @@ static void ls2x_i2c_adjust_bus_speed(struct ls2x_i2c_priv *priv) else t->bus_freq_hz = LS2X_I2C_FREQ_STD; + if (!device_property_read_u32(dev, "clock-input", &pclk) && + !device_property_read_u32(dev, "clock-div", &div) && div != 0) + val = (pclk * 10) / (div * t->bus_freq_hz) - 1; + else + val = LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1; /* * According to the chip manual, we can only access the registers as bytes, * otherwise the high bits will be truncated. * So set the I2C frequency with a sequential writeb() instead of writew(). */ - val = LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1; writeb(FIELD_GET(GENMASK(7, 0), val), priv->base + I2C_LS2X_PRER_LO); writeb(FIELD_GET(GENMASK(15, 8), val), priv->base + I2C_LS2X_PRER_HI); } -- 2.47.2 ^ permalink raw reply related [flat|nested] 21+ messages in thread
end of thread, other threads:[~2026-04-09 15:30 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-25 1:18 [PATCH v2 0/2] i2c: ls2x: Add clock- related properties and parsing Hongliang Wang 2026-03-25 1:18 ` [PATCH v1 1/2] dt-bindings: i2c: ls2x-i2c: Add clock- related properties Hongliang Wang 2026-03-25 11:42 ` Krzysztof Kozlowski 2026-03-25 11:43 ` Krzysztof Kozlowski 2026-03-26 2:12 ` Hongliang Wang 2026-03-26 7:02 ` Krzysztof Kozlowski 2026-03-26 7:49 ` Krzysztof Kozlowski 2026-03-26 11:48 ` Hongliang Wang 2026-03-26 12:23 ` Krzysztof Kozlowski 2026-03-27 2:06 ` Hongliang Wang 2026-03-27 3:09 ` Hongliang Wang 2026-03-27 6:39 ` Krzysztof Kozlowski 2026-03-30 7:18 ` Hongliang Wang 2026-03-30 7:23 ` Krzysztof Kozlowski 2026-03-31 7:11 ` Hongliang Wang 2026-04-09 12:03 ` Hongliang Wang 2026-04-09 12:11 ` Krzysztof Kozlowski 2026-04-09 15:29 ` Yao Zi 2026-03-26 7:21 ` Andi Shyti 2026-03-27 2:08 ` Hongliang Wang 2026-03-25 1:18 ` [PATCH v1 2/2] i2c: ls2x: Add clock-input and clock-div properties parsing Hongliang Wang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox