Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1372259 > unrolled thread

[PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

Started byJisheng Zhang <jszhang@marvell.com>
First post2016-04-06 09:40 +0200
Last post2016-04-13 15:30 +0200
Articles 6 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT Jisheng Zhang <jszhang@marvell.com> - 2016-04-06 09:40 +0200
    Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low  count from DT Rob Herring <robh@kernel.org> - 2016-04-07 20:10 +0200
      Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl  high/low count from DT Jisheng Zhang <jszhang@marvell.com> - 2016-04-13 14:20 +0200
    Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low  count from DT Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-04-07 20:10 +0200
      Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl  high/low count from DT Jisheng Zhang <jszhang@marvell.com> - 2016-04-13 14:30 +0200
        Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl  high/low count from DT Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-04-13 15:30 +0200

#1372259 — [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

FromJisheng Zhang <jszhang@marvell.com>
Date2016-04-06 09:40 +0200
Subject[PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT
Message-ID<rkQee-sD-17@gated-at.bofh.it>
Sometimes, it's convenient to define the scl's high/low count directly,
e.g HW people would do some measurement then directly give out the
optimum counts. Previously, we solved the sda falling time and scl
falling time by i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt(), then put them
into dt, but what we really care isn't the sda/scl falling time.

From another side, the dw_i2c_acpi_configure() on ACPI platform also
get hcnt/lcnt values rather than the sda/scl falling time from ACPI
method, we want similar feature for DT platforms.

Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
 Documentation/devicetree/bindings/i2c/i2c-designware.txt | 16 ++++++++++++++++
 drivers/i2c/busses/i2c-designware-platdrv.c              |  8 ++++++++
 2 files changed, 24 insertions(+)

diff --git a/Documentation/devicetree/bindings/i2c/i2c-designware.txt b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
index fee26dc..05176fbf 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-designware.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
@@ -20,6 +20,22 @@ Optional properties :
  - i2c-sda-falling-time-ns : should contain the SDA falling time in nanoseconds.
    This value which is by default 300ns is used to compute the tHIGH period.
 
+ - i2c-ss-scl-high-count : should contain the standard speed i2c clock SCL high
+   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
+   will be ignored.
+
+ - i2c-ss-scl-low-count : should contain the standard speed i2c clock SCL low
+   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
+   will be ignored.
+
+ - i2c-fs-scl-high-count : should contain the fast speed i2c clock SCL high
+   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
+   will be ignored.
+
+ - i2c-fs-scl-low-count : should contain the fast speed i2c clock SCL low
+   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
+   will be ignored.
+
 Example :
 
 	i2c@f0000 {
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index d656657..8739a60 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -188,6 +188,14 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
 					 &dev->scl_falling_time);
 		device_property_read_u32(&pdev->dev, "clock-frequency",
 					 &clk_freq);
+		device_property_read_u16(&pdev->dev, "i2c-ss-scl-high-count",
+					 &dev->ss_hcnt);
+		device_property_read_u16(&pdev->dev, "i2c-ss-scl-low-count",
+					 &dev->ss_lcnt);
+		device_property_read_u16(&pdev->dev, "i2c-fs-scl-high-count",
+					 &dev->fs_hcnt);
+		device_property_read_u16(&pdev->dev, "i2c-fs-scl-low-count",
+					 &dev->fs_lcnt);
 	}
 
 	if (has_acpi_companion(&pdev->dev))
-- 
2.8.0.rc3

[toc] | [next] | [standalone]


#1373624 — Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

FromRob Herring <robh@kernel.org>
Date2016-04-07 20:10 +0200
SubjectRe: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT
Message-ID<rlmxs-7V5-15@gated-at.bofh.it>
In reply to#1372259
On Wed, Apr 06, 2016 at 03:28:00PM +0800, Jisheng Zhang wrote:
> Sometimes, it's convenient to define the scl's high/low count directly,
> e.g HW people would do some measurement then directly give out the
> optimum counts. Previously, we solved the sda falling time and scl
> falling time by i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt(), then put them
> into dt, but what we really care isn't the sda/scl falling time.

This is just so you can put specific clock count instead of converting 
from nanoseconds with standard properties or you gain some additional 
control of the timing. If only the former, then I prefer we stick with 
the common properties.

> From another side, the dw_i2c_acpi_configure() on ACPI platform also
> get hcnt/lcnt values rather than the sda/scl falling time from ACPI
> method, we want similar feature for DT platforms.

That's nice, but not really a reason IMO.

> 
> Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
> ---
>  Documentation/devicetree/bindings/i2c/i2c-designware.txt | 16 ++++++++++++++++
>  drivers/i2c/busses/i2c-designware-platdrv.c              |  8 ++++++++
>  2 files changed, 24 insertions(+)

[toc] | [prev] | [next] | [standalone]


#1377883 — Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

FromJisheng Zhang <jszhang@marvell.com>
Date2016-04-13 14:20 +0200
SubjectRe: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT
Message-ID<rnrW2-15F-13@gated-at.bofh.it>
In reply to#1373624
Dear Rob,

On Thu, 7 Apr 2016 12:57:59 -0500 Rob Herring wrote:

> On Wed, Apr 06, 2016 at 03:28:00PM +0800, Jisheng Zhang wrote:
> > Sometimes, it's convenient to define the scl's high/low count directly,
> > e.g HW people would do some measurement then directly give out the
> > optimum counts. Previously, we solved the sda falling time and scl
> > falling time by i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt(), then put them
> > into dt, but what we really care isn't the sda/scl falling time.  
> 
> This is just so you can put specific clock count instead of converting 
> from nanoseconds with standard properties or you gain some additional 
> control of the timing. If only the former, then I prefer we stick with 
> the common properties.

To be honest, both. Let me show how I gain additional control of the timing
with this patch while I can't do this w/o it.

I want the similar high percent of SCL high for both standard-mode and
fast-mode. Before this patch, this is not achievable because the parameters
to cal the hcnt/lcnt via i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt() are different
for standard-mode and fast-mode.

Thanks,
Jisheng



> 
> > From another side, the dw_i2c_acpi_configure() on ACPI platform also
> > get hcnt/lcnt values rather than the sda/scl falling time from ACPI
> > method, we want similar feature for DT platforms.  
> 
> That's nice, but not really a reason IMO.
> 
> > 
> > Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
> > ---
> >  Documentation/devicetree/bindings/i2c/i2c-designware.txt | 16 ++++++++++++++++
> >  drivers/i2c/busses/i2c-designware-platdrv.c              |  8 ++++++++
> >  2 files changed, 24 insertions(+)  

[toc] | [prev] | [next] | [standalone]


#1373627 — Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-04-07 20:10 +0200
SubjectRe: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT
Message-ID<rlmxs-7V5-25@gated-at.bofh.it>
In reply to#1372259
On Wed, Apr 6, 2016 at 10:28 AM, Jisheng Zhang <jszhang@marvell.com> wrote:
> Sometimes, it's convenient to define the scl's high/low count directly,
> e.g HW people would do some measurement then directly give out the
> optimum counts. Previously, we solved the sda falling time and scl
> falling time by i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt(), then put them
> into dt, but what we really care isn't the sda/scl falling time.
>
> From another side, the dw_i2c_acpi_configure() on ACPI platform also
> get hcnt/lcnt values rather than the sda/scl falling time from ACPI
> method, we want similar feature for DT platforms.
>

Instead of duplicating some words maybe better to explicitly define
two groups of parameters and one which supersedes the other.

> Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
> ---
>  Documentation/devicetree/bindings/i2c/i2c-designware.txt | 16 ++++++++++++++++
>  drivers/i2c/busses/i2c-designware-platdrv.c              |  8 ++++++++
>  2 files changed, 24 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-designware.txt b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> index fee26dc..05176fbf 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> @@ -20,6 +20,22 @@ Optional properties :
>   - i2c-sda-falling-time-ns : should contain the SDA falling time in nanoseconds.
>     This value which is by default 300ns is used to compute the tHIGH period.
>
> + - i2c-ss-scl-high-count : should contain the standard speed i2c clock SCL high
> +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> +   will be ignored.
> +
> + - i2c-ss-scl-low-count : should contain the standard speed i2c clock SCL low
> +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> +   will be ignored.
> +
> + - i2c-fs-scl-high-count : should contain the fast speed i2c clock SCL high
> +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> +   will be ignored.
> +
> + - i2c-fs-scl-low-count : should contain the fast speed i2c clock SCL low
> +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> +   will be ignored.
> +
>  Example :
>
>         i2c@f0000 {
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index d656657..8739a60 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -188,6 +188,14 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
>                                          &dev->scl_falling_time);
>                 device_property_read_u32(&pdev->dev, "clock-frequency",
>                                          &clk_freq);
> +               device_property_read_u16(&pdev->dev, "i2c-ss-scl-high-count",
> +                                        &dev->ss_hcnt);
> +               device_property_read_u16(&pdev->dev, "i2c-ss-scl-low-count",
> +                                        &dev->ss_lcnt);
> +               device_property_read_u16(&pdev->dev, "i2c-fs-scl-high-count",
> +                                        &dev->fs_hcnt);
> +               device_property_read_u16(&pdev->dev, "i2c-fs-scl-low-count",
> +                                        &dev->fs_lcnt);
>         }
>
>         if (has_acpi_companion(&pdev->dev))
> --
> 2.8.0.rc3
>



