u-boot/include
Tom Rix 7f79dfb48b OMAP I2C Fix the sampling clock.
This problem is seen on Zoom1 and Zoom2 in the startup and
when i2c probe is used

Before :

In:    serial
Out:   serial
Err:   serial
timed out in wait_for_bb: I2C_STAT=1000
timed out in wait_for_bb: I2C_STAT=1000
timed out in wait_for_bb: I2C_STAT=1000
timed out in wait_for_pin: I2C_STAT=1000
I2C read: I/O error
timed out in wait_for_bb: I2C_STAT=1000
timed out in wait_for_bb: I2C_STAT=1000
Die ID #327c00020000000004013ddd05026013
Hit any key to stop autoboot:  0
OMAP3 Zoom1# i2c probe
Valid chip addresses:timed out in wait_for_bb: I2C_STAT=1000
 02 03 04 05 06 07 08 09 0A 0B 0C 0D <snip>

After :

In:    serial
Out:   serial
Err:   serial
Die ID #327c00020000000004013ddd05026013
Hit any key to stop autoboot:  0
OMAP3 Zoom1# i2c probe
Valid chip addresses: 48 49 4A 4B

The addresses are for the twl4030.

The prescalar that converts the function clock to the sampling
clock is hardcoded to 0.  The reference manual recommends 7
if the function clock is 96MHz.

Instead of just changing the hardcoded values, the prescalar
is calculated from the value I2C_IP_CLK.

The i2c #defines are in kHz.  The speed passed into the
i2c init routine is in Hz.  To be consistent, change the
defines to be in Hz.

The timing calculations are based on what is done in the
linux 2.6.30 kernel in drivers/i2c/buses/i2c_omap.c as
apposed to what is done in TRM.

The major variables in the timing caculations are
specified as #defines that can be overriden as required.

The variables and their defaults are

I2C_IP_CLK				SYSTEM_CLOCK_96
I2C_INTERNAL_SAMPLING_CLK		19200000
I2C_FASTSPEED_SCLL_TRIM			6
I2C_FASTSPEED_SCLH_TRIM			6
I2C_HIGHSPEED_PHASE_ONE_SCLL_TRIM	I2C_FASTSPEED_SCLL_TRIM
I2C_HIGHSPEED_PHASE_ONE_SCLH_TRIM	I2C_FASTSPEED_SCLH_TRIM
I2C_HIGHSPEED_PHASE_TWO_SCLL_TRIM	I2C_FASTSPEED_SCLL_TRIM
I2C_HIGHSPEED_PHASE_TWO_SCLH		I2C_FASTSPEED_SCLH_TRIM

This was runtime verified on Zoom1, Zoom2, Beagle and Overo.
The 400kHz and 3.4M cases were verifed on test Zoom1,
Zoom2, Beagle and Overo configurations.

Testing for omap2 will be done in a second step as Nishanth
and Jean-Christophe commented.

