From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Ben Hutchings <ben@decadent.org.uk>
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: Thu, 30 Jun 2011 19:38:49 -0700 [thread overview]
Message-ID: <20110701023848.GA7540@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <1309479761.3093.1659.camel@localhost>
On Fri, Jul 01, 2011 at 01:22:41AM +0100, Ben Hutchings wrote:
> On Wed, 2011-06-22 at 19:45 +0100, Mark Brown wrote:
> > + 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]);
sparse is silent on whatever the issue is here and the assignment is
used (we both modify the buffer in place and return the result of the
conversion to make life more convenient for users). Which isn't
urgently tasteful but felt less tasteless than anything else I thought
of. Data manging doesn't lend itself to elegance.
> > + * dev: Device that will be interacted with
> > + * config: Configuration for register map
> Missing '@' before the parameter names.
You're looking at an old version of the code.
> > + /* 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?
It's marginal, and given that it's vanishingly rare to hit this case
(essentially all the interesting controllers for this API can do the
gather write) I didn't feel it was worth it for a first pass. We can
always do the optimization later if someone finds it important. I
suspect any controller that hits the issue is going to be slow enough to
dwarf the cost of the allocation with the I/O cost.
> General comments:
> - All the functions must be called in process context, but this isn't
> documented.
This should be obvious, none of the relevant buses can be interacted
with in anything other than process context anyway as they need to
sleep.
> - 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.
lib feels wrong, it's going to be peering into the drivers directory too
much.
drivers/base is a good point, but then the code will grow quite a bit
once we start layering cache support on top of it and until the code
settles down I don't really want to have to deal with cross tree issues
if we decide we need to update the interface to the bus code, that's
definitely a first pass thing right now. The latter is the main thing
that made me do things this way rather than pushing things into the
buses, it's definitely not the finished product right now internally -
the client API should be reasonably stable so not have these issues.
My inclination is to start off isolating the code until we've reached
the point where things are more static. I suppose we could put it in a
subdirectory of drivers/base in the meantime, though. Will have a think
for the next repost.
Fixed everything else, thanks.
next prev parent reply other threads:[~2011-07-01 2:38 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
2011-07-01 2:38 ` Mark Brown [this message]
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=20110701023848.GA7540@opensource.wolfsonmicro.com \
--to=broonie@opensource.wolfsonmicro.com \
--cc=ben@decadent.org.uk \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox