From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: NeilBrown <neilb@suse.de>, Grant Likely <grant.likely@linaro.org>,
Rob Herring <rob.herring@calxeda.com>,
devicetree@vger.kernel.org, lkml <linux-kernel@vger.kernel.org>
Subject: Re: Strange location and name for platform devices when device-tree is used.
Date: Sat, 2 Nov 2013 08:58:24 -0700 [thread overview]
Message-ID: <20131102155824.GG23938@kroah.com> (raw)
In-Reply-To: <1383347399.28909.46.camel@pasglop>
On Sat, Nov 02, 2013 at 10:09:59AM +1100, Benjamin Herrenschmidt wrote:
> On Fri, 2013-11-01 at 13:47 -0700, Greg Kroah-Hartman wrote:
>
> > > > On my device I seem to have some platform devices registered through
> > > > device-tree, and some registered through platform_device_add (e.g.
> > > > 'alarmtimer'). Guaranteeing they remain disjoint sets if the kernel is
> > > > allowed to evolve independently of the devicetree might be tricky....
> > > > Maybe we need "/sys/devices/platform" and "/sys/devices/dt_platform" ??
> > >
> > > No, I think device-tree created platform devices should go
> > > to /sys/devices/platform like the "classic" ones.
> > >
> > > The problem is really how to deal with potential name duplication. We
> > > could try to register, if we get -EEXIST (assuming sysfs returns the
> > > right stuff), try again with ".1" etc...
> >
> > How can there be device name collisions? All platform devices _should_
> > be named uniquely, if not, you have bigger problems...
>
> The problem is how to create a unique name from a platform device
> created from a device-tree node.
I have no idea, and frankly, I don't care, I leave that to the
device-tree maintainers, as they are the ones that are using platform
devices for this type of kernel interaction.
So go blame them for this, not me, remember, I'm the one who _hates_
platform devices and wish they had never been created...
> Device tree nodes aren't necessarily uniquely named. They are unique
> under a given parent but that hierarchy isn't preserved when creating
> corresponding platform devices (and it would be very tricky to do so).
>
> Currently, we simply append a number to the name when creating them,
> which is obtained from a global counter.
That's the best solution, you can't rely on device ids being the same
for any type of bus, that's just life.
> Neil is unhappy about that because on his specific hardware, the device
> has a unique name and thus we introduce a naming difference between
> device-tree usage and old-style "hard coded" board file usage.
>
> It would be nice if we could do something that only appends the "global
> number" at the end of the name if the name isn't already unique. Thus my
> proposal of trying first with the base name, and trying again if that
> returns -EEXIST in some kind of loop.
Just loop through all the platform devices before registering it to
determine if you need to do this, the platform code can do this just
fine. If you try to register a duplicate name with the driver core,
odds are it will complain loudly, so don't do that.
good luck,
greg k-h
next prev parent reply other threads:[~2013-11-02 15:56 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-01 3:59 Strange location and name for platform devices when device-tree is used NeilBrown
2013-11-01 4:22 ` Benjamin Herrenschmidt
2013-11-01 4:27 ` Benjamin Herrenschmidt
2013-11-01 5:03 ` NeilBrown
2013-11-01 5:08 ` Benjamin Herrenschmidt
2013-11-01 18:04 ` Grant Likely
2013-11-01 20:33 ` Benjamin Herrenschmidt
2013-11-15 7:37 ` Grant Likely
2013-11-01 20:48 ` Greg Kroah-Hartman
2013-11-01 20:47 ` Greg Kroah-Hartman
2013-11-01 23:09 ` Benjamin Herrenschmidt
2013-11-02 15:58 ` Greg Kroah-Hartman [this message]
2013-11-02 20:22 ` Benjamin Herrenschmidt
2013-11-02 20:40 ` Greg Kroah-Hartman
2013-11-03 21:12 ` Benjamin Herrenschmidt
2013-11-03 21:09 ` NeilBrown
2013-11-01 23:10 ` Benjamin Herrenschmidt
2013-11-01 23:45 ` NeilBrown
2013-11-04 8:56 ` Thierry Reding
2013-11-15 7:44 ` Grant Likely
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=20131102155824.GG23938@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=benh@kernel.crashing.org \
--cc=devicetree@vger.kernel.org \
--cc=grant.likely@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--cc=rob.herring@calxeda.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