On Tue, Apr 17, 2012 at 06:00:26PM -0700, Rhyland Klein wrote: > When accessing the regmap via the read/write functions, we need to use a > unsigned int * instead of a u8 * otherwise corruption will occur. > > Signed-off-by: Rhyland Klein <rklein@xxxxxxxxxx> > static inline int tps65910_read(struct tps65910_reg *pmic, u8 reg) > { > - u8 val; > + unsigned int val; > int err; > > err = pmic->mfd->read(pmic->mfd, reg, 1, &val); Ugh, this interface is just broken all round - there's absolutely no type safety here and all users of these functions will be broken (a similar issue applies on write). It's much better to fix this for 3.4 by converting the core code to use regmap_raw_ functions which take native formatted data for the device like the function driver API actually expects. Looking at the MFD code the fix for 3.5 should at the very least involve making the functions take typed pointers, though given the way they're implemented right now with direct references in the subdevices I'd also consider just having the subdevices uses regmap directly as the wrappers are just adding an opportunity for error (the bit operations could be converted into static inlines in the header too).
Attachment:
signature.asc
Description: Digital signature