Message ID | 1337343153-3019-8-git-send-email-rajeshwari.s@samsung.com |
---|---|
State | New |
Headers | show |
On Fri, May 18, 2012 at 5:12 AM, Rajeshwari Shinde <rajeshwari.s@samsung.com > wrote: > This adds multiple i2c channel support for I2C. > > Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com> > Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com> > Acked-by: Simon Glass <sjg@chromium.org> > --- > drivers/i2c/s3c24x0_i2c.c | 27 +++++++++++++++++++++++++++ > 1 files changed, 27 insertions(+), 0 deletions(-) > > diff --git a/drivers/i2c/s3c24x0_i2c.c b/drivers/i2c/s3c24x0_i2c.c > index 61b54a9..39875cd 100644 > --- a/drivers/i2c/s3c24x0_i2c.c > +++ b/drivers/i2c/s3c24x0_i2c.c > @@ -189,6 +189,33 @@ static void i2c_bus_init(struct s3c24x0_i2c *i2c, > unsigned int bus) > i2c_ch_init(i2c, CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); > } > > +/* > + * MULTI BUS I2C support > + */ > + > +#ifdef CONFIG_I2C_MULTI_BUS > +int i2c_set_bus_num(unsigned int bus) > +{ > + struct s3c24x0_i2c *i2c; > + > + if ((bus < 0) || (bus >= CONFIG_MAX_I2C_NUM)) { > + debug("Bad bus: %d\n", bus); > + return -1; > + } > + > + g_current_bus = bus; > + i2c = get_base_i2c(g_current_bus); > + i2c_bus_init(i2c, g_current_bus); > + > + return 0; > +} > + > +unsigned int i2c_get_bus_num(void) > +{ > + return g_current_bus; > +} > +#endif > + > #ifdef CONFIG_EXYNOS5 > void i2c_init(int speed, int slaveadd) > { > -- > 1.7.4.4 > >
diff --git a/drivers/i2c/s3c24x0_i2c.c b/drivers/i2c/s3c24x0_i2c.c index 61b54a9..39875cd 100644 --- a/drivers/i2c/s3c24x0_i2c.c +++ b/drivers/i2c/s3c24x0_i2c.c @@ -189,6 +189,33 @@ static void i2c_bus_init(struct s3c24x0_i2c *i2c, unsigned int bus) i2c_ch_init(i2c, CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); } +/* + * MULTI BUS I2C support + */ + +#ifdef CONFIG_I2C_MULTI_BUS +int i2c_set_bus_num(unsigned int bus) +{ + struct s3c24x0_i2c *i2c; + + if ((bus < 0) || (bus >= CONFIG_MAX_I2C_NUM)) { + debug("Bad bus: %d\n", bus); + return -1; + } + + g_current_bus = bus; + i2c = get_base_i2c(g_current_bus); + i2c_bus_init(i2c, g_current_bus); + + return 0; +} + +unsigned int i2c_get_bus_num(void) +{ + return g_current_bus; +} +#endif + #ifdef CONFIG_EXYNOS5 void i2c_init(int speed, int slaveadd) {