linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Jon Smirl" <jonsmirl@gmail.com>
To: "David Gibson" <david@gibson.dropbear.id.au>,
	"Grant Likely" <grant.likely@secretlab.ca>,
	devicetree-discuss@ozlabs.org,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	linuxppc-dev <linuxppc-dev@ozlabs.org>
Subject: Re: Board level compatibility matching
Date: Fri, 1 Aug 2008 00:00:01 -0400	[thread overview]
Message-ID: <9e4733910807312100j6a8d1974k34054c2d69f417f4@mail.gmail.com> (raw)
In-Reply-To: <20080801033009.GG5008@yookeroo.seuss>

On 7/31/08, David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Jul 31, 2008 at 11:06:20PM -0400, Jon Smirl wrote:
>  > On 7/31/08, David Gibson <david@gibson.dropbear.id.au> wrote:
>  > > On Thu, Jul 31, 2008 at 04:58:34PM -0400, Jon Smirl wrote:
>  > >  > On 7/31/08, Grant Likely <grant.likely@secretlab.ca> wrote:
>  > >  > > On Thu, Jul 31, 2008 at 04:49:49PM -0400, Jon Smirl wrote:
>  > >  > >  > On 7/31/08, Grant Likely <grant.likely@secretlab.ca> wrote:
>  > >  > >  > > This topic keeps coming up, so it is probably time to address it once
>  > >  > >  > >  and for all.
>  > >  > >  > >
>  > >  > >  > >  When it comes to machine level support in arch/powerpc, there seems to
>  > >  > >  > >  me that there are two levels or machine support.
>  > >  > >  > >
>  > >  > >  > ......
>  > >  > >  > >
>  > >  > >  > >  Thoughts?
>  > >  > >  > >  g.
>  > >  > >  >
>  > >  > >  >
>  > >  > >  > As part of this, how can we going to solve the problem with triggering
>  > >  > >  > the load of a board specific machine/fabric driver in a generic way?
>  > >  > >
>  > >  > >
>  > >  > > That really is a separate problem.  We *could* do this with a board
>  > >  > >  specific powerpc machine driver, but I don't think it is the best
>  > >  > >  solution.
>  > >  > >
>  > >  > >  I'm still thinking that the drivers module_init() function could check
>  > >  > >  the top level board model property and decide whether or not to load
>  > >  > >  based on that.
>  > >  >
>  > >  > You're assuming the driver is compiled in.
>  > >  >
>  > >  > If the drivers are on initrd selection has to happen via the normal
>  > >  > device/driver matching process. Search for a device in the alias table
>  > >  > of the drive file.
>  > >
>  > >
>  > > This can still be done via the board platform code.  The platform code
>  > >  creates a platform device which the driver can later bind to.
>  >
>  > That is what I'm doing now. But it requires every board to add a file
>  > to arch/powerpc/platforms.  Can we have some common code to make the
>  > fabric device? Can it be an OF device instead of a platform one? An OF
>  > device could be compatible with boardname-fabric, generic-fabric. That
>  > allows a stub fabric driver to always bind.
>
>
> There are several ways to do this, and which is the most sensible
>  depends on the specific design, and whether / how many boards the
>  design is shared amongst.
>
>  In some cases it's suitable to have a "fake" device node for the sound
>  wiring, to which a fabric driver can bind.  I think I've argued
>  against this approach in the past, but I've since been convinced that
>  it is a reasonable approach for some situations.  There's precedent,
>  too, a number of Apple device trees do this.
>
>  In other cases it may be possible to deduce the correct fabric driver
>  from the interconnections of individual sound components.
>
>  In yet others, we need board-specific platform code to instantiate the
>  fabric driver.  In some cases that's simply the most straightforward
>  way to do things.  In others it's not ideal, but we can use it as a
>  fallback technique because deployed device trees simply don't have
>  sufficient information in other places to use another approach.
>
>  There doesn't have to be One True Method for doing this.

We're running into a need for the true method. With ALSA you need to
have the codec driver, i2s/ac97 driver and the fabric driver all load
and say here I am before ALSA can finish binding. ALSA won't complete
initializing on boards without all three.

So what do you do on board that doesn't need a fabric driver? That's
why you want the fake device with the compatible string =
board-fabric, noop-fabric. Now you know for sure one of those two
drivers will bind.

Why does the fake fabric device need to be in the device tree? Can't
we just dynamically create it as part of the boot process?

-- 
Jon Smirl
jonsmirl@gmail.com

  reply	other threads:[~2008-08-01  4:00 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-31 20:19 Board level compatibility matching Grant Likely
2008-07-31 20:39 ` Chris Friesen
2008-07-31 20:49 ` Jon Smirl
2008-07-31 20:52   ` Grant Likely
2008-07-31 20:58     ` Jon Smirl
2008-08-01  2:47       ` David Gibson
2008-08-01  3:06         ` Jon Smirl
2008-08-01  3:30           ` David Gibson
2008-08-01  4:00             ` Jon Smirl [this message]
2008-08-01  4:25               ` David Gibson
2008-08-01  4:37                 ` Jon Smirl
2008-08-01  6:22                   ` David Gibson
2008-07-31 20:59 ` Scott Wood
2008-07-31 21:09   ` Grant Likely
2008-08-01  2:54 ` David Gibson
2008-08-01  3:25   ` Grant Likely
2008-08-01  3:38     ` David Gibson
2008-08-01  4:25     ` Benjamin Herrenschmidt
2008-08-01 12:06       ` Josh Boyer
2008-08-01 12:28         ` Josh Boyer
2008-08-01 14:30         ` Grant Likely
2008-08-01 22:48         ` Benjamin Herrenschmidt
2008-08-02  0:07           ` Josh Boyer
2008-08-01 14:27       ` Grant Likely
2008-08-01 15:11         ` Josh Boyer
2008-08-01 16:01           ` M. Warner Losh
2008-08-01 16:24             ` Grant Likely
2008-08-01 22:54         ` Benjamin Herrenschmidt

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=9e4733910807312100j6a8d1974k34054c2d69f417f4@mail.gmail.com \
    --to=jonsmirl@gmail.com \
    --cc=benh@kernel.crashing.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=devicetree-discuss@ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=linuxppc-dev@ozlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).