linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Dimitris Papastamos <dp@opensource.wolfsonmicro.com>,
	Jonathan Cameron <jic23@kernel.org>
Cc: Michael Hennerich <michael.hennerich@analog.com>,
	<linux-kernel@vger.kernel.org>, <linux-iio@vger.kernel.org>,
	<device-drivers-devel@blackfin.uclinux.org>, <drivers@analog.com>,
	Lars-Peter Clausen <lars@metafoo.de>
Subject: [PATCH 3/7] regmap: Properly round cache_word_size
Date: Wed, 16 Nov 2011 16:28:18 +0100	[thread overview]
Message-ID: <1321457302-8724-3-git-send-email-lars@metafoo.de> (raw)
In-Reply-To: <1321457302-8724-1-git-send-email-lars@metafoo.de>

regcache currently only properly works with val sizes of 8 or 16. For all other
val sizes it will round them down to the next multiple of 8, which will cause
the cache to be too small. This patch fixes it by rounding the cache_word_size
up to the nearest storage size.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/base/regmap/regcache.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index d687df6..6f0dbc0 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -111,8 +111,15 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
 	map->num_reg_defaults = config->num_reg_defaults;
 	map->num_reg_defaults_raw = config->num_reg_defaults_raw;
 	map->reg_defaults_raw = config->reg_defaults_raw;
-	map->cache_size_raw = (config->val_bits / 8) * config->num_reg_defaults_raw;
-	map->cache_word_size = config->val_bits / 8;
+
+	if (config->val_bits <= 8)
+		map->cache_word_size = 1;
+	else if (config->val_bits <= 16)
+		map->cache_word_size = 2;
+	else
+		return -EINVAL;
+
+	map->cache_size_raw = map->cache_word_size * config->num_reg_defaults_raw;
 
 	map->cache = NULL;
 	map->cache_ops = cache_types[i];
-- 
1.7.7.1



  parent reply	other threads:[~2011-11-16 15:29 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-16 15:28 [PATCH 1/7] regmap: Move initialization of regcache related fields to regcache_init Lars-Peter Clausen
2011-11-16 15:28 ` [PATCH 2/7] regmap: Make reg_config reg_defaults const Lars-Peter Clausen
2011-11-16 16:13   ` Mark Brown
2011-11-16 16:23     ` Lars-Peter Clausen
2011-11-16 16:24       ` Mark Brown
2011-11-16 16:36         ` Lars-Peter Clausen
2011-11-16 16:39           ` Mark Brown
2011-11-16 16:50             ` Lars-Peter Clausen
2011-11-16 16:51               ` Mark Brown
2011-11-16 17:01                 ` Lars-Peter Clausen
2011-11-16 17:09                   ` Mark Brown
2011-11-16 17:20                     ` Lars-Peter Clausen
2011-11-16 17:26                       ` Mark Brown
2011-11-16 17:35   ` Mark Brown
2011-11-16 15:28 ` Lars-Peter Clausen [this message]
2011-11-16 16:14   ` [PATCH 3/7] regmap: Properly round cache_word_size Mark Brown
2011-11-16 16:25     ` Lars-Peter Clausen
2011-11-16 15:28 ` [PATCH 4/7] regmap: Try cached read before checking if a hardware read is possible Lars-Peter Clausen
2011-11-16 17:35   ` Mark Brown
2011-11-16 15:28 ` [PATCH 5/7] regmap: Check if a register is writable instead of readable in regcache_read Lars-Peter Clausen
2011-11-16 16:16   ` Mark Brown
2011-11-16 16:34     ` Lars-Peter Clausen
2011-11-16 16:38       ` Mark Brown
2011-11-16 16:52         ` Lars-Peter Clausen
2011-11-16 16:56           ` Mark Brown
2011-11-16 17:09             ` Lars-Peter Clausen
2011-11-16 17:12               ` Mark Brown
2011-11-16 17:15                 ` Lars-Peter Clausen
2011-11-16 17:22                   ` Mark Brown
2011-11-16 15:28 ` [PATCH 6/7] regmap: Add support for 10/14 register formating Lars-Peter Clausen
2011-11-16 17:37   ` Mark Brown
2011-11-16 15:28 ` [PATCH 7/7] staging:iio:dac: Add AD5380 driver Lars-Peter Clausen
2011-11-16 16:56   ` Lars-Peter Clausen
2011-11-17 20:24   ` Jonathan Cameron
2011-11-18  9:08     ` Lars-Peter Clausen
2011-11-18  9:51       ` J.I. Cameron
2011-11-16 17:35 ` [PATCH 1/7] regmap: Move initialization of regcache related fields to regcache_init Mark Brown

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=1321457302-8724-3-git-send-email-lars@metafoo.de \
    --to=lars@metafoo.de \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=device-drivers-devel@blackfin.uclinux.org \
    --cc=dp@opensource.wolfsonmicro.com \
    --cc=drivers@analog.com \
    --cc=jic23@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.hennerich@analog.com \
    /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).