[PATCH v6] I2C: add CSR SiRFprimaII on-chip I2C controllers driver

Wolfram Sang w.sang at pengutronix.de
Fri Feb 24 07:25:24 EST 2012


Barry,

On Thu, Feb 16, 2012 at 10:24:00PM +0530, Shubhrajyoti Datta wrote:

please consider these comments.

Thanks,

   Wolfram

> Hello,
> 
> On Wed, Feb 8, 2012 at 8:58 PM, Barry Song <21cnbao at gmail.com> wrote:
> > From: Zhiwu Song <Zhiwu.Song at csr.com>
> >
> > SiRFprimaII is the latest generation application processor from CSR’s
> > multi-function SoC product family.
> > The SoC support codes are in arch/arm/mach-prima2 from Linux mainline
> > 3.0.
> > There are two I2C controllers on primaII, features include:
> > * Two I2C controller modules are on chip
> > * RISC I/O bus read write register
> > * Up to 16 bytes data buffer for issuing commands and writing data
> >  at the same time
> > * Up to 16 commands, and receiving read data 16 bytes at a time
> > * Error INT report (ACK check)
> > * No-ACK bus protocols (SCCB bus protocols)
> >
> > Signed-off-by: Zhiwu Song <Zhiwu.Song at csr.com>
> > Signed-off-by: Xiangzhen Ye <Xiangzhen.Ye at csr.com>
> > Signed-off-by: Yuping Luo <Yuping.Luo at csr.com>
> > Signed-off-by: Barry Song <Baohua.Song at csr.com>
> > ---
> >  -v6:
> >  fix/cleanup lots of minor issues pointed out by wolfram;
> >  add OF property clock-frequency to support freq setting by DT;
> >  add lost devicetree binding document;
> >
> >  Documentation/devicetree/bindings/i2c/sirf-i2c.txt |   19 +
> >  drivers/i2c/busses/Kconfig                         |   10 +
> >  drivers/i2c/busses/Makefile                        |    1 +
> >  drivers/i2c/busses/i2c-sirf.c                      |  459 ++++++++++++++++++++
> >  4 files changed, 489 insertions(+), 0 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/i2c/sirf-i2c.txt
> >  create mode 100644 drivers/i2c/busses/i2c-sirf.c
> >
> > diff --git a/Documentation/devicetree/bindings/i2c/sirf-i2c.txt b/Documentation/devicetree/bindings/i2c/sirf-i2c.txt
> > new file mode 100644
> > index 0000000..7baf9e1
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/i2c/sirf-i2c.txt
> <snip>
> 
> > +
> > +               if (i2c_stat & SIRFSOC_I2C_STAT_NACK)
> > +                       dev_err(&siic->adapter.dev, "ACK not received\n");
> Could we send stop here?
> > +               else
> > +                       dev_err(&siic->adapter.dev, "I2C error\n");
> > +
> > +               complete(&siic->done);
> <Snip>
> 
> > +static int i2c_sirfsoc_resume(struct device *dev)
> > +{
> > +       struct platform_device *pdev = to_platform_device(dev);
> > +       struct i2c_adapter *adapter = platform_get_drvdata(pdev);
> > +       struct sirfsoc_i2c *siic = adapter->algo_data;
> > +
> > +       clk_enable(siic->clk);
> > +       writel(SIRFSOC_I2C_RESET, siic->base + SIRFSOC_I2C_CTRL);
> Could you explain why is a reset needed.
> Or am I missing something.
> 
> > +       writel(SIRFSOC_I2C_CORE_EN | SIRFSOC_I2C_MASTER_MODE,
> > +               siic->base + SIRFSOC_I2C_CTRL);
> > +       writel(siic->clk_div, siic->base + SIRFSOC_I2C_CLK_CTRL);
> > +       writel(siic->sda_delay, siic->base + SIRFSOC_I2C_SDA_DELAY);
> > +       clk_disable(siic->clk);
> > +       return 0;
> > +}
> > +
> > +static const struct dev_pm_ops i2c_sirfsoc_pm_ops = {
> > +       .suspend = i2c_sirfsoc_suspend,
> > +       .resume = i2c_sirfsoc_resume,
> Could we use simple dev_pm ops here?
> 
> > +};
> > +#endif
> > +
> > +static const struct of_device_id sirfsoc_i2c_of_match[] __devinitconst = {
> > +       { .compatible = "sirf,prima2-i2c", },
> --
> To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120224/608230f5/attachment.sig>


More information about the linux-arm-kernel mailing list