From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH dtc] C-based DT schema checker integrated into dtc
Date: Tue, 5 Nov 2013 09:22:01 +0100 [thread overview]
Message-ID: <201311050922.01970.arnd@arndb.de> (raw)
In-Reply-To: <527816AE.1080508@wwwdotorg.org>
On Monday 04 November 2013, Stephen Warren wrote:
> On 11/04/2013 01:43 PM, Arnd Bergmann wrote:
> > int devm_probe_gpio(struct device *dev, const struct devm_probe *probe)
> ...
> > #define DEVM_GPIO(_struct, _member, _index) { \
> ...
> > #define DEVM_GPIO_NAMED(_struct, _member, _name) { \
>
> Should those save the GPIO flags too? Or, do we assume that gpiod-based
> GPIOs already handle the flags inside the gpiod API?
The latter. I would certainly hope to get away with assigning just one
structure field per callback function.
> > /*
> > * this lists all properties we access from the driver. The list
> > * is interpreted by devm_probe() and can be programmatically
> > * verified to match the binding.
> > */
> > static const struct devm_probe foo_probe_list[] = {
> > DEVM_ALLOC(foo_priv),
> > DEVM_IOMAP(foo_priv, regs, 0, 0),
> > DEVM_PROP_BOOL(foo_priv, oldstyle_dma, "foo,oldstyle-dma"),
>
> I wonder if it makes sense to handle pure data here, or whether this
> only makes sense for resources/services that are provided by some other
> device?
>
> I guess it's nice for all resources and configuration to come through to
> probe() in the same way, but I rather wonder how we'd handle bindings
> that have large custom (driver-specific) tables of data. Would be simply
> defer such things to custom code in probe()? If so, it feels slightly
> inconsistent to handle some data in the probe_list[] and some in code in
> probe(). Still, I guess there's something to be said for keeping the
> simple cases simple.
Right, and I didn't intend to solve all cases in a completely generic way.
Thinking about it some more, a driver could actually add a custom callback
for some properties, but I don't know if that adds any value over just
interpreting them from the regular probe() function.
> > DEVM_DMA_SLAVE(foo_priv, rxdma, "rx");
> > DEVM_DMA_SLAVE(foo_priv, txdma, "tx");
> > DEVM_GPIO(foo_priv, gpio, 0);
> > DEVM_IRQ_NAMED(foo_priv, irq, foo_irq_handler, "fifo", IRQF_SHARED),
>
> What about the case where some resources are optional, or only required
> based on the values of certain other properties? I suppose that probe()
> could call devm_probe() multiple times, with different probe_list[]s,
> based on whatever algorithm they need.
That's one open question that I haven't found the best solution for yet.
My first take on that was to add another field in struct devm_probe to
mark a property as optional, but that would increase the overall
complexity. I'd first want to do a survey of what kinds of properties
are typically optional. If it's only a few of them, we could have
something like
DEVM_DMA_SLAVE_OPTIONAL()
for the cases that need it, with a variant of the callback function.
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Jon Loeliger <jdl-CYoMK+44s/E@public.gmane.org>,
khilman-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Benoit Cousson <bcousson-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
Tomasz Figa <t.figa-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
fparent-rdvid1DuHRBWk0Htik3J/w@public.gmane.org,
Tomasz Figa <tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org,
Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org,
Alison_Chaiken-nmGgyN9QBj3QT0dZR+AlfA@public.gmane.org,
David Gibson
<david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
Subject: Re: [RFC PATCH dtc] C-based DT schema checker integrated into dtc
Date: Tue, 5 Nov 2013 09:22:01 +0100 [thread overview]
Message-ID: <201311050922.01970.arnd@arndb.de> (raw)
In-Reply-To: <527816AE.1080508-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
On Monday 04 November 2013, Stephen Warren wrote:
> On 11/04/2013 01:43 PM, Arnd Bergmann wrote:
> > int devm_probe_gpio(struct device *dev, const struct devm_probe *probe)
> ...
> > #define DEVM_GPIO(_struct, _member, _index) { \
> ...
> > #define DEVM_GPIO_NAMED(_struct, _member, _name) { \
>
> Should those save the GPIO flags too? Or, do we assume that gpiod-based
> GPIOs already handle the flags inside the gpiod API?
The latter. I would certainly hope to get away with assigning just one
structure field per callback function.
> > /*
> > * this lists all properties we access from the driver. The list
> > * is interpreted by devm_probe() and can be programmatically
> > * verified to match the binding.
> > */
> > static const struct devm_probe foo_probe_list[] = {
> > DEVM_ALLOC(foo_priv),
> > DEVM_IOMAP(foo_priv, regs, 0, 0),
> > DEVM_PROP_BOOL(foo_priv, oldstyle_dma, "foo,oldstyle-dma"),
>
> I wonder if it makes sense to handle pure data here, or whether this
> only makes sense for resources/services that are provided by some other
> device?
>
> I guess it's nice for all resources and configuration to come through to
> probe() in the same way, but I rather wonder how we'd handle bindings
> that have large custom (driver-specific) tables of data. Would be simply
> defer such things to custom code in probe()? If so, it feels slightly
> inconsistent to handle some data in the probe_list[] and some in code in
> probe(). Still, I guess there's something to be said for keeping the
> simple cases simple.
Right, and I didn't intend to solve all cases in a completely generic way.
Thinking about it some more, a driver could actually add a custom callback
for some properties, but I don't know if that adds any value over just
interpreting them from the regular probe() function.
> > DEVM_DMA_SLAVE(foo_priv, rxdma, "rx");
> > DEVM_DMA_SLAVE(foo_priv, txdma, "tx");
> > DEVM_GPIO(foo_priv, gpio, 0);
> > DEVM_IRQ_NAMED(foo_priv, irq, foo_irq_handler, "fifo", IRQF_SHARED),
>
> What about the case where some resources are optional, or only required
> based on the values of certain other properties? I suppose that probe()
> could call devm_probe() multiple times, with different probe_list[]s,
> based on whatever algorithm they need.
That's one open question that I haven't found the best solution for yet.
My first take on that was to add another field in struct devm_probe to
mark a property as optional, but that would increase the overall
complexity. I'd first want to do a survey of what kinds of properties
are typically optional. If it's only a few of them, we could have
something like
DEVM_DMA_SLAVE_OPTIONAL()
for the cases that need it, with a variant of the callback function.
Arnd
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-11-05 8:22 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-24 21:51 [RFC PATCH dtc] C-based DT schema checker integrated into dtc Stephen Warren
2013-10-24 21:51 ` Stephen Warren
2013-10-24 23:43 ` Grant Likely
2013-10-24 23:43 ` Grant Likely
2013-10-25 4:00 ` Kumar Gala
2013-10-25 4:00 ` Kumar Gala
2013-10-25 14:44 ` Stephen Warren
2013-10-25 14:44 ` Stephen Warren
2013-10-25 15:21 ` Jon Loeliger
2013-10-25 15:21 ` Jon Loeliger
2013-10-25 17:38 ` Rob Herring
2013-10-25 17:38 ` Rob Herring
2013-10-25 23:11 ` David Gibson
2013-10-25 23:11 ` David Gibson
2013-11-03 23:15 ` Tomasz Figa
2013-11-03 23:15 ` Tomasz Figa
2013-11-03 23:26 ` Tomasz Figa
2013-11-03 23:26 ` Tomasz Figa
2013-11-04 9:28 ` Arnd Bergmann
2013-11-04 9:28 ` Arnd Bergmann
2013-11-04 12:31 ` Tomasz Figa
2013-11-04 12:31 ` Tomasz Figa
2013-11-04 16:37 ` Stephen Warren
2013-11-04 16:37 ` Stephen Warren
2013-11-04 18:57 ` Olof Johansson
2013-11-04 18:57 ` Olof Johansson
2013-11-04 20:43 ` Arnd Bergmann
2013-11-04 20:43 ` Arnd Bergmann
2013-11-04 21:29 ` Jason Gunthorpe
2013-11-04 21:29 ` Jason Gunthorpe
2013-11-04 21:43 ` Stephen Warren
2013-11-04 21:43 ` Stephen Warren
2013-11-04 22:21 ` Jason Gunthorpe
2013-11-04 22:21 ` Jason Gunthorpe
2013-11-05 12:14 ` Arnd Bergmann
2013-11-05 12:14 ` Arnd Bergmann
2013-11-05 8:39 ` Arnd Bergmann
2013-11-05 8:39 ` Arnd Bergmann
2013-11-05 18:03 ` Jason Gunthorpe
2013-11-05 18:03 ` Jason Gunthorpe
2013-11-05 18:48 ` Arnd Bergmann
2013-11-05 18:48 ` Arnd Bergmann
2013-11-05 19:12 ` Jason Gunthorpe
2013-11-05 19:12 ` Jason Gunthorpe
2013-11-05 19:34 ` Arnd Bergmann
2013-11-05 19:34 ` Arnd Bergmann
2013-11-05 19:58 ` Jason Gunthorpe
2013-11-05 19:58 ` Jason Gunthorpe
2013-11-05 20:17 ` Arnd Bergmann
2013-11-05 20:17 ` Arnd Bergmann
2013-11-05 20:36 ` Jason Gunthorpe
2013-11-05 20:36 ` Jason Gunthorpe
2013-11-04 21:50 ` Stephen Warren
2013-11-04 21:50 ` Stephen Warren
2013-11-05 8:22 ` Arnd Bergmann [this message]
2013-11-05 8:22 ` Arnd Bergmann
2013-11-06 12:17 ` Thierry Reding
2013-11-06 12:17 ` Thierry Reding
2013-11-04 14:28 ` David Gibson
2013-11-04 14:28 ` David Gibson
2013-11-04 16:42 ` Stephen Warren
2013-11-04 16:42 ` Stephen Warren
2013-10-28 10:17 ` David Gibson
2013-10-28 10:17 ` David Gibson
2013-10-31 21:13 ` Stephen Warren
2013-10-31 21:13 ` Stephen Warren
2013-11-01 13:24 ` David Gibson
2013-11-01 13:24 ` David Gibson
2013-10-25 23:29 ` David Gibson
2013-10-25 23:29 ` David Gibson
2013-10-31 21:11 ` Stephen Warren
2013-10-31 21:11 ` Stephen Warren
2013-11-10 11:00 ` David Gibson
2013-11-10 11:00 ` David Gibson
2013-11-12 22:06 ` Stephen Warren
2013-11-12 22:06 ` Stephen Warren
2013-11-13 0:33 ` David Gibson
2013-11-13 0:33 ` David Gibson
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=201311050922.01970.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.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 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.