Re: [PATCH v3 1/2] MFD: MAX77693: add MAX77693 MFD driver

From: Mark Brown
Date: Mon May 14 2012 - 05:19:30 EST


On Mon, May 14, 2012 at 02:20:30PM +0900, Chanwoo Choi wrote:

> Signef-off-by: Chanwoo Choi <cw00.choi@xxxxxxxxxxx>

Typo :)

> +int max77693_read_reg(struct regmap *map, u8 reg, u8 *dest)
> +{
> + unsigned int val;
> + int ret;
> +
> + ret = regmap_read(map, reg, &val);
> + val &= 0xff;
> + *dest = val;

Should be no need for the val &= 0xff - if there is there's a bug we
ought to fix in regmap.

> +int max77693_update_reg(struct regmap *map, u8 reg, u8 val, u8 mask)
> +{
> + unsigned int old_val, new_val;
> + int ret;
> +
> + ret = regmap_read(map, reg, &old_val);
> + old_val &= 0xff;
> + new_val = (val & mask) | (old_val & (~mask));
> + ret = regmap_write(map, reg, new_val);

This should be using regmap_update_bits(), the current code is buggy as
it does not lock which means that multiple simultaneous updaters could
conflict with each other.

> +static struct regmap_config max77693_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,

Defining max_register would let you see the register map in debugfs but
this is optional.

> + max77693->regmap = regmap_init_i2c(i2c, &max77693_regmap_config);
> + if (IS_ERR(max77693->regmap)) {

devm_regmap_init_i2c().

Attachment: signature.asc
Description: Digital signature