All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Christian Ruppert <christian.ruppert@abilis.com>
Cc: linux-i2c@vger.kernel.org, Wolfram Sang <wsa@the-dreams.de>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] i2c-designware: make *CNT values configurable
Date: Thu, 11 Jul 2013 13:13:30 +0300	[thread overview]
Message-ID: <20130711101330.GP4898@intel.com> (raw)
In-Reply-To: <20130711073600.GG4898@intel.com>

On Thu, Jul 11, 2013 at 10:36:00AM +0300, Mika Westerberg wrote:
> On Wed, Jul 10, 2013 at 06:56:35PM +0200, Christian Ruppert wrote:
> > On Wed, Jul 10, 2013 at 01:52:15PM +0300, Mika Westerberg wrote:
> > > On Tue, Jul 09, 2013 at 06:19:28PM +0200, Christian Ruppert wrote:
> > > > What I meant is the following: The clock cycle time Tc is composed of
> > > > the four components
> > > > 
> > > >   Tc = Th + Tf + Tl + Tr
> > > > 
> > > > where
> > > >   Th: Time during which the signal is high
> > > >   Tf: Falling edge transition time
> > > >   Tl: Time during which the signal is low
> > > >   Tr: Rising edge transition time
> > > > 
> > > > The I2C specification specifies a minimum for Tl and Th and a range (or
> > > > maximum) for Tr and Tf. A maximum frequency is specified as the
> > > > frequency obtained by adding the minima for Th and Tl to the maxima of
> > > > Tr ant Tf.
> > > > Since as you said, transition times are very much PCB dependent, one way
> > > > to guarantee the max. frequency constraint (and to achieve a constant
> > > > frequency at its max) is to define the constants
> > > > Th' = Th + Tf := Th_min + Tf_max
> > > > Tl' = Tl + Tr := Tl_min + Tr_max
> > > > 
> > > > and to calculate the variables
> > > > Th = Th' - Tf
> > > > Tl = Tl' - Tr
> > > > in function of Tf and Tr of the given PCB.
> > > 
> > > If I understand the above, it leaves Tf and Tr to be PCB specific and then
> > > these values are passed to the core driver from platform data, right?
> > 
> > That would be the idea: Calculate Th' and Tl' in function of the desired
> > clock frequency and duty cycle and then adapt these values using
> > measured transition times. What prevented me from implementing this
> > rather academic approach are the following comments in
> > i2c-designware-core.c:
> > 
> > /*
> >  * DesignWare I2C core doesn't seem to have solid strategy to meet
> >  * the tHD;STA timing spec.  Configuring _HCNT based on tHIGH spec
> >  * will result in violation of the tHD;STA spec.
> >  */
> > 
> > /* ...
> >  * This is just experimental rule; the tHD;STA period
> >  * turned out to be proportinal to (_HCNT + 3).  With this setting,
> >  * we could meet both tHIGH and tHD;STA timing specs.
> >  * ...
> >  */
> > 
> > If I interpret this right, the slow down of the clock is intentional to
> > meet tHD;STA timing constraints.
> 
> Yeah, looks like so. tHD;STA is the SDA hold time. I wonder if the above
> comments apply to some earlier version of the IP that didn't have the SDA
> hold register?

Scratch that.

