2013-03-26 18:34:01

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH 1/5] capemgr: Beaglebone DT overlay based cape manager

On Tue, 8 Jan 2013 12:10:20 +0200, Pantelis Antoniou <[email protected]> wrote:
> Hi Lee,
>
> On Jan 8, 2013, at 12:00 PM, Lee Jones wrote:
>
> >>>>> At the end of the line, some kind of hardware glue is going to be needed.
> >>>>>
> >>>>> I just feel that drawing from a sample size of 1 (maybe 2 if I get to throw
> >>>>> in the beagleboard), it is a bit premature to think about making it overly
> >>>>> general, besides the part that are obviously part of the infrastructure
> >>>>> (like the DT overlay stuff).
> >>>>>
> >>>>> What I'm getting at, is that we need some user experience about this, before
> >>>>> going away and creating structure out of possible misconception about the uses.
> >>>>
> >>>> IMHO stuff like this will be needed by many SoCs. Some examples of similar
> >>>> things for omaps that have eventually become generic frameworks have been
> >>>> the clock framework, USB OTG support, runtime PM, pinmux framework and
> >>>> so on.
> >>>>
> >>>> So I suggest a minimal generic API from the start as that will make things
> >>>> a lot easier in the long run.
> >>>
> >>> I agree. The ux500 platform already has the concept of "user interface boards",
> >>> which currently is not well integrated into devicetree. I believe Sascha
> >>> mentioned that Pengutronix had been shipping some other systems with add-on
> >>> boards and generating device tree binaries from source for each combination.
> >>>
> >>> Ideally, both of the above should be able to use the same DT overlay logic
> >>> as BeagleBone, and I'm sure there are more of those.
> >>
> >> Hmm, I see.
> >>
> >> I will need some more information about the interface of the 'user interface boards'.
> >> I.e. how is the board identified, what is typically present on those boards, etc.
> >
> > User Interface Boards are mearly removable PCBs which are interchangeable
> > amongst various hardware platforms. They are connected via numerous
> > connectors which carry all sorts of different data links; i2c, spi, rs232,
> > etc. The UIB I'm looking at right now has a touchscreen, speakers, a key
> > pad, leds, jumpers, switches and a bunch of sensors.
> >
> > You can find a small example of how we interface to these by viewing
> > 'arch/arm/boot/dts/stuib.dtsi'. To add a UIB to a particular build, we
> > currently include it as a *.dtsi from a platform's dts file.
>
> I see. What I'm asking about is whether there's a method where you can read
> an EEPROM, or some GPIO code combination where I can find out what kind of board
> is plugged each time.
>
> If there is not, there is no way to automatically load the overlays; you can always
> use the kernel command line, or have the a user space application to request the loading
> of a specific board's overlay.
>

In this case the best thing to do is announce the availability of the
expansion via a request_firmware() call and let udev handle supplying
the correct overlay file.

g.


2013-03-26 18:41:05

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 1/5] capemgr: Beaglebone DT overlay based cape manager

On Tue, Mar 26, 2013 at 04:16:10PM +0000, Grant Likely wrote:
> On Tue, 8 Jan 2013 12:10:20 +0200, Pantelis Antoniou <[email protected]> wrote:
> > Hi Lee,
> >
> > On Jan 8, 2013, at 12:00 PM, Lee Jones wrote:
> >
> > >>>>> At the end of the line, some kind of hardware glue is going to be needed.
> > >>>>>
> > >>>>> I just feel that drawing from a sample size of 1 (maybe 2 if I get to throw
> > >>>>> in the beagleboard), it is a bit premature to think about making it overly
> > >>>>> general, besides the part that are obviously part of the infrastructure
> > >>>>> (like the DT overlay stuff).
> > >>>>>
> > >>>>> What I'm getting at, is that we need some user experience about this, before
> > >>>>> going away and creating structure out of possible misconception about the uses.
> > >>>>
> > >>>> IMHO stuff like this will be needed by many SoCs. Some examples of similar
> > >>>> things for omaps that have eventually become generic frameworks have been
> > >>>> the clock framework, USB OTG support, runtime PM, pinmux framework and
> > >>>> so on.
> > >>>>
> > >>>> So I suggest a minimal generic API from the start as that will make things
> > >>>> a lot easier in the long run.
> > >>>
> > >>> I agree. The ux500 platform already has the concept of "user interface boards",
> > >>> which currently is not well integrated into devicetree. I believe Sascha
> > >>> mentioned that Pengutronix had been shipping some other systems with add-on
> > >>> boards and generating device tree binaries from source for each combination.
> > >>>
> > >>> Ideally, both of the above should be able to use the same DT overlay logic
> > >>> as BeagleBone, and I'm sure there are more of those.
> > >>
> > >> Hmm, I see.
> > >>
> > >> I will need some more information about the interface of the 'user interface boards'.
> > >> I.e. how is the board identified, what is typically present on those boards, etc.
> > >
> > > User Interface Boards are mearly removable PCBs which are interchangeable
> > > amongst various hardware platforms. They are connected via numerous
> > > connectors which carry all sorts of different data links; i2c, spi, rs232,
> > > etc. The UIB I'm looking at right now has a touchscreen, speakers, a key
> > > pad, leds, jumpers, switches and a bunch of sensors.
> > >
> > > You can find a small example of how we interface to these by viewing
> > > 'arch/arm/boot/dts/stuib.dtsi'. To add a UIB to a particular build, we
> > > currently include it as a *.dtsi from a platform's dts file.
> >
> > I see. What I'm asking about is whether there's a method where you can read
> > an EEPROM, or some GPIO code combination where I can find out what kind of board
> > is plugged each time.
> >
> > If there is not, there is no way to automatically load the overlays; you can always
> > use the kernel command line, or have the a user space application to request the loading
> > of a specific board's overlay.
> >
>
> In this case the best thing to do is announce the availability of the
> expansion via a request_firmware() call and let udev handle supplying
> the correct overlay file.

The code to load firmware files was recently removed from udev, now that
the kernel handles this automatically itself :)

But yes, the same call still applies, request_firmware() should work
fine here.

thanks,

greg k-h