Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Feb 2013 22:27:51 -0800
From:      Tim Kientzle <tim@kientzle.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        freebsd-arm@freebsd.org, Brett Wynkoop <wynkoop@wynn.com>
Subject:   Re: building RaspPi Images
Message-ID:  <72554169-D2DD-48DD-8C2F-6C411DBFCE4D@kientzle.com>
In-Reply-To: <1360604561.4545.115.camel@revolution.hippie.lan>
References:  <5116CB50.9080303@ceetonetechnology.com> <7757848F-45C6-4DEF-A4A2-5F900EB10A06@kientzle.com> <20130210012052.4d7e1a46@ivory.local> <58DCA6BE-8C06-4F69-81A2-A3582FBB5B12@kientzle.com> <E691571B-EA19-4485-BB02-7486685B44C7@bsdimp.com> <1360598511.4545.92.camel@revolution.hippie.lan> <DCA761EF-FAE4-4BC9-AE33-D9F55C8ABB16@bsdimp.com> <1360600007.4545.98.camel@revolution.hippie.lan> <3F4CD7E5-17D4-4315-86BD-605F5C0040DC@kientzle.com> <1360604561.4545.115.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
On Feb 11, 2013, at 9:42 AM, Ian Lepore wrote:

>  =85 I still find it much more cumbersome to work with
> than the old hints system. The very fact that you need
> a special compiler to change the fdt data is part of that.

This is my single biggest complaint about fdt as well.

>> 2) We're still debating the role of the FDT vis a vis
>> end user customization.  Personally, I would like
>> to find some more dynamic approach to handling
>> pinmux at runtime.  (E.g., if you want to use a pin
>> for gpio, you do this:
>>   $ gpioctl 1 7 out   # Set gpio 1 7 for output, including pinmux =
change
>>   $ gpioctl 1 7 on
>> Similarly, I think that enabling uart2 should automatically
>> adjust the pinmux appropriately.
>=20
> I whole-heartedly agree with that last sentence, but it's about a
> zillion miles from where our code is now.  I'm not even sure it's =
fully
> possible, it just seems like a nice generic ideal "I asked for a uart,
> so the uart driver should enable power, enable clocks, and assign pins
> to make that happen."

At least for BeagleBone, I think I see a way to
make the pinmux code work this way.  That code is
all table-driven, so with some creative reworking of
the tables, it should be feasible to define groups of
pins and a mechanism to manage them.  Tedious
work, to be sure, simply because of the sheer number
of definitions involved, but nothing particularly complicated.

Another approach I've considered is to have the
necessary pinmux assignments be part of the
device entry in the DTS.  (BeagleBone DTS, at
least, defines a single list of pinmux settings for
the board, which I don't like at all.)  This would
be similar to the way interrupts and memory
regions are assigned today.  That would at
least move the problem down to the level of
enabling/disabling particular entries in the DTS.
Unfortunately, I don't yet understand the inner workings
of simplebus and the FDT management in the kernel
well enough to be able to tackle this just yet.

Having pinmux settings be part of the associated
device node in the DTS would also make your next
issue a little easier to manage, I think.  (For example,
the DTS in SVN could have several versions of a single
device with most of them disabled.)

>  The problem crops up when "assign pins" has
> several sets of pins to choose from for a given device, and I know at
> least the Atmel SoCs do this a lot.


Tim




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?72554169-D2DD-48DD-8C2F-6C411DBFCE4D>