i2c-omap: add mpu wake up latency constraint in i2c
authorKalle Jokiniemi <kalle.jokiniemi@digia.com>
Tue, 11 May 2010 18:35:08 +0000 (11:35 -0700)
committerBen Dooks <ben-linux@fluff.org>
Wed, 19 May 2010 23:18:59 +0000 (00:18 +0100)
commit20c9d2c4ab8243a1c311248232954b2c1da3ba75
treee035de70d7b89618bb0e6923272849df7d1acb9a
parentf38e66e0077659e5d2ca3858fdb26fc9b1765b9f
i2c-omap: add mpu wake up latency constraint in i2c

While waiting for completion of the i2c transfer, the
MPU could hit OFF mode and cause several msecs of
delay that made i2c transfers fail more often. The
extra delays and subsequent re-trys cause i2c clocks
to be active more often. This has also an negative
effect on power consumption.

Created a mechanism for passing and using the
constraint setting function in driver code. The used
mpu wake up latency constraints are now set individually
per bus, and they are calculated based on clock rate
and fifo size.

Thanks to Jarkko Nikula, Moiz Sonasath, Paul Walmsley,
and Nishanth Menon for tuning out the details of
this patch.

Updates by Kevin as requested by Tony:

- Remove omap_set_i2c_constraint_func() in favor of conditionally
  adding the flag in omap_i2c_add_bus() in order to keep all the OMAP
  conditional checking in a single location.
- Update set_mpu_wkup_lat prototypes to match OMAP PM layer so
  OMAP PM function can be used directly in pdata.

Cc: Moiz Sonasath <m-sonasath@ti.com>
Cc: Jarkko Nikula <jhnikula@gmail.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Nishanth Menon <nm@ti.com>
Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@digia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
arch/arm/plat-omap/i2c.c
drivers/i2c/busses/i2c-omap.c
include/linux/i2c-omap.h [new file with mode: 0644]