Subject: [PATCH v2 2/2] regmap: i2c: fallback to SMBus if the adapter does not support standard I2C

From: [email-masked] (Lars-Peter Clausen)
Date: Fri, 18 Apr 2014 19:08:10 +0200

> +const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c,
> +					    const struct regmap_config *config)
> +{
> +	if (i2c_check_functionality(i2c->adapter, I2C_FUNC_I2C))
> +		return &regmap_i2c;
> +	else if (config->val_bits == 16 &&
> +		 i2c_check_functionality(i2c->adapter,
> +					 I2C_FUNC_SMBUS_WORD_DATA))
> +		return &regmap_smbus_word;
> +	else if (config->val_bits == 8 &&
> +		 i2c_check_functionality(i2c->adapter,
> +					 I2C_FUNC_SMBUS_BYTE_DATA))
> +		return &regmap_smbus_byte;

The fallback code should also check that reg_bits is 8.

> +
> +	return ERR_PTR(-ENOTSUPP);
> +}
> +