public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Tom <Tom.Rix@windriver.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] OMAP2/3: I2C: Add support for second and third bus
Date: Mon, 02 Nov 2009 09:50:04 -0600	[thread overview]
Message-ID: <4AEEFFAC.30700@windriver.com> (raw)
In-Reply-To: <1257105030-24574-1-git-send-email-dirk.behme@googlemail.com>

Dirk Behme wrote:
> Add support to use second and third I2C bus, too.
> 
> Bus 0 is still the default, but by calling i2c_set_bus_num(1/2) before doing
> I2C accesses, code can switch to bus 1 and 2, too. Don't forget to switch
> back afterwards, then. 
> 
> Signed-off-by: Dirk Behme <dirk.behme@googlemail.com>
> ---
> 
> Based on Hugo Vincent's patch
> 
> http://lists.denx.de/pipermail/u-boot/2009-June/055029.html
> 
> (this patch only contains the multibus support)
> 
> Compile tested with omap2_beagle and omap2420h4_config.
> 
> Boot tested with Zippy (I2C bus 1).
> 
>  drivers/i2c/omap24xx_i2c.c          |  170 +++++++++++++++++++++---------------
>  include/asm-arm/arch-omap24xx/i2c.h |   53 +++++++----
>  include/asm-arm/arch-omap3/i2c.h    |   50 +++++++---
>  3 files changed, 175 insertions(+), 98 deletions(-)
> 
> Index: u-boot-main/drivers/i2c/omap24xx_i2c.c
> ===================================================================
> --- u-boot-main.orig/drivers/i2c/omap24xx_i2c.c
> +++ u-boot-main/drivers/i2c/omap24xx_i2c.c
> @@ -29,6 +29,15 @@ static void wait_for_bb (void);
>  static u16 wait_for_pin (void);
>  static void flush_fifo(void);
>  
> +static struct i2c *i2c_base = (struct i2c *)I2C_DEFAULT_BASE;
> +
> +static unsigned int bus_initialized[I2C_BUS_MAX] = {0,
> +#if I2C_BUS_MAX==3
> +						    0,
> +#endif
> +						    0};
> +static unsigned int current_bus = 0;
> +

You can save this if-def if you do not initialize.
Since this is a static, it is not necessary if initializing with 0's

<snip>
>  void i2c_init (int speed, int slaveadd)
>  {
>  	int psc, fsscll, fssclh;

> --- u-boot-main.orig/include/asm-arm/arch-omap3/i2c.h
> +++ u-boot-main/include/asm-arm/arch-omap3/i2c.h
> @@ -25,21 +25,39 @@
>  
>  #define I2C_DEFAULT_BASE	I2C_BASE1
>  
> -#define I2C_REV		(I2C_DEFAULT_BASE + 0x00)
> -#define I2C_IE 		(I2C_DEFAULT_BASE + 0x04)
> -#define I2C_STAT	(I2C_DEFAULT_BASE + 0x08)
> -#define I2C_IV 		(I2C_DEFAULT_BASE + 0x0c)
> -#define I2C_BUF		(I2C_DEFAULT_BASE + 0x14)
> -#define I2C_CNT		(I2C_DEFAULT_BASE + 0x18)
> -#define I2C_DATA	(I2C_DEFAULT_BASE + 0x1c)
> -#define I2C_SYSC	(I2C_DEFAULT_BASE + 0x20)
> -#define I2C_CON		(I2C_DEFAULT_BASE + 0x24)
> -#define I2C_OA 		(I2C_DEFAULT_BASE + 0x28)
> -#define I2C_SA 		(I2C_DEFAULT_BASE + 0x2c)
> -#define I2C_PSC		(I2C_DEFAULT_BASE + 0x30)
> -#define I2C_SCLL	(I2C_DEFAULT_BASE + 0x34)
> -#define I2C_SCLH	(I2C_DEFAULT_BASE + 0x38)
> -#define I2C_SYSTEST	(I2C_DEFAULT_BASE + 0x3c)
> +struct i2c {
> +	unsigned short rev;	/* 0x00 */
> +	unsigned short res1;
> +	unsigned short ie;	/* 0x04 */
> +	unsigned short res2;
> +	unsigned short stat;	/* 0x08 */
> +	unsigned short res3;
> +	unsigned short iv;	/* 0x0C */
> +	unsigned short res4[3];
> +	unsigned short buf;	/* 0x14 */
> +	unsigned short res5;
> +	unsigned short cnt;	/* 0x18 */
> +	unsigned short res6;
> +	unsigned short data;	/* 0x1C */
> +	unsigned short res7;
> +	unsigned short sysc;	/* 0x20 */
> +	unsigned short res8;
> +	unsigned short con;	/* 0x24 */
> +	unsigned short res9;
> +	unsigned short oa;	/* 0x28 */
> +	unsigned short res10;
> +	unsigned short sa;	/* 0x2C */
> +	unsigned short res11;
> +	unsigned short psc;	/* 0x30 */
> +	unsigned short res12;
> +	unsigned short scll;	/* 0x34 */
> +	unsigned short res13;
> +	unsigned short sclh;	/* 0x38 */
> +	unsigned short res14;
> +	unsigned short systest;	/* 0x3c */

Please add a short to the end.
So the sizeof struct i2c will be divisible by 4.

Same for omap2.

Tom

      reply	other threads:[~2009-11-02 15:50 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-01 19:50 [U-Boot] [PATCH] OMAP2/3: I2C: Add support for second and third bus Dirk Behme
2009-11-02 15:50 ` Tom [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AEEFFAC.30700@windriver.com \
    --to=tom.rix@windriver.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox