Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

i2c: OMAP3: Better noise suppression for fast/standard modes

Use longer noise filter period for fast and standard mode. Based on an
earlier patch by Eero Nurkkala.

Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>

authored by

Aaro Koskinen and committed by
Ben Dooks
84bf2c86 baf46b4e

+12 -2
+12 -2
drivers/i2c/busses/i2c-omap.c
··· 333 333 334 334 if (cpu_is_omap2430() || cpu_is_omap34xx()) { 335 335 336 - /* HSI2C controller internal clk rate should be 19.2 Mhz */ 337 - internal_clk = 19200; 336 + /* 337 + * HSI2C controller internal clk rate should be 19.2 Mhz for 338 + * HS and for all modes on 2430. On 34xx we can use lower rate 339 + * to get longer filter period for better noise suppression. 340 + * The filter is iclk (fclk for HS) period. 341 + */ 342 + if (dev->speed > 400 || cpu_is_omap_2430()) 343 + internal_clk = 19200; 344 + else if (dev->speed > 100) 345 + internal_clk = 9600; 346 + else 347 + internal_clk = 4000; 338 348 fclk_rate = clk_get_rate(dev->fclk) / 1000; 339 349 340 350 /* Compute prescaler divisor */