I re-read the spec and tHD;STA is hold time for (repeated) start. There is
a constraint that says that the device must internally provide a hold time
of at least 300ns for the SDA signal. Maybe that's the constraint the
comment above is referring to?

  reply	other threads:[~2013-07-11 10:13 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-08 11:45 [PATCH 1/2] i2c-designware: make *CNT values configurable Mika Westerberg
2013-07-08 11:45 ` Mika Westerberg
     [not found] ` <1373283927-21677-1-git-send-email-mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2013-07-08 11:45   ` [PATCH 2/2] i2c-designware: configure *CNT values from ACPI Mika Westerberg
2013-07-08 11:45     ` Mika Westerberg
     [not found]     ` <1373283927-21677-2-git-send-email-mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2013-07-10 13:01       ` Mika Westerberg
2013-07-10 13:01         ` Mika Westerberg
2013-07-08 13:42   ` [PATCH 1/2] i2c-designware: make *CNT values configurable Christian Ruppert
2013-07-08 13:42     ` Christian Ruppert
     [not found]     ` <20130708134216.GB6402-7oYq3qWSd+k@public.gmane.org>
2013-07-09  8:44       ` Mika Westerberg
2013-07-09  8:44         ` Mika Westerberg
     [not found]         ` <20130709084402.GF4898-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-07-09 16:19           ` Christian Ruppert
2013-07-09 16:19             ` Christian Ruppert
     [not found]             ` <20130709161927.GC30236-7oYq3qWSd+k@public.gmane.org>
2013-07-10 10:52               ` Mika Westerberg
2013-07-10 10:52                 ` Mika Westerberg
     [not found]                 ` <20130710105215.GY4898-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-07-10 16:56                   ` Christian Ruppert
2013-07-10 16:56                     ` Christian Ruppert
     [not found]                     ` <20130710165634.GA30693-7oYq3qWSd+k@public.gmane.org>
2013-07-11  7:36                       ` Mika Westerberg
2013-07-11  7:36                         ` Mika Westerberg
2013-07-11 10:13                         ` Mika Westerberg [this message]
     [not found]                           ` <20130711101330.GP4898-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-07-12  7:56                             ` Shinya Kuribayashi
2013-07-12  7:56                               ` Shinya Kuribayashi
     [not found]                               ` <51DFB6C1.4040001-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2013-07-12  8:51                                 ` Mika Westerberg
2013-07-12  8:51                                   ` Mika Westerberg
     [not found]                                   ` <20130712085140.GY4898-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-07-13  5:36                                     ` Shinya Kuribayashi
2013-07-13  5:36                                       ` Shinya Kuribayashi
     [not found]                                       ` <51E0E76B.1040304-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2013-07-16 11:16                                         ` Christian Ruppert
2013-07-16 11:16                                           ` Christian Ruppert
     [not found]                                           ` <20130716111616.GA25835-7oYq3qWSd+k@public.gmane.org>
2013-07-17 14:39                                             ` Shinya Kuribayashi
2013-07-17 14:39                                               ` Shinya Kuribayashi
     [not found]                                               ` <51E6ACBE.7000509-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2013-07-22 13:17                                                 ` Christian Ruppert
2013-07-22 13:17                                                   ` Christian Ruppert
     [not found]                                                   ` <20130722131706.GA24081-7oYq3qWSd+k@public.gmane.org>
2013-07-24 14:31                                                     ` Shinya Kuribayashi
2013-07-24 14:31                                                       ` Shinya Kuribayashi
     [not found]                                                       ` <51EFE550.1000507-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2013-08-05  9:31                                                         ` Christian Ruppert
2013-08-05  9:31                                                           ` Christian Ruppert
     [not found]                                                           ` <20130805093126.GE20936-7oYq3qWSd+k@public.gmane.org>
2013-08-05 10:02                                                             ` Wolfram Sang
2013-08-05 10:02                                                               ` Wolfram Sang
2013-08-12  7:48                                                               ` Christian Ruppert
2013-08-12  7:48                                                                 ` Christian Ruppert
     [not found]                                                                 ` <20130812074800.GA23792-7oYq3qWSd+k@public.gmane.org>
2013-08-12 11:09                                                                   ` Wolfram Sang
2013-08-12 11:09                                                                     ` Wolfram Sang
2013-08-16  2:15                                                             ` Shinya Kuribayashi
2013-08-16  2:15                                                               ` Shinya Kuribayashi
2013-08-19 11:36                                                               ` Mika Westerberg
     [not found]                                                                 ` <20130819113604.GN4898-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-08-19 12:22                                                                   ` Shinya Kuribayashi
2013-08-19 12:22                                                                     ` Shinya Kuribayashi
2013-08-21 14:39                                                               ` Christian Ruppert
     [not found]                                                                 ` <20130821143915.GA3046-7oYq3qWSd+k@public.gmane.org>
2013-08-24  4:58                                                                   ` Shinya Kuribayashi
2013-08-24  4:58                                                                     ` Shinya Kuribayashi
     [not found]                                                                     ` <52183D87.40703-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2013-08-28 15:34                                                                       ` Christian Ruppert
2013-08-28 15:34                                                                         ` Christian Ruppert
2013-10-08 15:00                                                                         ` [PATCH 1/2] i2c designware make SCL and SDA falling time configurable Romain Baeriswyl
2013-10-09  7:55                                                                           ` Mika Westerberg
2013-10-10  0:54                                                                             ` Ryan Mallon
     [not found]                                                                               ` <5255FAB5.7080803-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-10-13 11:36                                                                                 ` Shinya Kuribayashi
2013-10-13 11:36                                                                                   ` Shinya Kuribayashi
     [not found]                                                                                   ` <525A85D6.3090608-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2014-01-16 19:43                                                                                     ` Wolfram Sang
2014-01-16 19:43                                                                                       ` Wolfram Sang
2014-01-20 16:43                                                                                       ` [PATCH v2 " Romain Baeriswyl
     [not found]                                                                                         ` <1390236223-22584-1-git-send-email-romainba-ux6zf3SgZrrQT0dZR+AlfA@public.gmane.org>
2014-03-09  8:20                                                                                           ` Wolfram Sang
2014-03-09  8:20                                                                                             ` Wolfram Sang
     [not found]                                                                         ` <20130828153429.GB7066-7oYq3qWSd+k@public.gmane.org>
2013-10-08 15:00                                                                           ` [PATCH 2/2] i2c designware add support of I2C standard mode Romain Baeriswyl
2013-10-08 15:00                                                                             ` Romain Baeriswyl
2013-10-09  7:56                                                                             ` Mika Westerberg
     [not found]                                                                               ` <20131009075632.GR3521-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-10-13 11:46                                                                                 ` Shinya Kuribayashi
2013-10-13 11:46                                                                                   ` Shinya Kuribayashi
2014-01-16 19:33                                                                             ` Wolfram Sang
2014-01-20 16:45                                                                               ` [PATCH v2 " Romain Baeriswyl
     [not found]                                                                                 ` <1390236338-21407-1-git-send-email-romainba-ux6zf3SgZrrQT0dZR+AlfA@public.gmane.org>
2014-03-09  8:07                                                                                   ` Wolfram Sang
2014-03-09  8:07                                                                                     ` Wolfram Sang
2014-03-25 10:18                                                                                     ` [PATCH V3 " Romain Baeriswyl
2014-03-25 10:18                                                                                       ` Romain Baeriswyl
2013-08-19  6:39                                             ` [PATCH 1/2] i2c-designware: make *CNT values configurable Mika Westerberg
2013-08-19  6:39                                               ` Mika Westerberg

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=20130711101330.GP4898@intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=christian.ruppert@abilis.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wsa@the-dreams.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.