diff options
| author | Ben Warren <bwarren@qstreams.com> | 2006-09-07 16:50:54 -0400 | 
|---|---|---|
| committer | Kim Phillips <kim.phillips@freescale.com> | 2006-11-03 19:42:19 -0600 | 
| commit | bb99ad6d8257bf828f150d40f507b30d80a4a7ae (patch) | |
| tree | b097750e9e63f49186717a1eb4fcd078f65ae381 /include/i2c.h | |
| parent | bed85caf872714ebf53013967a695c9d63acfc68 (diff) | |
| download | olio-uboot-2014.01-bb99ad6d8257bf828f150d40f507b30d80a4a7ae.tar.xz olio-uboot-2014.01-bb99ad6d8257bf828f150d40f507b30d80a4a7ae.zip | |
Add support for multiple I2C buses
Hello,
Attached is a patch providing support for multiple I2C buses at the
command level.  The second part of the patch includes an implementation
for the MPC834x CPU and MPC8349EMDS board.
/*** Note: This patch replaces ticket DNX#2006083042000018 ***/
Signed-off-by: Ben Warren <bwarren@qstreams.com>
Overview:
1. Include new 'i2c' command (based on USB implementation) using
CONFIG_I2C_CMD_TREE.
2. Allow multiple buses by defining CONFIG_I2C_MULTI_BUS.  Note that
the commands to change bus number and speed are only available under the
new 'i2c' command mentioned in the first bullet.
3. The option CFG_I2C_NOPROBES has been expanded to work in multi-bus
systems.  When CONFIG_I2C_MULTI_BUS is used, this option takes the form
of an array of bus-device pairs.  Otherwise, it is an array of uchar.
CHANGELOG:
        Added new 'i2c' master command for all I2C interaction.  This is
conditionally compiled with CONFIG_I2C_CMD_TREE.  New commands added for
setting I2C bus speed as well as changing the active bus if the board
has more than one (conditionally compiled with
CONFIG_I2C_MULTI_BUS).  Updated NOPROBE logic to handle multiple buses.
Updated README.
regards,
Ben
Diffstat (limited to 'include/i2c.h')
| -rw-r--r-- | include/i2c.h | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/include/i2c.h b/include/i2c.h index 6d39080d8..97e006163 100644 --- a/include/i2c.h +++ b/include/i2c.h @@ -82,4 +82,49 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len);  uchar i2c_reg_read (uchar chip, uchar reg);  void  i2c_reg_write(uchar chip, uchar reg, uchar val); +/* + * Functions for setting the current I2C bus and its speed + */ + +/* + * i2c_set_bus_num: + * + *  Change the active I2C bus.  Subsequent read/write calls will + *  go to this one. + * + * 	bus - bus index, zero based + * + * 	Returns: 0 on success, not 0 on failure + * + */ +int		i2c_set_bus_num(uchar bus); + +/* + * i2c_get_bus_num: + * + *  Returns index of currently active I2C bus.  Zero-based. + */ + +uchar	i2c_get_bus_num(void); + +/* + * i2c_set_bus_speed: + * + *  Change the speed of the active I2C bus + * + * 	speed - bus speed in Hz + * + * 	Returns: 0 on success, not 0 on failure + * + */ +int		i2c_set_bus_speed(int); + +/* + * i2c_get_bus_speed: + * + *  Returns speed of currently active I2C bus in Hz + */ + +int		i2c_get_bus_speed(void); +  #endif	/* _I2C_H_ */ |