Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1372259 > unrolled thread
| Started by | Jisheng Zhang <jszhang@marvell.com> |
|---|---|
| First post | 2016-04-06 09:40 +0200 |
| Last post | 2016-04-13 15:30 +0200 |
| Articles | 6 — 4 participants |
Back to article view | Back to linux.kernel
[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
| From | Jisheng Zhang <jszhang@marvell.com> |
|---|---|
| Date | 2016-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]
| From | Rob Herring <robh@kernel.org> |
|---|---|
| Date | 2016-04-07 20:10 +0200 |
| Subject | Re: [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]
| From | Jisheng Zhang <jszhang@marvell.com> |
|---|---|
| Date | 2016-04-13 14:20 +0200 |
| Subject | Re: [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]
| From | Andy Shevchenko <andy.shevchenko@gmail.com> |
|---|---|
| Date | 2016-04-07 20:10 +0200 |
| Subject | Re: [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]
| From | Jisheng Zhang <jszhang@marvell.com> |
|---|---|
| Date | 2016-04-13 14:30 +0200 |
| Subject | Re: [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]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2016-04-13 15:30 +0200 |
| Subject | Re: [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