linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: dgilbert@interlog.com (Douglas Gilbert)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: at91: add Acme Systems Aria G25 board
Date: Mon, 25 Mar 2013 11:23:25 -0400	[thread overview]
Message-ID: <51506BED.4040203@interlog.com> (raw)
In-Reply-To: <20130325143147.GA20693@game.jcrosoft.org>

On 13-03-25 10:31 AM, Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 09:48 Mon 25 Mar     , Douglas Gilbert wrote:
>> On 13-03-25 08:22 AM, Jean-Christophe PLAGNIOL-VILLARD wrote:
>>> On 09:49 Mon 25 Mar     , Nicolas Ferre wrote:
>>>> From: Douglas Gilbert <dgilbert@interlog.com>
>>>>
>>>> Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
>>>> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
>>>> ---
>>>>   arch/arm/boot/dts/ariag25.dts | 168 ++++++++++++++++++++++++++++++++++++++++++
>>>>   1 file changed, 168 insertions(+)
>>>>   create mode 100644 arch/arm/boot/dts/ariag25.dts
>>>>
>>>> diff --git a/arch/arm/boot/dts/ariag25.dts b/arch/arm/boot/dts/ariag25.dts
>>>> new file mode 100644
>>>> index 0000000..d18ef50
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/ariag25.dts
>>>> @@ -0,0 +1,168 @@
>>>> +/*
>>>> + * ariag25.dts - Device Tree file for Acme Systems Aria G25 (AT91SAM9G25 based)
>>>> + *
>>>> + * Copyright (C) 2013 Douglas Gilbert <dgilbert@interlog.com>,
>>>> + *                    Robert Nelson <robertcnelson@gmail.com>
>>>> + *
>>>> + * Licensed under GPLv2 or later.
>>>> + */
>>>> +/dts-v1/;
>>>> +/include/ "at91sam9g25.dtsi"
>>>> +
>>>> +/ {
>>>> +	model = "Acme Systems Aria G25";
>>>> +	compatible = "acme,ariag25", "atmel,at91sam9g25ek", "atmel,at91sam9x5ek",
>>>> +		     "atmel,at91sam9x5", "atmel,at91sam9";
>>> I doube the code is compatible with the 9g25ek
>>>
>>> specially when you do not include it
>>>> +
>>>> +	aliases {
>>>> +		serial4 = &usart3;
>>>> +		serial5 = &uart0;
>>>> +	};
>>> you need to specify all
>>>> +
>>>> +	chosen {
>>>> +		bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait";
>>>> +	};
>>>> +
>>>> +	memory {
>>>> +		/* 128 MB, change this for 256 MB revision */
>>>> +		reg = <0x20000000 0x8000000>;
>>>> +	};
>>>> +
>>>> +	clocks {
>>>> +		#address-cells = <1>;
>>>> +		#size-cells = <1>;
>>>> +		ranges;
>>>> +
>>>> +		main_clock: clock at 0 {
>>>> +			compatible = "atmel,osc", "fixed-clock";
>>>> +			clock-frequency = <12000000>;
>>>> +		};
>>>> +	};
>>>> +
>>>> +	ahb {
>>>> +		apb {
>>>> +			mmc0: mmc at f0008000 {
>>>> +				/* N.B. Aria has no SD card detect (CD), assumed present */
>>>> +
>>>> +				pinctrl-0 = <
>>>> +					&pinctrl_mmc0_slot0_clk_cmd_dat0
>>>> +					&pinctrl_mmc0_slot0_dat1_3>;
>>>> +				status = "okay";
>>>> +				slot at 0 {
>>>> +					reg = <0>;
>>>> +					bus-width = <4>;
>>>> +				};
>>>> +			};
>>>> +
>>>> +			i2c0: i2c at f8010000 {
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			i2c1: i2c at f8014000 {
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
>>>> +
>>>> +			usart0: serial at f801c000 {
>>>> +				pinctrl-0 = <&pinctrl_usart0
>>>> +					     &pinctrl_usart0_rts
>>>> +					     &pinctrl_usart0_cts>;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			usart1: serial at f8020000 {
>>>> +				pinctrl-0 = <&pinctrl_usart1
>>>> +					     /* &pinctrl_usart1_rts */
>>>> +					     /* &pinctrl_usart1_cts */
>>>> +					    >;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			usart2: serial at f8024000 {
>>>> +				/* cannot activate RTS2+CTS2, clash with
>>>> +				 * ethernet on PB0 and PB1 */
>>>> +				pinctrl-0 = <&pinctrl_usart2>;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			usart3: serial at f8028000 {
>>>> +				compatible = "atmel,at91sam9260-usart";
>>>> +				reg = <0xf8028000 0x200>;
>>>> +				interrupts = <8 4 5>;
>>>> +				pinctrl-names = "default";
>>>> +				pinctrl-0 = <&pinctrl_usart3
>>>> +					     /* &pinctrl_usart3_rts */
>>>> +					     /* &pinctrl_usart3_cts */
>>>> +					    >;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			macb0: ethernet at f802c000 {
>>>> +				phy-mode = "rmii";
>>>> +				/* following can be overwritten by uboot 'ftd set' command */
>>>> +				local-mac-address = [00 04 25 dd 10 01];
>>> drop this, this is board specific
>>>> +				status = "okay";
>>
>> Also the local-mac-address line is needed since it is edited
>> by u-boot via this line:
>>
>> mod_dtb=fdt addr 0x27FF0000 ; fdt set ${eth0_dt_path}
>> local-mac-address [ ${my_ethaddr} ]
>>
>> Interesting technique that: editing the dtb from u-boot prior to the
>> Linux kernel using it ...
>>
>> So the u-boot environment file actually sets the MAC address. The Aria
>> G25 has no NAND, flash or switches for setting a quasi unique MAC
>> address. There seems to be no way to pass the MAC address on the
>> kernel boot line (there was in the past). That leaves the microSD card
>> and IMO u-boot is the best place to set that MAC address. My guess
>> is that the Aria G25 is not the only board that has this "setting the
>> MAC address" challenge.
>>
>> Finally of course that line is "board specific", that is why the
>> file is called ariag25.dts :-)
> The mac address is board (hw) uniq so no default in the dts, if none present
> the kernel will generate one (private class).

Since when have MAC addresses been hw uniq? My guess is
a huge majority of MAC addresses are set in firmware.
Since many embedded systems with wired ethernet face
this problem, is it the job of Linux to make this more
difficult than it already is?

> If the mac is specifued in the register the kernel re-use it.

Unless u-boot (or whatever) edits the dtb file before the
Linux kernel sees it.

> This is the job of the booloader to set one. The dts in the kernel will be
> used for every Aria not one board in particular

It is the job of someone to set it. A MAC address can be
compiled into u-boot but that is about as useful as
compiling it into Linux kernel.

> if you keep the mac addres in the dts NACK

Seems strange to object to setting
   local-mac-address = [00 00 00 00 00 00];
when if the kernel sees that line it will do exactly the
same thing as without that line? But the advantage of that
line is that it gives the u-boot environment file the
ability to edit the ariag25.dtb before the kernel sees it.
And if the u-boot environment file is properly configured
by the board manufacturer, then a quasi uniq, stable MAC
address is generated.

For more information about this technique see:
   http://www.petalogix.com/support/kb/mac_addr_update


Doug Gilbert

  reply	other threads:[~2013-03-25 15:23 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-25  8:49 [PATCH] ARM: at91: add Acme Systems Aria G25 board Nicolas Ferre
2013-03-25 12:22 ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-25 12:33   ` Douglas Gilbert
2013-03-25 13:48   ` Douglas Gilbert
2013-03-25 14:10     ` Nicolas Ferre
2013-03-25 14:31     ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-25 15:23       ` Douglas Gilbert [this message]
2013-03-25 17:04         ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-25 14:11   ` Nicolas Ferre
2013-03-25 14:34     ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-26 11:39 ` [PATCH v2] " Nicolas Ferre
2013-04-02 18:48   ` Olof Johansson
2013-04-03 19:10     ` Douglas Gilbert
2013-04-04 15:29       ` Nicolas Ferre

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=51506BED.4040203@interlog.com \
    --to=dgilbert@interlog.com \
    --cc=linux-arm-kernel@lists.infradead.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).