From: David Brownell <david-b@pacbell.net>
To: Mark Brown <broonie@sirena.org.uk>
Cc: Liam Girdwood <lrg@slimlogic.co.uk>,
lkml <linux-kernel@vger.kernel.org>,
OMAP <linux-omap@vger.kernel.org>
Subject: Re: [patch 2.6.29-rc7 regulator-next] regulator: refcount fixes
Date: Sat, 14 Mar 2009 14:29:24 -0700 [thread overview]
Message-ID: <200903141429.24534.david-b@pacbell.net> (raw)
In-Reply-To: <20090313013813.GK24376@sirena.org.uk>
On Thursday 12 March 2009, Mark Brown wrote:
> On Thu, Mar 12, 2009 at 03:02:55PM -0800, David Brownell wrote:
>
> > One could as easily have "handle" and "regulator" be the
> > same ... so the get/put idioms could work like they do
> > elsewhere in the kernel.
>
> I really don't see that there is any meaningful difference here; from
> the point of view of the consumer the fact that the thing it gets back
> is a handle to a structure the core uses to keep track of the consumer
> rather than the underlying hardware object is an implementation detail
> that shouldn't make any difference to them. In terms of the programming
> model it seems like a layering violation to know the difference between
> one opaque structure and another.
You're not stepping back from the current interface, which is
a prerequisite to understanding the points I was making:
* Almost everywhere else in the kernel, there's only one
handle (no per-client facet idiom), for which get/put
works.
Having the handle alloc/free methods be called get/put
is a kind of problem. We want models and idioms to
converge, not diverge, in almost all cases ... using
the same names to mean different things isn't good.
* The thing that *is* per-client is basically a constraint
set ... but it's called a "regulator", which again is
confusing.
In the regulator-next tree you've now moved regulator_dev
into the public interface ... that's the handle to the
real hardware. Sort of a hint that it can't really be
hidden in the way you originally thought.
> > See above. Currently constraints are hidden for "consumers",
> > behind functional accessors like regulator_set_voltage().
> > There are no explicit constraint objects, as there are for
> > the machines.
>
> The current interface has been driven by the needs of the users: the
> majority of consumers want to do one operation on a regular basis -
> normally that's enable/disable, most devices are just powering
> themselves up and down, though for some things voltage changes are much
> more common (DVFS being the prime example). Overall it's been fairly
> similar to the clock API in terms of usage pattern.
Except that the clock interface uses put/get in the normal way;
they are not alloc/free calls, just lookup/refcount calls.
> In terms of looking at redesigning the API
You were the one suggesting the need for a new call, formalizing
a model that didn't previously exist ... not me! :)
Which is why I suggested taht if you were going to add calls,
it'd be worth thinking a bit more about some existing glitches.
next prev parent reply other threads:[~2009-03-14 21:29 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-12 0:43 [patch 2.6.29-rc7 regulator-next] regulator: refcount fixes David Brownell
2009-03-12 2:32 ` [patch 2.6.29-rc7 regulator-next] regulator: init fixes David Brownell
2009-03-12 12:01 ` Mark Brown
2009-03-15 0:25 ` [patch 2.6.29-rc8 regulator-next] regulator: init fixes (v4) David Brownell
2009-03-15 0:37 ` Mark Brown
2009-03-15 4:05 ` David Brownell
2009-03-16 21:54 ` Mark Brown
2009-03-17 18:15 ` David Brownell
2009-03-17 20:08 ` Mark Brown
2009-03-18 19:25 ` David Brownell
2009-03-18 20:33 ` Mark Brown
2009-03-18 21:02 ` David Brownell
2009-03-19 19:27 ` Mark Brown
2009-03-18 21:14 ` David Brownell
2009-03-18 21:14 ` David Brownell
2009-03-19 16:59 ` Mark Brown
2009-03-15 4:16 ` [patch 2.6.29-rc7 regulator-next] regulator: init fixes David Brownell
2009-03-12 10:37 ` [patch 2.6.29-rc7 regulator-next] regulator: refcount fixes Mark Brown
2009-03-12 20:35 ` David Brownell
2009-03-12 21:05 ` Mark Brown
2009-03-12 23:02 ` David Brownell
2009-03-13 1:38 ` Mark Brown
2009-03-14 21:29 ` David Brownell [this message]
2009-03-15 0:30 ` Mark Brown
2009-03-15 4:27 ` David Brownell
2009-03-12 10:56 ` Liam Girdwood
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=200903141429.24534.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=broonie@sirena.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=lrg@slimlogic.co.uk \
/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.