On Tue, Jan 10, 2012 at 12:14 AM, Mark Brown<broonie@opensource.wolfsonmicro.com> wrote:> On Tue, Jan 10, 2012 at 12:11:33AM +0000, dd diasemi wrote:>>> Making regulator_mode_to_status() returning an error allows to>> simplify its usage:>> ret = regulator_mode_to_status(regulator_get_mode(rdev));>> if (ret < 0)>> ret = -EIO;>> That code would definitely be less than ideal - if we got an error back> from the attempt to read the mode we ought to be returning that error> not squashing it down to a single value.

Yes, indeed.

>> If that behaviour is deliberate, I would suggest to make it explicit:>> default:>> - return 0;>> + return REGULATOR_STATUS_OFF;>> That's not the deliberate behaviour, the deliberate behaviour is to> return no mode if we didn't find one.

The behaviour is exactly the same in both cases, becauseREGULATOR_STATUS_OFF == 0.

From linux/regulator/driver.h:enum regulator_status { REGULATOR_STATUS_OFF, REGULATOR_STATUS_ON, REGULATOR_STATUS_ERROR, /* fast/normal/idle/standby are flavors of "on" */ REGULATOR_STATUS_FAST, REGULATOR_STATUS_NORMAL, REGULATOR_STATUS_IDLE, REGULATOR_STATUS_STANDBY,};So the only difference is that, the code: return 0;is not obvious but still it will be interpreted as: return REGULATOR_STATUS_OFF;by the caller of regulator_mode_to_status() when incorrect mode is passed.Is it correct way to hide this behaviour rather than to make it explicit ?

And to set things up, should regulator_get_status() return negativeerror code or REGULATOR_STATUS_OFF (0) on communication failure?--To unsubscribe from this list: send the line "unsubscribe linux-kernel" inthe body of a message to majordomo@vger.kernel.orgMore majordomo info at http://vger.kernel.org/majordomo-info.htmlPlease read the FAQ at http://www.tux.org/lkml/