Signed-off-by: Tom Rix <Tom.Rix@windriver.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Heiko Schocher <hs@denx.de>
2009-07-28 08:52:33 +02:00
..
asm-arm OMAP I2C Fix the sampling clock. 2009-07-28 08:52:33 +02:00
asm-avr32 Add AVR32 LCD support 2009-07-26 13:12:02 +02:00
asm-blackfin Blackfin: add os log functions 2009-07-18 21:15:50 -04:00
asm-generic asm-generic: Consolidate errno.h to asm-generic/errno.h 2009-07-09 14:07:11 +02:00
asm-i386 Implement SC520 timers 2009-03-20 22:39:13 +01:00
asm-m68k asm-generic: Consolidate errno.h to asm-generic/errno.h 2009-07-09 14:07:11 +02:00
asm-microblaze microblaze: Remove ignored return type for __arch__swab16 function 2009-07-17 08:02:52 +02:00
asm-mips MIPS: Make all extern-ed functions in bitops.h static 2009-05-16 09:20:05 +09:00
asm-nios remove bi_enet*addr from global data for all arches 2009-03-20 22:39:12 +01:00
asm-nios2 remove bi_enet*addr from global data for all arches 2009-03-20 22:39:12 +01:00
asm-ppc ppc4xx: Add struct for 4xx GPIO controller registers 2009-07-24 06:47:33 +02:00
asm-sh Merge branch 'asm-generic' of git://git.denx.de/u-boot-microblaze 2009-07-16 21:53:15 +02:00
asm-sparc asm-generic: Consolidate errno.h to asm-generic/errno.h 2009-07-09 14:07:11 +02:00
bedbug Big white-space cleanup. 2008-05-21 00:14:08 +02:00
configs at91cap9adk: fix #ifdef/#endif pairing (2nd try) 2009-07-27 10:01:11 +02:00
cramfs Fix endianess problem in cramfs code (cramfs is always host-endian in Linux) 2008-03-03 22:08:08 +01:00
galileo rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
jffs2 jffs2: summary support 2008-12-09 23:39:59 +01:00
linux Remove legacy NAND and disk on chip code. 2009-07-16 19:07:47 -05:00
lzma Refresh LZMA-lib to v4.65 2009-07-22 09:43:27 +02:00
mtd UBI: Add basic UBI support to U-Boot (Part 7/8) 2008-11-19 20:34:39 +01:00
pcmcia
u-boot Revert "zlib: updated to v.1.2.3" 2009-07-24 14:24:07 +02:00
usb usb: fix CONFIG_SYS_MPC83xx_USB_ADDR not defined error 2009-07-09 21:33:14 +02:00
.gitignore Update U-Boot's build timestamp on every compile 2008-12-06 23:36:43 +01:00
4xx_i2c.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
74xx_7xx.h powerpc: Move duplicated BAT defines to mmu.h 2009-02-10 00:27:40 +01:00
405_dimm.h
405_mal.h ppc4xx: Add basic support for AMCC 460EX/460GT (3/5) 2008-03-15 07:28:04 +01:00
_exports.h [ARM] TI DaVinci support, hopefully final 2007-08-10 20:26:18 +02:00
ACEX1K.h Add size #defines for Altera Cyclone-II EP2C8 and EP2C20. 2008-06-03 21:40:09 +02:00
addr_map.h Introduce addr_map library 2008-12-15 22:05:36 +01:00
ahci.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
ali512x.h Move ali512x.h 2009-03-20 22:39:13 +01:00
altera.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
ambapp.h Coding Style cleanup; update CHANGELOG 2008-04-13 09:59:26 -07:00
api_public.h API: Improve glue mid-layer of the API demo application. 2009-02-18 00:39:44 +01:00
arm925t.h
armcoremodule.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
at45.h at91: rename DATAFLASH_MMC_SELECT to CONFIG_DATAFLASH_MMC_SELECT 2009-04-04 20:42:19 +02:00
at91rm9200_i2c.h
at91rm9200_net.h
ata.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
atmel_lcdc.h Add ATMEL LCD driver 2008-05-10 11:44:55 +02:00
bcd.h rtc: Add Xicor/Intersil X1205 RTC support 2007-10-31 21:20:50 +01:00
bcm5221.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
bmp_layout.h
bus_vcxk.h new video driver for bus vcxk framebuffers 2009-07-26 13:17:21 +02:00
bzlib.h
circbuf.h
clps7111.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
command.h Make "usage" messages more helpful. 2009-06-12 20:45:48 +02:00
common.h Fix include/common.h for boards with CONFIG_STATUS_LED 2009-07-27 09:58:14 +02:00
commproc.h 8xx, mgsuvd: rename board to a more generic name 2009-03-18 20:50:04 +01:00
compiler.h compiler.h: unify system ifdef cruft here 2009-07-19 21:41:46 +02:00
config_cmd_all.h mflash: Initial mflash support 2009-04-03 23:47:06 +02:00
config_cmd_default.h include/config_cmd_default.h cleanup 2009-07-17 23:25:51 +02:00
crc.h
da9030.h
dataflash.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
ddr_spd.h fsl-ddr: add the DDR3 SPD infrastructure 2009-03-30 13:33:50 -05:00
div64.h Add a do_div() wrapper macro, lldiv(). 2009-01-24 00:23:09 +01:00
dm9000.h Add config option for disabling DM9000-SROM support. 2009-06-08 22:57:21 -07:00
dm9161.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
dp83848.h [ARM] TI DaVinci support, hopefully final 2007-08-10 20:26:18 +02:00
ds4510.h Add support for Maxim's DS4510 I2C device 2009-01-24 01:47:50 +01:00
dtt.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
e500.h 85xx: Add QE clk support 2009-06-12 17:16:59 -05:00
elf.h compiler.h: unify system ifdef cruft here 2009-07-19 21:41:46 +02:00
environment.h compiler.h: unify system ifdef cruft here 2009-07-19 21:41:46 +02:00
exports.h UBI: Add basic UBI support to U-Boot (Part 6/8) 2008-11-19 20:34:39 +01:00
ext2fs.h
fat.h Remove non-ascii characters from fat code 2008-12-04 20:51:44 +01:00
fdc.h
fdt.h powerpc: Fix bootm to boot up again with a Ramdisk 2008-09-13 02:03:38 +02:00
fdt_support.h 83xx: Replace CONFIG_MPC83XX with CONFIG_MPC83xx 2009-06-12 20:47:17 +02:00
fis.h ata: add the fis struct for SATA 2008-03-26 23:38:54 +01:00
flash.h UBI/cfi-mtd: Fix mtd name for multiple chips 2009-04-04 23:25:40 +02:00
fpga.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
fsl_esdhc.h fsl_esdhc: Add device tree fixups 2009-07-16 22:24:06 +02:00
fsl_nfc.h MX31: Add NAND SPL for i.MX31. 2009-06-21 16:18:12 +02:00
hush.h hush: add showvar command for hush shell. 2008-10-18 21:54:02 +02:00
hwconfig.h Add simple hwconfig infrastructure 2009-07-16 22:23:53 +02:00
i2c.h powerpc: updates for the keymile boards 2009-07-21 00:06:11 +02:00
i8042.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
ide.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
image.h compiler.h: unify system ifdef cruft here 2009-07-19 21:41:46 +02:00
iomux.h stdio/device: rework function naming convention 2009-07-18 00:27:46 +02:00
ioports.h Stop using immap_t for cpm offset on 85xx 2007-12-11 22:34:19 -06:00
keyboard.h
kgdb.h
lcd.h lcd.h: define extern vidinfo_t for all cases 2009-07-26 13:16:50 +02:00
lcdvideo.h
lh7a40x.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
lh7a400.h
lh7a404.h
libata.h ata: update the libata.h from ata.h of linux kernel 2008-04-13 23:20:16 -07:00
libfdt.h libfdt: Fix C++ compile-time cast error on gnu 4.2.1 2009-04-01 19:30:27 -04:00
libfdt_env.h compiler.h: unify system ifdef cruft here 2009-07-19 21:41:46 +02:00
linux_logo.h
lmb.h Fix LMB type issues 2008-07-10 00:39:28 +02:00
logbuff.h Avoid initrd and logbuffer area overlaps 2008-06-03 19:34:19 +02:00
lpd7a400_cpld.h
lxt971a.h Remove duplicate definitions in include/lxt971a.h. 2008-07-06 23:44:34 -07:00
lynxkdi.h
malloc.h malloc.h: protect it against multiple include 2009-07-19 21:34:45 +02:00
mb862xx.h video: mb862xx: use macros instead of magic numbers 2009-07-17 15:23:40 +02:00
MCD_dma.h ColdFire: Add MCF547x_8x dma code and header files 2008-01-17 14:59:42 -06:00
MCD_progCheck.h ColdFire: Add MCF547x_8x dma code and header files 2008-01-17 14:59:42 -06:00
MCD_tasksInit.h ColdFire: Add MCF547x_8x dma code and header files 2008-01-17 14:59:42 -06:00
mg_disk.h mflash: Initial mflash support 2009-04-03 23:47:06 +02:00
mii_phy.h
miiphy.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
mk48t59.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
mmc.h mmc: fix response decoding on little endian 2009-06-02 17:18:57 -05:00
mpc5xx.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
mpc5xxx.h mpc52xx: Add SPI driver. 2009-06-14 23:01:38 +02:00
mpc5xxx_sdma.h Move MPC5xxx_FEC driver to drivers/net 2008-08-29 13:58:07 -06:00
mpc8xx.h
mpc8xx_irq.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
mpc83xx.h 83xx: Add support for fsl_dma driver 2009-07-02 11:15:57 -05:00
mpc85xx.h 83xx/85xx: further localbus cleanups 2008-06-10 18:22:25 -05:00
mpc86xx.h powerpc: Move duplicated BAT defines to mmu.h 2009-02-10 00:27:40 +01:00
mpc106.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
mpc824x.h powerpc: Move duplicated BAT defines to mmu.h 2009-02-10 00:27:40 +01:00
mpc8220.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
mpc8260.h
mpc8260_irq.h
nand.h Remove legacy NAND and disk on chip code. 2009-07-16 19:07:47 -05:00
net.h Add DNS support 2009-07-22 22:53:44 -07:00
netdev.h fec_mxc: driver for FEC ethernet controller on i.MX27 2009-07-22 22:59:07 -07:00
nios-io.h
nios.h
nios2-epcs.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
nios2-io.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
nios2.h
nomadik.h Added nomadik.h header 2009-02-22 13:39:27 +01:00
ns7520_eth.h Remove duplicate definitions in include/lxt971a.h. 2008-07-06 23:44:34 -07:00
ns9750_bbus.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
ns9750_eth.h Remove duplicate definitions in include/lxt971a.h. 2008-07-06 23:44:34 -07:00
ns9750_mem.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
ns9750_ser.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
ns9750_sys.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
ns16550.h include/ns16550.h: Unify structure declaration for registers 2009-04-04 01:23:56 +02:00
ns87308.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
onenand_uboot.h Compile warning fix in onenand_uboot.h 2009-02-02 20:42:15 +01:00
part.h mflash: Initial mflash support 2009-04-03 23:47:06 +02:00
pc_keyb.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
pca953x.h Add support for PCA953x I2C gpio devices 2008-12-19 18:11:49 -06:00
pci.h PCI: Add pci_last_busno() helper 2009-02-23 15:51:10 -06:00
pci_ids.h Add ESD PCI vendor ID 2009-07-11 01:02:20 +02:00
pcmcia.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
post.h FPU POST: fix warnings when building with 2.18 binutils 2009-01-24 01:49:41 +01:00
ppc4xx.h ppc4xx: Move definition for PPC4xx NAND FLASH controller to header 2009-05-23 12:51:39 +02:00
ppc4xx_enet.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
ppc405.h ppc4xx: Replace 4xx lowercase SPR references 2009-07-24 06:47:17 +02:00
ppc440.h ppc4xx: Replace 4xx lowercase SPR references 2009-07-24 06:47:17 +02:00
ppc_asm.tmpl e500 needs ppc_asm.tmp MCK_EXCEPTION 2007-08-14 01:21:22 -05:00
ppc_defs.h
ps2mult.h Rename common ns16550 constants with UART_ prefix to prevent conflicts 2009-04-03 22:34:07 +02:00
radeon.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
reiserfs.h
rtc.h rtc: remove broken rtc_read and rtc_write declarations 2009-04-01 22:34:37 +02:00
s3c24x0.h
s3c64x0.h ARM: Add arm1176 core with S3C6400 SoC 2008-08-31 00:39:46 +02:00
s3c2400.h
s3c2410.h Fix compiler warning in include/s3c2410.h 2007-08-29 02:05:53 +02:00
s3c6400.h s3c64xx: remove unnecessary definition 2009-04-24 22:54:18 +02:00
s6e63d6.h A driver for the S6E63D6 SPI display controller from Samsung 2009-02-24 10:00:28 +01:00
s_record.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
SA-1100.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
sata.h SATA: do not auto-initialize during boot 2009-01-27 23:42:39 +01:00
scsi.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
sed156x.h
sed13806.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
serial.h stdio/device: rework function naming convention 2009-07-18 00:27:46 +02:00
sha1.h Add support for calculating hashes with watchdog triggering 2008-04-25 00:01:06 +02:00
sha256.h include/sha256.h: fix file permissions. 2008-07-06 01:21:46 +02:00
sm501.h
smiLynxEM.h
spartan2.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
spartan3.h Fix Spartan-3 definitions. 2008-09-22 22:07:20 +02:00
spd.h
spd_sdram.h
spi.h Move conditional compilation of MPC8XXX SPI driver to Makefile 2008-07-01 21:02:11 +02:00
spi_flash.h SPI Flash subsystem 2008-06-03 20:31:34 +02:00
status_led.h ARM Add blue colour LED to status_led. 2009-06-12 20:39:49 +02:00
stdio_dev.h console: unify printing current devices 2009-07-19 01:02:46 +02:00
stratixII.h Altera Stratix II support 2008-04-13 14:52:48 -07:00
sym53c8xx.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
systemace.h
timestamp.h Update U-Boot's build timestamp on every compile 2008-12-06 23:36:43 +01:00
tsec.h tsec: Add support for BCM5482S PHY 2009-06-15 00:13:54 -07:00
tsi108.h
tsi148.h Add support for the Tundra TSI148 VME-bridge 2009-07-19 11:21:08 +02:00
tws.h drivers/twserial: Add protocol driver for "three wire serial" interface. 2009-03-30 09:38:36 +02:00
ubi_uboot.h UBIFS: Implement read-only UBIFS support in U-Boot 2009-03-20 22:39:15 +01:00
universe.h
usb.h usb : musb : Enabling DM6446 (TI DaVinci) USB module power 2009-01-28 19:57:30 +01:00
usb_cdc_acm.h
usb_defs.h Prepare USB layer for ehci 2009-01-28 19:57:27 +01:00
usbdescriptors.h
usbdevice.h drivers/usb: regorganisation 2009-04-06 20:40:46 +02:00
version.h Makefile: fix "error: version_autogenerated.h: No such file or directory" 2008-05-13 23:15:52 +02:00
vfd_logo.h
video.h
video_ad7176.h
video_ad7177.h
video_ad7179.h
video_easylogo.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
video_fb.h
video_font.h
video_logo.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
virtex2.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
vsc7385.h Cleanup coding style, update CHANGELOG 2008-03-26 11:48:46 +01:00
vxworks.h vxworks.h: Fix build problem introduced by commits 29a4c24d/e9084b23 2008-12-09 00:24:30 +01:00
w83c553f.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
watchdog.h
xilinx.h rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
xyzModem.h