linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
To: Laxman Dewangan <ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	lrg-l0cyMroinI0@public.gmane.org,
	jedu-kDsPt+C1G03kYMGBc/C6ZA@public.gmane.org,
	gg-kDsPt+C1G03kYMGBc/C6ZA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH V1 1/2] mfd: tps65910: use regmap for device register access.
Date: Wed, 8 Feb 2012 11:41:20 +0000	[thread overview]
Message-ID: <20120208114120.GF3120@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <1328697985-22504-1-git-send-email-ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 1618 bytes --]

On Wed, Feb 08, 2012 at 04:16:24PM +0530, Laxman Dewangan wrote:

> +static bool is_volatile_reg(struct device *dev, unsigned int reg)
> +{
> +	struct tps65910 *tps65910 = dev_get_drvdata(dev);
> +	return test_bit(reg, tps65910->cache_reg) ? false : true;
> +}

This is *really* odd.  Why is this not static data (or mostly static
data), why does it vary at runtime?

> +static bool regmap_volatile_range(struct tps65910 *tps65910,
> +			unsigned int reg, unsigned int bytes)
> +{
> +	unsigned int i;
> +	for (i = 0; i < bytes; i++)
> +		if (!is_volatile_reg(tps65910->dev, reg + i))
> +			return false;
> +	return true;
> +}

I don't think this should be here (the naming is a bit of a clue - it's
named like a core function), see below where you're using it...

> +	unsigned char *wbuf = src;
> +	unsigned int ival;
> +
> +	if (regmap_volatile_range(tps65910, reg, bytes))
> +		return regmap_raw_write(tps65910->regmap, reg, src, bytes);
> +
> +	/* If any of register is non-volatile then use byte-wise transfer */
> +	for (i = 0; i < bytes; ++i) {
> +		ival = (unsigned int) (*wbuf++);
> +		ret = regmap_write(tps65910->regmap, reg, ival);
> +		if (ret < 0)
> +			return ret;
> +	}

There's nothing specific to the driver about this, if this is a good
idea add support for it to the core.

> +void tps65910_enable_reg_cache(struct tps65910 *tps65910, int reg)
> +{
> +	set_bit(reg, tps65910->cache_reg);
> +}
> +EXPORT_SYMBOL_GPL(tps65910_enable_reg_cache);

Why are you doing this?  This looks very icky, and if it is needed there
needs to be more code here to make sure the register cache and device
are in sync.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  parent reply	other threads:[~2012-02-08 11:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-08 10:46 [PATCH V1 1/2] mfd: tps65910: use regmap for device register access Laxman Dewangan
     [not found] ` <1328697985-22504-1-git-send-email-ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-02-08 10:46   ` [PATCH V1 2/2] regulator: tps65910: Enable register caching of voltage controls Laxman Dewangan
2012-02-08 11:41   ` Mark Brown [this message]
     [not found]     ` <20120208114120.GF3120-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-02-08 12:15       ` [PATCH V1 1/2] mfd: tps65910: use regmap for device register access Laxman Dewangan
2012-02-08 13:07         ` Mark Brown
     [not found]           ` <20120208130726.GB5943-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-02-08 13:34             ` Laxman Dewangan
     [not found]               ` <4F3279D6.4000009-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-02-08 13:58                 ` Mark Brown
2012-02-09  5:03                   ` Laxman Dewangan
     [not found]                     ` <4F335385.5040400-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-02-09 11:55                       ` Mark Brown
     [not found]                         ` <20120209115502.GD3058-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-02-09 11:59                           ` Laxman Dewangan
     [not found]                             ` <4F33B52A.5020900-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-02-09 12:03                               ` Mark Brown
     [not found]                                 ` <20120209120312.GE3058-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-02-09 12:09                                   ` Laxman Dewangan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120208114120.GF3120@opensource.wolfsonmicro.com \
    --to=broonie-yzvpicuk2aatku/dhu1wvuem+bqzidxxqq4iyu8u01e@public.gmane.org \
    --cc=gg-kDsPt+C1G03kYMGBc/C6ZA@public.gmane.org \
    --cc=jedu-kDsPt+C1G03kYMGBc/C6ZA@public.gmane.org \
    --cc=ldewangan-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lrg-l0cyMroinI0@public.gmane.org \
    --cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).