|
From: Manuel L. <ma...@ro...> - 2007-11-05 17:17:33
|
Hi Paul,
On Tue, Oct 30, 2007 at 09:27:17AM +0900, Paul Mundt wrote:
> Basically this looks good to me, though a few minor nits:
>
> On Thu, Oct 25, 2007 at 08:23:27PM +0200, Manuel Lauss wrote:
> > +struct cami2c {
> > + void __iomem *iobase; /* channel base address */
> > + struct i2c_adapter adap;
> > + u32 func; /* supported functions */
> > + int irq; /* IRQ vector */
> > + int chan; /* channel number (0 or 1) */
> > +
> chan should be a bitfield? Or dynamically calculated based on the number
> of registered platform devices?
It's useless junk now. Removed.
> > +/* calculate CCR register setting for a desired scl clock */
> > +static int __devinit calc_CCR(unsigned long scl_freq)
> > +{
> > + struct clk *mclk;
> > + unsigned long mck, m1, dff, odff, iclk;
> > + signed char cdf, cdfm = 0;
> > + int scgd, scgdm;
> > +
> > + mclk = clk_get(NULL, "module_clk");
> > + if (!mclk) {
> > + mck = CONFIG_SH_PCLK_FREQ;
>
> If the module_clk isn't valid, the system is going to be in bad enough
> shape as it is. You should error out on this rather than using
> SH_PCLK_FREQ directly. ie,
>
> if (IS_ERR(mclk))
> return PTR_ERR(mclk);
done.
> > + id->iobase = (void __iomem *)res->start;
>
> You should be ioremap()'ing or ioport_map()'ing this. Either one should
> be sane here. Presently this will whine if you use 64-bit resources. The
> existing in-tree users that do this casting need to be changed also.
Hm, who'd want to enable 64bit resources on a CPU with a 29bit external
address space? ;)
Added ioremap() for good measure.
> > +out2: free_irq(id->irq, (void *)id);
>
> Useless cast.
Gone.
> > +static int __devexit sh7760_i2c_remove(struct platform_device *pdev)
> > +{
> > + struct cami2c *id = platform_get_drvdata(pdev);
> > +
> > + if (id) {
> > + i2c_del_adapter(&id->adap);
> > + free_irq(id->irq, (void *)id);
>
> Likewise.
Gone too.
Thank you!
Manuel Lauss
|