Messages in this thread | | | Date | Fri, 18 Apr 2014 18:57:00 -0700 | From | Guenter Roeck <> | Subject | Re: [PATCH v3] regmap: i2c: fallback to SMBus if the adapter does not support standard I2C |
| |
On 04/18/2014 01:11 PM, Boris BREZILLON wrote: > Some I2C adapters are only compatible with the SMBus protocol and do not > support standard I2C transfers. > > Fallback to SMBus transfers if we encounter such kind of adapters. > The transfer type is chosen according to the val_bits field in the regmap > config. > > Signed-off-by: Boris BREZILLON <boris.brezillon@free-electrons.com> > ---
[ ... ]
> /** > * regmap_init_i2c(): Initialise register map > * > @@ -109,7 +199,12 @@ static struct regmap_bus regmap_i2c = { > struct regmap *regmap_init_i2c(struct i2c_client *i2c, > const struct regmap_config *config) > { > - return regmap_init(&i2c->dev, ®map_i2c, &i2c->dev, config); > + const struct regmap_bus *bus = regmap_get_i2c_bus(i2c, config); > + > + if (IS_ERR(bus)) > + return ERR_PTR(PTR_ERR(bus)); > + This seems clumsy. You should be able to use ERR_CAST() instead. Also see Documentation/coccinelle.txt and scripts/coccinelle/api/err_cast.cocci.
> + return regmap_init(&i2c->dev, bus, &i2c->dev, config); > } > EXPORT_SYMBOL_GPL(regmap_init_i2c); > > @@ -126,7 +221,12 @@ EXPORT_SYMBOL_GPL(regmap_init_i2c); > struct regmap *devm_regmap_init_i2c(struct i2c_client *i2c, > const struct regmap_config *config) > { > - return devm_regmap_init(&i2c->dev, ®map_i2c, &i2c->dev, config); > + const struct regmap_bus *bus = regmap_get_i2c_bus(i2c, config); > + > + if (IS_ERR(bus)) > + return ERR_PTR(PTR_ERR(bus)); > + Same here.
Guenter
| |