Re: [PATCH 1/4] regulator: tps65910: update type for regmap

From: Mark Brown
Date: Wed Apr 18 2012 - 05:25:51 EST

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