On Wed, Aug 12, 2015 at 12:12:34PM +0200, Markus Pargmann wrote: > @@ -1229,6 +1229,11 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg, > } > } > > + if (!map->bus->write && val_len == map->format.val_bytes) { > + ret = _regmap_bus_reg_write(map, reg, *(unsigned int *)val); > + return ret; > + } This is broken - you can't use a raw value as a register value. The endianness of the device may not be the same as the endianness of the system and you can't cast a value to unsigned int, the value may be of any size. > @@ -1340,7 +1345,7 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg, > * send the work_buf directly, otherwise try to do a gather > * write. > */ > - if (val == work_val) { > + if (val == work_val && map->bus->write) { > ret = map->bus->write(map->bus_context, map->work_buf, > map->format.reg_bytes + > map->format.pad_bytes + This appears to be another case of merging an unrelated change :(
Attachment:
signature.asc
Description: Digital signature