diff mbox

ARM: at91: add Acme Systems Aria G25 board

Message ID 1364201369-12047-1-git-send-email-nicolas.ferre@atmel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Nicolas Ferre March 25, 2013, 8:49 a.m. UTC
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

Comments

Jean-Christophe PLAGNIOL-VILLARD March 25, 2013, 12:22 p.m. UTC | #1
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@0 {
> +			compatible = "atmel,osc", "fixed-clock";
> +			clock-frequency = <12000000>;
> +		};
> +	};
> +
> +	ahb {
> +		apb {
> +			mmc0: mmc@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@0 {
> +					reg = <0>;
> +					bus-width = <4>;
> +				};
> +			};
> +
> +			i2c0: i2c@f8010000 {
> +				status = "okay";
> +			};
> +
> +			i2c1: i2c@f8014000 {
> +				status = "okay";
> +			};
> +
> +			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
> +
> +			usart0: serial@f801c000 {
> +				pinctrl-0 = <&pinctrl_usart0
> +					     &pinctrl_usart0_rts
> +					     &pinctrl_usart0_cts>;
> +				status = "okay";
> +			};
> +
> +			usart1: serial@f8020000 {
> +				pinctrl-0 = <&pinctrl_usart1
> +					     /* &pinctrl_usart1_rts */
> +					     /* &pinctrl_usart1_cts */
> +					    >;
> +				status = "okay";
> +			};
> +
> +			usart2: serial@f8024000 {
> +				/* cannot activate RTS2+CTS2, clash with
> +				 * ethernet on PB0 and PB1 */
> +				pinctrl-0 = <&pinctrl_usart2>;
> +				status = "okay";
> +			};
> +
> +			usart3: serial@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@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";
> +			};
> +
> +			uart0: serial@f8040000 {
> +				compatible = "atmel,at91sam9260-usart";
> +				reg = <0xf8040000 0x200>;
> +				interrupts = <15 4 5>;
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&pinctrl_uart0>;
> +				status = "okay";
> +			};
> +
> +			adc0: adc@f804c000 {
> +				status = "okay";
> +				atmel,adc-channels-used = <0xf>;
> +				atmel,adc-num-channels = <4>;
> +			};
> +
> +			dbgu: serial@fffff200 {
> +				status = "okay";
> +			};
> +
> +			pinctrl@fffff400 {
> +				w1_0 {
> +					pinctrl_w1_0: w1_0-0 {
> +						atmel,pins = <0 21 0x0 0x1>; /* PA21 PIO, pull-up */
> +					};
> +				};
> +			};
> +
> +			rtc@fffffeb0 {
> +				status = "okay";
> +			};
> +		};
> +
> +		usb0: ohci@00600000 {
> +			status = "okay";
> +			num-ports = <3>;
> +		};
> +
> +		usb1: ehci@00700000 {
> +			status = "okay";
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		/* little green LED in middle of Aria G25 module */
> +		aria_led {
> +			label = "aria_led";
> +			gpios = <&pioB 8 0>; /* PB8 */
> +			linux,default-trigger = "heartbeat";
> +		};
> +
> +	};
> +
> +	onewire@0 {
> +		compatible = "w1-gpio";
> +		gpios = <&pioA 21 1>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_w1_0>;
> +	};
> +};
> -- 
> 1.8.0
>
Douglas Gilbert March 25, 2013, 12:33 p.m. UTC | #2
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@0 {
>> +			compatible = "atmel,osc", "fixed-clock";
>> +			clock-frequency = <12000000>;
>> +		};
>> +	};
>> +
>> +	ahb {
>> +		apb {
>> +			mmc0: mmc@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@0 {
>> +					reg = <0>;
>> +					bus-width = <4>;
>> +				};
>> +			};
>> +
>> +			i2c0: i2c@f8010000 {
>> +				status = "okay";
>> +			};
>> +
>> +			i2c1: i2c@f8014000 {
>> +				status = "okay";
>> +			};
>> +
>> +			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
>> +
>> +			usart0: serial@f801c000 {
>> +				pinctrl-0 = <&pinctrl_usart0
>> +					     &pinctrl_usart0_rts
>> +					     &pinctrl_usart0_cts>;
>> +				status = "okay";
>> +			};
>> +
>> +			usart1: serial@f8020000 {
>> +				pinctrl-0 = <&pinctrl_usart1
>> +					     /* &pinctrl_usart1_rts */
>> +					     /* &pinctrl_usart1_cts */
>> +					    >;
>> +				status = "okay";
>> +			};
>> +
>> +			usart2: serial@f8024000 {
>> +				/* cannot activate RTS2+CTS2, clash with
>> +				 * ethernet on PB0 and PB1 */
>> +				pinctrl-0 = <&pinctrl_usart2>;
>> +				status = "okay";
>> +			};
>> +
>> +			usart3: serial@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@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";

Why not leave it but change the data to 00 00 00 00 00 00.
It is a useful technique and really hard to find.

Trying to find a Linux embedded system with an IP address
the jumps around (because it finds a 00 00 00 00 00 00 MAC
address) can be very frustrating. Showing folks where they
can give a non-NULL MAC address may save a lot of frustration.

Doug Gilbert
Douglas Gilbert March 25, 2013, 1:48 p.m. UTC | #3
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@0 {
>> +			compatible = "atmel,osc", "fixed-clock";
>> +			clock-frequency = <12000000>;
>> +		};
>> +	};
>> +
>> +	ahb {
>> +		apb {
>> +			mmc0: mmc@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@0 {
>> +					reg = <0>;
>> +					bus-width = <4>;
>> +				};
>> +			};
>> +
>> +			i2c0: i2c@f8010000 {
>> +				status = "okay";
>> +			};
>> +
>> +			i2c1: i2c@f8014000 {
>> +				status = "okay";
>> +			};
>> +
>> +			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
>> +
>> +			usart0: serial@f801c000 {
>> +				pinctrl-0 = <&pinctrl_usart0
>> +					     &pinctrl_usart0_rts
>> +					     &pinctrl_usart0_cts>;
>> +				status = "okay";
>> +			};
>> +
>> +			usart1: serial@f8020000 {
>> +				pinctrl-0 = <&pinctrl_usart1
>> +					     /* &pinctrl_usart1_rts */
>> +					     /* &pinctrl_usart1_cts */
>> +					    >;
>> +				status = "okay";
>> +			};
>> +
>> +			usart2: serial@f8024000 {
>> +				/* cannot activate RTS2+CTS2, clash with
>> +				 * ethernet on PB0 and PB1 */
>> +				pinctrl-0 = <&pinctrl_usart2>;
>> +				status = "okay";
>> +			};
>> +
>> +			usart3: serial@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@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 :-)