-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1377884 — Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

FromJisheng Zhang <jszhang@marvell.com>
Date2016-04-13 14:30 +0200
SubjectRe: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT
Message-ID<rns5H-1aN-1@gated-at.bofh.it>
In reply to#1373627
Dear Andy,

On Thu, 7 Apr 2016 21:05:35 +0300 Andy Shevchenko  wrote:

> On Wed, Apr 6, 2016 at 10:28 AM, Jisheng Zhang <jszhang@marvell.com> wrote:
> > Sometimes, it's convenient to define the scl's high/low count directly,
> > e.g HW people would do some measurement then directly give out the
> > optimum counts. Previously, we solved the sda falling time and scl
> > falling time by i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt(), then put them
> > into dt, but what we really care isn't the sda/scl falling time.
> >
> > From another side, the dw_i2c_acpi_configure() on ACPI platform also
> > get hcnt/lcnt values rather than the sda/scl falling time from ACPI
> > method, we want similar feature for DT platforms.
> >  
> 
> Instead of duplicating some words maybe better to explicitly define
> two groups of parameters and one which supersedes the other.

I'm sorry, I can't catch your meaning. Could you please kindly give more
details? Or examples of "two groups of parameters"

Thanks,
Jisheng

> 
> > Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
> > ---
> >  Documentation/devicetree/bindings/i2c/i2c-designware.txt | 16 ++++++++++++++++
> >  drivers/i2c/busses/i2c-designware-platdrv.c              |  8 ++++++++
> >  2 files changed, 24 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/i2c/i2c-designware.txt b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> > index fee26dc..05176fbf 100644
> > --- a/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> > +++ b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> > @@ -20,6 +20,22 @@ Optional properties :
> >   - i2c-sda-falling-time-ns : should contain the SDA falling time in nanoseconds.
> >     This value which is by default 300ns is used to compute the tHIGH period.
> >
> > + - i2c-ss-scl-high-count : should contain the standard speed i2c clock SCL high
> > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> > +   will be ignored.
> > +
> > + - i2c-ss-scl-low-count : should contain the standard speed i2c clock SCL low
> > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> > +   will be ignored.
> > +
> > + - i2c-fs-scl-high-count : should contain the fast speed i2c clock SCL high
> > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> > +   will be ignored.
> > +
> > + - i2c-fs-scl-low-count : should contain the fast speed i2c clock SCL low
> > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
> > +   will be ignored.
> > +
> >  Example :
> >
> >         i2c@f0000 {
> > diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> > index d656657..8739a60 100644
> > --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> > +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> > @@ -188,6 +188,14 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
> >                                          &dev->scl_falling_time);
> >                 device_property_read_u32(&pdev->dev, "clock-frequency",
> >                                          &clk_freq);
> > +               device_property_read_u16(&pdev->dev, "i2c-ss-scl-high-count",
> > +                                        &dev->ss_hcnt);
> > +               device_property_read_u16(&pdev->dev, "i2c-ss-scl-low-count",
> > +                                        &dev->ss_lcnt);
> > +               device_property_read_u16(&pdev->dev, "i2c-fs-scl-high-count",
> > +                                        &dev->fs_hcnt);
> > +               device_property_read_u16(&pdev->dev, "i2c-fs-scl-low-count",
> > +                                        &dev->fs_lcnt);
> >         }
> >
> >         if (has_acpi_companion(&pdev->dev))
> > --
> > 2.8.0.rc3
> >  
> 
> 
> 

