[U-Boot] [PATCH 05/15] iMX28: Add I2C bus driver

Marek Vasut marek.vasut at gmail.com
Tue Sep 13 15:20:26 CEST 2011


On Tuesday, September 13, 2011 03:12:40 PM Wolfram Sang wrote:
> > > > diff --git a/drivers/i2c/mxs_i2c.c b/drivers/i2c/mxs_i2c.c
> > > > new file mode 100644
> > > > index 0000000..9f380a0
> > > > --- /dev/null
> > > > +++ b/drivers/i2c/mxs_i2c.c
> > > > @@ -0,0 +1,240 @@
> > > > +/*
> > > > + * Freescale i.MX28 I2C Driver
> > > > + *
> > > > + * Copyright (C) 2011 Marek Vasut <marek.vasut at gmail.com>
> > > > + * on behalf of DENX Software Engineering GmbH
> > > 
> > > Do you mind adding the copyrights from the kernel driver here? It looks
> > > quite inspired to me, even if you didn't like some of the variable
> > > names and defines :)
> > 
> > Bits are from the STMP3xxx driver, not much though.
> 
> Could you point me to that driver? Maybe it needs fixing as well,
> because that pattern for example:
> 
> +       off = i;
> +       for (; i < off + blen; i++) {
> +               data >>= 8;
> +               data |= buf[i - off] << 24;
> +               if ((i & 3) == 2)
> +                       writel(data, &i2c_regs->hw_i2c_data);
> +       }
> +
> +       remain = 24 - ((i & 3) * 8);
> +       if (remain)
> +               writel(data >> remain, &i2c_regs->hw_i2c_data);
> 
> is highly similar to my reimplementation of the "let's feed the buffer
> code" in the kernel (to name one example). Check current linus-git:
> 
>         for (i = 0; i < len; i++) {
>                 data >>= 8;
>                 data |= buf[i] << 24;
>                 if ((i & 3) == 2)
>                         writel(data, i2c->regs + MXS_I2C_DATA);
>         }
> 
>         /* Write out the remaining bytes if any */
>         shifts_left = 24 - (i & 3) * 8;
>         if (shifts_left)
>                 writel(data >> shifts_left, i2c->regs + MXS_I2C_DATA);
> 
> I'd be very surprised if two programmers would come up with two routines
> that equal?

Oh I2C, not SPI. Sorry.

Will add Based on line, cheers!

> 
> Regards,
> 
>    Wolfram


More information about the U-Boot mailing list