Doug Gilbert
Nicolas Ferre March 25, 2013, 2:10 p.m. UTC | #4
On 03/25/2013 02:48 PM, Douglas Gilbert :
> 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@0 {
>>> +            compatible = "atmel,osc", "fixed-clock";
>>> +            clock-frequency = <12000000>;
>>> +        };
>>> +    };
>>> +
>>> +    ahb {
>>> +        apb {
>>> +            mmc0: mmc@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@0 {
>>> +                    reg = <0>;
>>> +                    bus-width = <4>;
>>> +                };
>>> +            };
>>> +
>>> +            i2c0: i2c@f8010000 {
>>> +                status = "okay";
>>> +            };
>>> +
>>> +            i2c1: i2c@f8014000 {
>>> +                status = "okay";
>>> +            };
>>> +
>>> +            /* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
>>> +
>>> +            usart0: serial@f801c000 {
>>> +                pinctrl-0 = <&pinctrl_usart0
>>> +                         &pinctrl_usart0_rts
>>> +                         &pinctrl_usart0_cts>;
>>> +                status = "okay";
>>> +            };
>>> +
>>> +            usart1: serial@f8020000 {
>>> +                pinctrl-0 = <&pinctrl_usart1
>>> +                         /* &pinctrl_usart1_rts */
>>> +                         /* &pinctrl_usart1_cts */
>>> +                        >;
>>> +                status = "okay";
>>> +            };
>>> +
>>> +            usart2: serial@f8024000 {
>>> +                /* cannot activate RTS2+CTS2, clash with
>>> +                 * ethernet on PB0 and PB1 */
>>> +                pinctrl-0 = <&pinctrl_usart2>;
>>> +                status = "okay";
>>> +            };
>>> +
>>> +            usart3: serial@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@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 :-)

Absolutely: for all those reasons (the strongest one beeing: it is so
simple), I won't modify this part.

Bye,
Nicolas Ferre March 25, 2013, 2:11 p.m. UTC | #5
On 03/25/2013 01:22 PM, Jean-Christophe PLAGNIOL-VILLARD :
> 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

Ok, I remove it.

>> +
>> +	aliases {
>> +		serial4 = &usart3;
>> +		serial5 = &uart0;
>> +	};
> you need to specify all

Well I do not think so: other are taken from

/include/ "at91sam9g25.dtsi"