[toc] | [prev] | [next] | [standalone]


#1377941 — Re: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT

FromAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Date2016-04-13 15:30 +0200
SubjectRe: [PATCH] i2c: designware-platdrv: get fast/std speed scl high/low count from DT
Message-ID<rnt1O-1O6-51@gated-at.bofh.it>
In reply to#1377884
On Wed, 2016-04-13 at 20:16 +0800, Jisheng Zhang wrote:
> Dear Andy,
> 
> On Thu, 7 Apr 2016 21:05:35 +0300 Andy Shevchenko  wrote:
> 
> > 
> > On Wed, Apr 6, 2016 at 10:28 AM, Jisheng Zhang <jszhang@marvell.com>
> > wrote:
> > > 
> > > Sometimes, it's convenient to define the scl's high/low count
> > > directly,
> > > e.g HW people would do some measurement then directly give out the
> > > optimum counts. Previously, we solved the sda falling time and scl
> > > falling time by i2c_dw_scl_hcnt() and i2c_dw_scl_lcnt(), then put
> > > them
> > > into dt, but what we really care isn't the sda/scl falling time.
> > > 
> > > From another side, the dw_i2c_acpi_configure() on ACPI platform
> > > also
> > > get hcnt/lcnt values rather than the sda/scl falling time from
> > > ACPI
> > > method, we want similar feature for DT platforms.
> > >  
> > Instead of duplicating some words maybe better to explicitly define
> > two groups of parameters and one which supersedes the other.
> I'm sorry, I can't catch your meaning. Could you please kindly give
> more
> details? Or examples of "two groups of parameters"


