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>