Bye,
Jean-Christophe PLAGNIOL-VILLARD March 25, 2013, 2:31 p.m. UTC | #6
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@0 {
> >>+			compatible = "atmel,osc", "fixed-clock";
> >>+			clock-frequency = <12000000>;
> >>+		};
> >>+	};
> >>+
> >>+	ahb {
> >>+		apb {
> >>+			mmc0: mmc@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@0 {
> >>+					reg = <0>;
> >>+					bus-width = <4>;
> >>+				};
> >>+			};
> >>+
> >>+			i2c0: i2c@f8010000 {
> >>+				status = "okay";
> >>+			};
> >>+
> >>+			i2c1: i2c@f8014000 {
> >>+				status = "okay";
> >>+			};
> >>+
> >>+			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
> >>+
> >>+			usart0: serial@f801c000 {
> >>+				pinctrl-0 = <&pinctrl_usart0
> >>+					     &pinctrl_usart0_rts
> >>+					     &pinctrl_usart0_cts>;
> >>+				status = "okay";
> >>+			};
> >>+
> >>+			usart1: serial@f8020000 {
> >>+				pinctrl-0 = <&pinctrl_usart1
> >>+					     /* &pinctrl_usart1_rts */
> >>+					     /* &pinctrl_usart1_cts */
> >>+					    >;
> >>+				status = "okay";
> >>+			};
> >>+
> >>+			usart2: serial@f8024000 {
> >>+				/* cannot activate RTS2+CTS2, clash with
> >>+				 * ethernet on PB0 and PB1 */
> >>+				pinctrl-0 = <&pinctrl_usart2>;
> >>+				status = "okay";
> >>+			};
> >>+
> >>+			usart3: serial@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@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).

If the mac is specifued in the register the kernel re-use 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

if you keep the mac addres in the dts NACK

Best Regards,
J.
Jean-Christophe PLAGNIOL-VILLARD March 25, 2013, 2:34 p.m. UTC | #7
On 15:11 Mon 25 Mar     , Nicolas Ferre wrote:
> On 03/25/2013 01:22 PM, Jean-Christophe PLAGNIOL-VILLARD :
> > 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
> 
> Ok, I remove it.
> 
> >> +
> >> +	aliases {
> >> +		serial4 = &usart3;
> >> +		serial5 = &uart0;
> >> +	};
> > you need to specify all
> 
> Well I do not think so: other are taken from
> 
> /include/ "at91sam9g25.dtsi"
if I touch the dtsi then I break the Aria

if you modify the alias do it on all

