[U-Boot] RFC Pin Configuration Device Tree Bindings for Altera Arria10 SOCFPGA
Simon Glass
sjg at chromium.org
Wed Dec 3 20:00:18 CET 2014
Hi,
On 3 December 2014 at 09:49, Matthew Gerlach
<mgerlach at opensource.altera.com> wrote:
> Hi,
>
> ________________________________________
> From: sjg at google.com <sjg at google.com> on behalf of Simon Glass <sjg at chromium.org>
> Sent: Wednesday, December 3, 2014 9:36 AM
> To: Pavel Machek
> Cc: Matthew Gerlach; u-boot at lists.denx.de
> Subject: Re: [U-Boot] RFC Pin Configuration Device Tree Bindings for Altera Arria10 SOCFPGA
>
> Hi,
>
> On 3 December 2014 at 06:48, Pavel Machek <pavel at ucw.cz> wrote:
>> Hi!
>>
>>> Altera Arria10 SOCFPGA Pin Configuration Bindings
>>>
>>> This document describes device tree bindings required to perform configuration
>>> of the pins for an Altera Arria10 SOCFPGA . The bindings are intended to
>>> be compact and easy to be consumed only by a SPL running in a small on-chip
>>> ram before external memory is available. The Arria10 SOCFPGA does not support
>>> dynamic modification of the pin configuration.
>>>
>>> Each set of pins is represented by its own subnode. For each subnode, the
>>> altr,pinmux-regs data will be written to sequential 32 bit addresses starting
>>> at the address in the reg property.
>>
>> These bindings will be incompatible with pin muxing on rest of
>> systems, right?
>
> The pin muxing for the Arria 10 is completely different than the Cyclone5/Arria5 chip family.
>
>>
>> Do we really want to parse DT in SPL? Should we parse the DT during
>> build for the SPL?
>>
>> Pavel
>>
> The on-chip ram for the Arria10 is 256k. We are hoping to have fewer SPL binaries and use device trees for configuration.
>
>>>
>>> Required properties:
>>> - compatible : Must be "altr,arria10-pinmux" for Arria10 SOCFPGA
>>> - one subnode for each set of pins to be configured
>>>
>>> Required subnode properties:
>>> - reg : The start address to write pinmux-data as 32 bit quantities and the
>>> number of bytes of registers to be written.
>>> - altr,pinmux-regs : Pin configuration data to be written to registers
>>>
>>> Example:
>>>
>>> pinmux at 0xffd07000 {
>>> #address-cells = <1>;
>>> #size-cells = <0>;
>>> compatible = "altr,arria10-pinmux";
>>> shared {
>>> reg = <0xffd07000 0x000000c0>;
This doesn't seem to match the address/size-cells stuff immediately above.
>>> altr,pinmux-regs = <0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF
>>> 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF
>>> 0xD 0xD 0xD 0xD 0xD 0xD 0xD 0xD 0xF 0xF
>>> 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF
>>> 0xF 0xF 0xF 0xF 0xF 0xF 0xF 0xF>;
>>> };
>>> dedicated {
>>> reg = <0xffd07200 0x00000044>;
>>> altr,pinmux-regs = <0x0 0x0 0x0 0x8 0x8 0x8 0x8 0x8 0x8 0x8
>>> 0xF 0xF 0xF 0xF 0xF 0xD 0xD>;
For consistency can you use lower-case hex?
>>> };
>>> dedicated_cfg {
Normally use hyphen instead of underscore except for phandles.
>>> reg = <0xffd07300 0x00000048>;
>>> altr,pinmux-regs = <0x00000 0x51010 0x51010 0x51010 0x40605
>>> 0x40605 0x00605 0x40605 0x40605 0x40605
>>> 0x10605 0x51010 0x51010 0x51010 0x51010
>>> 0x51010 0x03030 0x23030>;
>>> };
>>> fpga {
>>> reg = <0xffd07400 0x00000044>;
>>> altr,pinmux-regs = <0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
>>> 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
>>> };
>>> };
>
>>Does this match the kernel? Or does the kernel have no such binding yet?
>
> There are no such bindings in the kernel yet. Dynamic pinmuxing is not supported by the Arria 10; so we don't anticipate the kernel needing pinmux information.
OK. Currently device tree files are stored in the kernel, so it might
be worth submitting it there one day regardless.
>
>>We can support this in SPL if required.
>
> Our prototyping is currently doing some device tree parsing.
Great!
Also I suggest an fdt: tag on this patch. I only saw it by accident.
Regards,
Simon
More information about the U-Boot
mailing list