On Tue, Sep 16, 2014 at 02:20:58PM +0800, Carl Peng wrote: > AMD i2c bus controller is ACPI device, its ACPI ID > is "AMD0010". This patch is used to add support for > AMD i2c bus controller in the Designware platform > driver. This is looking better now. I still have few comments, though. > > Signed-off-by: Carl Peng <carlpeng008@xxxxxxxxx> > Cc: Huang Rui <ray.huang@xxxxxxx> > --- > drivers/i2c/busses/i2c-designware-core.h | 1 + > drivers/i2c/busses/i2c-designware-platdrv.c | 46 +++++++++++++++++++++++++---- > 2 files changed, 41 insertions(+), 6 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h > index d66b6cb..c67d4ac 100644 > --- a/drivers/i2c/busses/i2c-designware-core.h > +++ b/drivers/i2c/busses/i2c-designware-core.h > @@ -105,6 +105,7 @@ struct dw_i2c_dev { > u16 ss_lcnt; > u16 fs_hcnt; > u16 fs_lcnt; > + struct dw_i2c_pdata *pdata; You don't need this. > }; > > #define ACCESS_SWAP 0x00000001 > diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c > index bc87733..8a96e69 100644 > --- a/drivers/i2c/busses/i2c-designware-platdrv.c > +++ b/drivers/i2c/busses/i2c-designware-platdrv.c > @@ -43,15 +43,31 @@ > #include <linux/acpi.h> > #include "i2c-designware-core.h" > > +#define AMD_CLK_KHZ (133 * 1000) Do you really need define for this? > + > +struct dw_i2c_pdata { > + u32 clk_rate_khz; > +}; Call it dw_i2c_config instead. > + > static struct i2c_algorithm i2c_dw_algo = { > .master_xfer = i2c_dw_xfer, > .functionality = i2c_dw_func, > }; > + > +static struct dw_i2c_pdata amd_i2c_config = { > + .clk_rate_khz = AMD_CLK_KHZ, > +}; > + > static u32 i2c_dw_get_clk_rate_khz(struct dw_i2c_dev *dev) > { > return clk_get_rate(dev->clk)/1000; How about doing this instead? const struct dw_i2c_config *conf = i2c_dw_get_config(dev); if (conf) return conf->clk_rate_khz; return clk_get_rate(dev->clk)/1000; And then just implement i2c_dw_get_config() that understands to look clk_rate from acpi_device_id. > } > > +static u32 amd_i2c_dw_get_clk_rate_khz(struct dw_i2c_dev *dev) Please don't call it amd_xxx because if now some other vendor decides that their version of dw ip runs at 120MHz we would need to rename this. > +{ > + return dev->pdata->clk_rate_khz; > +} > + -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html