Best Regards,
J.
> 
> Bye,
> -- 
> Nicolas Ferre
Douglas Gilbert March 25, 2013, 3:23 p.m. UTC | #8
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@0 {
>>>> +			compatible = "atmel,osc", "fixed-clock";
>>>> +			clock-frequency = <12000000>;
>>>> +		};
>>>> +	};
>>>> +
>>>> +	ahb {
>>>> +		apb {
>>>> +			mmc0: mmc@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@0 {
>>>> +					reg = <0>;
>>>> +					bus-width = <4>;
>>>> +				};
>>>> +			};
>>>> +
>>>> +			i2c0: i2c@f8010000 {
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			i2c1: i2c@f8014000 {
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
>>>> +
>>>> +			usart0: serial@f801c000 {
>>>> +				pinctrl-0 = <&pinctrl_usart0
>>>> +					     &pinctrl_usart0_rts
>>>> +					     &pinctrl_usart0_cts>;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			usart1: serial@f8020000 {
>>>> +				pinctrl-0 = <&pinctrl_usart1
>>>> +					     /* &pinctrl_usart1_rts */
>>>> +					     /* &pinctrl_usart1_cts */
>>>> +					    >;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			usart2: serial@f8024000 {
>>>> +				/* cannot activate RTS2+CTS2, clash with
>>>> +				 * ethernet on PB0 and PB1 */
>>>> +				pinctrl-0 = <&pinctrl_usart2>;
>>>> +				status = "okay";
>>>> +			};
>>>> +
>>>> +			usart3: serial@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@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
Jean-Christophe PLAGNIOL-VILLARD March 25, 2013, 5:04 p.m. UTC | #9
On 11:23 Mon 25 Mar     , Douglas Gilbert wrote:
> 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@0 {
> >>>>+			compatible = "atmel,osc", "fixed-clock";
> >>>>+			clock-frequency = <12000000>;
> >>>>+		};
> >>>>+	};
> >>>>+
> >>>>+	ahb {
> >>>>+		apb {
> >>>>+			mmc0: mmc@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@0 {
> >>>>+					reg = <0>;
> >>>>+					bus-width = <4>;
> >>>>+				};
> >>>>+			};
> >>>>+
> >>>>+			i2c0: i2c@f8010000 {
> >>>>+				status = "okay";
> >>>>+			};
> >>>>+
> >>>>+			i2c1: i2c@f8014000 {
> >>>>+				status = "okay";
> >>>>+			};
> >>>>+
> >>>>+			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
> >>>>+
> >>>>+			usart0: serial@f801c000 {
> >>>>+				pinctrl-0 = <&pinctrl_usart0
> >>>>+					     &pinctrl_usart0_rts
> >>>>+					     &pinctrl_usart0_cts>;
> >>>>+				status = "okay";
> >>>>+			};
> >>>>+
> >>>>+			usart1: serial@f8020000 {
> >>>>+				pinctrl-0 = <&pinctrl_usart1
> >>>>+					     /* &pinctrl_usart1_rts */
> >>>>+					     /* &pinctrl_usart1_cts */
> >>>>+					    >;
> >>>>+				status = "okay";
> >>>>+			};
> >>>>+
> >>>>+			usart2: serial@f8024000 {
> >>>>+				/* cannot activate RTS2+CTS2, clash with
> >>>>+				 * ethernet on PB0 and PB1 */
> >>>>+				pinctrl-0 = <&pinctrl_usart2>;
> >>>>+				status = "okay";
> >>>>+			};
> >>>>+
> >>>>+			usart3: serial@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@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? 
since EVER this is why you can resolve the IP <=> MAC on public network
That's why when you buy a mac address range, you need to prouve how you handle
it to buy a second range.

> 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?
yes but NEVER set the same mac address for every board (hw) in a DT or in C
> 
> >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.
no default one in the kernel dt

on some server we flash a dtb with a mac inside but this handle at production
level and the dts in the kernel does not have ANY default mac address
> 
> >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.
in you patch you put a mac address not 00 00 00 00 00 00
and if u-boot is not able to add a property fix it

> 
> For more information about this technique see:
>   http://www.petalogix.com/support/kb/mac_addr_update
I known how dt work and how to handle it at bootloader level
for more than 6 years

Best Regards,
J.
> 
> 
> Doug Gilbert
>
diff mbox

Patch

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";
+
+	aliases {
+		serial4 = &usart3;
+		serial5 = &uart0;
+	};
+
+	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@0 {
+			compatible = "atmel,osc", "fixed-clock";
+			clock-frequency = <12000000>;
+		};
+	};
+
+	ahb {
+		apb {
+			mmc0: mmc@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@0 {
+					reg = <0>;
+					bus-width = <4>;
+				};
+			};
+
+			i2c0: i2c@f8010000 {
+				status = "okay";
+			};
+
+			i2c1: i2c@f8014000 {
+				status = "okay";
+			};
+
+			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */
+
+			usart0: serial@f801c000 {
+				pinctrl-0 = <&pinctrl_usart0
+					     &pinctrl_usart0_rts
+					     &pinctrl_usart0_cts>;
+				status = "okay";
+			};
+
+			usart1: serial@f8020000 {
+				pinctrl-0 = <&pinctrl_usart1
+					     /* &pinctrl_usart1_rts */
+					     /* &pinctrl_usart1_cts */
+					    >;
+				status = "okay";
+			};
+
+			usart2: serial@f8024000 {
+				/* cannot activate RTS2+CTS2, clash with
+				 * ethernet on PB0 and PB1 */
+				pinctrl-0 = <&pinctrl_usart2>;
+				status = "okay";
+			};
+
+			usart3: serial@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@f802c000 {
+				phy-mode = "rmii";
+				/* following can be overwritten by uboot 'ftd set' command */
+				local-mac-address = [00 04 25 dd 10 01];
+				status = "okay";
+			};
+
+			uart0: serial@f8040000 {
+				compatible = "atmel,at91sam9260-usart";
+				reg = <0xf8040000 0x200>;
+				interrupts = <15 4 5>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_uart0>;
+				status = "okay";
+			};
+
+			adc0: adc@f804c000 {
+				status = "okay";
+				atmel,adc-channels-used = <0xf>;
+				atmel,adc-num-channels = <4>;
+			};
+
+			dbgu: serial@fffff200 {
+				status = "okay";
+			};
+
+			pinctrl@fffff400 {
+				w1_0 {
+					pinctrl_w1_0: w1_0-0 {
+						atmel,pins = <0 21 0x0 0x1>; /* PA21 PIO, pull-up */
+					};
+				};
+			};
+
+			rtc@fffffeb0 {
+				status = "okay";
+			};
+		};
+
+		usb0: ohci@00600000 {
+			status = "okay";
+			num-ports = <3>;
+		};
+
+		usb1: ehci@00700000 {
+			status = "okay";
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		/* little green LED in middle of Aria G25 module */
+		aria_led {
+			label = "aria_led";
+			gpios = <&pioB 8 0>; /* PB8 */
+			linux,default-trigger = "heartbeat";
+		};
+
+	};
+
+	onewire@0 {
+		compatible = "w1-gpio";
+		gpios = <&pioA 21 1>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_w1_0>;
+	};
+};