lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20121027215850.GI4564@opensource.wolfsonmicro.com>
Date:	Sat, 27 Oct 2012 22:59:14 +0100
From:	Mark Brown <broonie@...nsource.wolfsonmicro.com>
To:	Ashish Jangam <ashish.jangam@...tcummins.com>
Cc:	Liam Girdwood <lrg@...com>, Samuel Ortiz <sameo@...ux.intel.com>,
	David Dajun Chen <dchen@...semi.com>,
	linux-kernel@...r.kernel.org
Subject: Re: [Patch v3 2/7] Regulator: DA9055 Regulator driver

On Thu, Oct 11, 2012 at 03:39:24PM +0530, Ashish Jangam wrote:

> This is the Regulator patch for the DA9055 PMIC and has got dependency on
> the DA9055 MFD core.

Always submit patches with subject lines appropriate for the subsystem,
this helps get your patch noticed.  People do things like search their
mailboxes for subsystem prefixes when looking for things they need to
review.

> This patch support all of the DA9055 regulators. The output voltages are
> fully programmable through I2C interface only. The platform data with regulation
> constraints is passed down from the board to the regulator.
> 
> +	switch (mode) {
> +	case REGULATOR_MODE_FAST:
> +		val = DA9055_BUCK_MODE_SYNC << info->mode.shift;
> +		break;
> +	case REGULATOR_MODE_NORMAL:
> +		val = DA9055_BUCK_MODE_AUTO << info->mode.shift;
> +		break;
> +	case REGULATOR_MODE_IDLE:
> +	case REGULATOR_MODE_STANDBY:
> +		val = DA9055_BUCK_MODE_SLEEP << info->mode.shift;
> +		break;

_IDLE and _STANDBY should have different effects if they're both
implemented; pick one.  From the rest of the code it looks like it
should be _STANDBY.

> +	switch (mode) {
> +	case REGULATOR_MODE_NORMAL:
> +	case REGULATOR_MODE_FAST:
> +		val = DA9055_LDO_MODE_SYNC;
> +		break;
> +	case REGULATOR_MODE_IDLE:
> +	case REGULATOR_MODE_STANDBY:
> +		val = DA9055_LDO_MODE_SLEEP;
> +	}

Similarly here.  You're also missing a break;

> +	/* Get the voltage for the activer register set A/B */
> +	if (ret == DA9055_REGUALTOR_SET_A)
> +		ret = da9055_reg_read(regulator->da9055, volt.reg_a);
> +	else
> +		ret = da9055_reg_read(regulator->da9055, volt.reg_b);
> +
> +	if (ret < 0)
> +		return ret;
> +
> +	sel = ((ret & volt.v_mask) - volt.v_offset);

Why not just use the register values directly and refuse to write ones
That are too low?  This would simplify things a little as you'd only
need to check 

> +	/* Set the voltage */
> +	if (ret == DA9055_REGUALTOR_SET_A)
> +		return da9055_regulator_set_voltage_bits(rdev, info->volt.reg_a,
> +							 selector);
> +
> +	return da9055_regulator_set_voltage_bits(rdev, info->volt.reg_b,
> +						 selector);

This is confusingly written - it should be either a switch or an if/else
really.

> +	/* Select register set B for suspend voltage ramping. */
> +	ret = da9055_reg_update(regulator->da9055, info->conf.reg,
> +				info->conf.sel_mask, DA9055_SEL_REG_B);
> +	if (ret < 0)
> +		return ret;

This doesn't seem like it plays nicely with the GPIO selection in normal
set_voltage() - does it need to check to see if register set B might be
used in normal operation and refuse to run if it could?

> +	for (i = 0; i < ARRAY_SIZE(da9055_regulator_info); i++) {
> +		info = &da9055_regulator_info[i];
> +		if (info->reg_desc.id == id)
> +			return info;
> +		}
> +

The indentation here is *very* messed up.  I'd suggest not omitting any
braces.

Download attachment "signature.asc" of type "application/pgp-signature" (837 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