All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: linux-kernel@vger.kernel.org,
	Dimitris Papastamos <dp@opensource.wolfsonmicro.com>,
	Samuel Ortiz <sameo@linux.intel.com>, Liam Girdwood <lrg@ti.com>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Graeme Gregory <gg@slimlogic.co.uk>
Subject: Re: [PATCH 1/8] regmap: Add generic non-memory mapped register access API
Date: Fri, 01 Jul 2011 01:22:41 +0100	[thread overview]
Message-ID: <1309479761.3093.1659.camel@localhost> (raw)
In-Reply-To: <1308768353-19372-1-git-send-email-broonie@opensource.wolfsonmicro.com>

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

On Wed, 2011-06-22 at 19:45 +0100, Mark Brown wrote:
[...]
> --- /dev/null
> +++ b/drivers/regmap/regmap.c
[...]
> +static void regmap_format_4_12_write(struct regmap *map,
> +				     unsigned int reg, unsigned int val)
> +{
> +	u16 *out = map->work_buf;

__be16 *out

> +	*out = cpu_to_be16((reg << 12) | val);
> +}
> +
> +static void regmap_format_7_9_write(struct regmap *map,
> +				    unsigned int reg, unsigned int val)
> +{
> +	u16 *out = map->work_buf;

__be16 *out

> +	*out = cpu_to_be16((reg << 9) | val);
> +}
> +
> +static void regmap_format_8(void *buf, unsigned int val)
> +{
> +	u8 *b = buf;
> +
> +	b[0] = val;
> +}
> +
> +static void regmap_format_16(void *buf, unsigned int val)
> +{
> +	u16 *b = buf;

__be16 *b

> +	b[0] = cpu_to_be16(val);
> +}
> +
> +static unsigned int regmap_parse_8(void *buf)
> +{
> +	u8 *b = buf;
> +
> +	return b[0];
> +}
> +
> +static unsigned int regmap_parse_16(void *buf)
> +{
> +	u16 *b = buf;

__be16 *b

> +	b[0] = be16_to_cpu(b[0]);
> +
> +	return b[0];

The assignment doesn't seem to be necessary and will irritate sparse,
so:

	return be16_to_cpu(b[0]);

> +}
> +
> +/**
> + * remap_init: Initialise register map

Missing 'g' in 'regmap_init'.  And the first line's format must be:

   regmap_init() - Initialise register map

(The other functions all have this problem as well.)

> + * dev: Device that will be interacted with
> + * config: Configuration for register map

Missing '@' before the parameter names.

[...]
> +static int _regmap_raw_write(struct regmap *map, unsigned int reg,
> +			     const void *val, size_t val_len)
> +{
> +	void *buf;
> +	int ret = -ENOTSUPP;
> +	size_t len;
> +
> +	map->format.format_reg(map->work_buf, reg);
> +
> +	/* Try to do a gather write if we can */
> +	if (map->bus->gather_write)
> +		ret = map->bus->gather_write(map->dev, map->work_buf,
> +					     map->format.reg_bytes,
> +					     val, val_len);
> +
> +	/* Otherwise fall back on linearising by hand. */
> +	if (ret == -ENOTSUPP) {
> +		len = map->format.reg_bytes + val_len;
> +		buf = kmalloc(len, GFP_KERNEL);
> +		if (!buf)
> +			return -ENOMEM;
> +		memcpy(buf, map->work_buf, map->format.reg_bytes);
> +		memcpy(buf + map->format.reg_bytes, val, val_len);
[...]

If I understand correctly, this is usually called by _regmap_write() and
val is already at the appropriate offset in work_buf.  Is it not worth
avoiding the allocation in that case?

General comments:

- All the functions must be called in process context, but this isn't
documented.
- I think this could go in lib or drivers/base rather than in a new
directory.  The specific support for I2C and SPI would go in their
existing directories.

Ben.

-- 
Ben Hutchings
If the facts do not conform to your theory, they must be disposed of.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

  parent reply	other threads:[~2011-07-01  0:22 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-22 18:44 [PATCH 0/8] Generic I2C and SPI register map library Mark Brown
2011-06-22 18:45 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
2011-06-22 18:45   ` [PATCH 2/8] regmap: Add I2C bus support Mark Brown
2011-06-22 18:45   ` [PATCH 3/8] regmap: Add SPI " Mark Brown
2011-06-22 18:45   ` [PATCH 4/8] ASoC: Use new register map API for ASoC generic physical I/O Mark Brown
2011-06-22 18:45   ` [PATCH 5/8] mfd: Convert WM831x to use regmap API Mark Brown
2011-06-22 18:45   ` [PATCH 6/8] mfd: Convert WM8994 to use new register map API Mark Brown
2011-06-22 18:45   ` [PATCH 7/8] mfd: Convert pcf50633 " Mark Brown
2011-06-22 18:45   ` [PATCH 8/8] regulator: Convert tps65023 to use regmap API Mark Brown
2011-06-22 19:03   ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Lars-Peter Clausen
2011-06-22 19:11     ` Mark Brown
2011-06-22 19:20       ` Lars-Peter Clausen
2011-06-22 19:42         ` Mark Brown
2011-07-01  0:22   ` Ben Hutchings [this message]
2011-07-01  2:38     ` Mark Brown
2011-06-22 22:48 ` [PATCH 0/8] Generic I2C and SPI register map library torbenh
2011-06-23  1:25   ` Mark Brown
2011-06-23  8:54     ` Jonathan Cameron
2011-06-23 10:44       ` Mark Brown
  -- strict thread matches above, loose matches on Subject: below --
2011-06-30  5:58 [PATCH 0/8] regmap: " Mark Brown
2011-06-30  6:00 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
2011-06-20 12:46 [PATCH 0/8] Generic I2C and SPI register map library Mark Brown
2011-06-20 12:54 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
2011-06-20 23:15   ` Lars-Peter Clausen
2011-06-21  0:14     ` Mark Brown
2011-06-21  0:45       ` Lars-Peter Clausen
2011-06-21  1:24         ` Mark Brown
2011-06-21 11:47           ` Dimitris Papastamos
2011-06-21 12:07             ` Mark Brown
2011-06-21 11:43   ` Dimitris Papastamos
2011-06-21 12:07     ` 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=1309479761.3093.1659.camel@localhost \
    --to=ben@decadent.org.uk \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=dp@opensource.wolfsonmicro.com \
    --cc=gg@slimlogic.co.uk \
    --cc=lars@metafoo.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lrg@ti.com \
    --cc=sameo@linux.intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.