> --- + - i2c-ss-scl-high-count : should contain the standard speed i2c
> > > clock SCL high
> > > +   count. 


> > > If defined, the i2c-scl-falling-time-ns and i2c-sda-falling-time-
> > > ns
> > > +   will be ignored.

I'm referring to the above sentence. Something like

There are two groups of values identifying i2c timings:

1. i2c-scl-falling-time-ns and i2c-sda-falling-time-ns
2. *-[hl]cnt

The second group of parameters supersedes the first one.


> > > +
> > > + - i2c-ss-scl-low-count : should contain the standard speed i2c
> > > clock SCL low
> > > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-
> > > falling-time-ns
> > > +   will be ignored.
> > > +
> > > + - i2c-fs-scl-high-count : should contain the fast speed i2c
> > > clock SCL high
> > > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-
> > > falling-time-ns
> > > +   will be ignored.
> > > +
> > > + - i2c-fs-scl-low-count : should contain the fast speed i2c clock
> > > SCL low
> > > +   count. If defined, the i2c-scl-falling-time-ns and i2c-sda-
> > > falling-time-ns
> > > +   will be ignored.
> > > +
> > >  Example :
> > > 
> > >         i2c@f0000 {
> > > diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c
> > > b/drivers/i2c/busses/i2c-designware-platdrv.c
> > > index d656657..8739a60 100644
> > > --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> > > +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> > > @@ -188,6 +188,14 @@ static int dw_i2c_plat_probe(struct
> > > platform_device *pdev)
> > >                                          &dev->scl_falling_time);
> > >                 device_property_read_u32(&pdev->dev, "clock-
> > > frequency",
> > >                                          &clk_freq);
> > > +               device_property_read_u16(&pdev->dev, "i2c-ss-scl-
> > > high-count",
> > > +                                        &dev->ss_hcnt);
> > > +               device_property_read_u16(&pdev->dev, "i2c-ss-scl-
> > > low-count",
> > > +                                        &dev->ss_lcnt);
> > > +               device_property_read_u16(&pdev->dev, "i2c-fs-scl-
> > > high-count",
> > > +                                        &dev->fs_hcnt);
> > > +               device_property_read_u16(&pdev->dev, "i2c-fs-scl-
> > > low-count",
> > > +                                        &dev->fs_lcnt);
> > >         }
> > > 
> > >         if (has_acpi_companion(&pdev->dev))
> > > --
> > > 2.8.0.rc3
> > >  
> > 
> > 

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web