diff mbox

[U-Boot,v3] nitrogen6x : Use generic distro configuration

Message ID 1467183922-2082-1-git-send-email-fabien.lahoudere@collabora.co.uk
State Changes Requested
Delegated to: Stefano Babic
Headers show

Commit Message

Fabien Lahoudere June 29, 2016, 7:05 a.m. UTC
In order to simplify the use of various images on various media
for nitrogen6x, the configuration of the board must follow the
generic distro configuration (doc/README.distro).

In order to boot your old rootfs, move your kernel and your device
tree in /boot/. Then create /boot/extlinux/extlinux.conf with for
example:

default Buildroot

label Buildroot
	kernel /boot/zImage
	append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
	fdtdir /boot

Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk>
---
Changes for V2:
	- reintegration of deleted env
	- changes are applied only if CONFIG_DISTRO_DEFAULTS=y

Changes for V3:
	- remove undefined device tree
	
 configs/mx6qsabrelite_defconfig |  1 +
 configs/nitrogen6dl2g_defconfig |  1 +
 configs/nitrogen6dl_defconfig   |  1 +
 configs/nitrogen6q2g_defconfig  |  1 +
 configs/nitrogen6q_defconfig    |  1 +
 configs/nitrogen6s1g_defconfig  |  1 +
 configs/nitrogen6s_defconfig    |  1 +
 doc/README.imx6                 | 47 +++++++++++++++++++++++++++++++++++++++++
 include/configs/mx6_common.h    | 24 +++++++++++++++++++++
 include/configs/nitrogen6x.h    | 36 +++++++++++++++++++++++++------
 10 files changed, 108 insertions(+), 6 deletions(-)

Comments

Stefano Babic July 13, 2016, 2:28 p.m. UTC | #1
Hi Fabien,

On 29/06/2016 09:05, Fabien Lahoudere wrote:
> In order to simplify the use of various images on various media
> for nitrogen6x, the configuration of the board must follow the
> generic distro configuration (doc/README.distro).
> 
> In order to boot your old rootfs, move your kernel and your device
> tree in /boot/. Then create /boot/extlinux/extlinux.conf with for
> example:
> 
> default Buildroot
> 
> label Buildroot
> 	kernel /boot/zImage
> 	append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
> 	fdtdir /boot
> 
> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk>
> ---
> Changes for V2:
> 	- reintegration of deleted env
> 	- changes are applied only if CONFIG_DISTRO_DEFAULTS=y
> 
> Changes for V3:
> 	- remove undefined device tree
> 	
>  configs/mx6qsabrelite_defconfig |  1 +
>  configs/nitrogen6dl2g_defconfig |  1 +
>  configs/nitrogen6dl_defconfig   |  1 +
>  configs/nitrogen6q2g_defconfig  |  1 +
>  configs/nitrogen6q_defconfig    |  1 +
>  configs/nitrogen6s1g_defconfig  |  1 +
>  configs/nitrogen6s_defconfig    |  1 +
>  doc/README.imx6                 | 47 +++++++++++++++++++++++++++++++++++++++++
>  include/configs/mx6_common.h    | 24 +++++++++++++++++++++
>  include/configs/nitrogen6x.h    | 36 +++++++++++++++++++++++++------
>  10 files changed, 108 insertions(+), 6 deletions(-)
> 
> diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
> index fa6139a..27b64c4 100644
> --- a/configs/mx6qsabrelite_defconfig
> +++ b/configs/mx6qsabrelite_defconfig
> @@ -36,3 +36,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
> index 02b2462..b1344c6 100644
> --- a/configs/nitrogen6dl2g_defconfig
> +++ b/configs/nitrogen6dl2g_defconfig
> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
> index 52553f6..f794c08 100644
> --- a/configs/nitrogen6dl_defconfig
> +++ b/configs/nitrogen6dl_defconfig
> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
> index 11188b7..56cebe0 100644
> --- a/configs/nitrogen6q2g_defconfig
> +++ b/configs/nitrogen6q2g_defconfig
> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
> index 05bf140..c150b97 100644
> --- a/configs/nitrogen6q_defconfig
> +++ b/configs/nitrogen6q_defconfig
> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
> index bb081a2..dfd096d 100644
> --- a/configs/nitrogen6s1g_defconfig
> +++ b/configs/nitrogen6s1g_defconfig
> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
> index 08e91c9..5e2e693 100644
> --- a/configs/nitrogen6s_defconfig
> +++ b/configs/nitrogen6s_defconfig
> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>  CONFIG_G_DNL_VENDOR_NUM=0x0525
>  CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>  CONFIG_OF_LIBFDT=y
> +CONFIG_DISTRO_DEFAULTS=y
> \ No newline at end of file
> diff --git a/doc/README.imx6 b/doc/README.imx6
> index 1823fb2..36452f6 100644
> --- a/doc/README.imx6
> +++ b/doc/README.imx6
> @@ -138,3 +138,50 @@ c
>  The last "c" command tells kermit (from ckermit package in most distros)
>  to switch from command line mode to communication mode, and when the
>  script is finished, the U-Boot prompt is shown in the same shell.
> +
> +3. Using generic distro configuration
> +-------------------------------------
> +
> +In order to simplify the use of various images on various media
> +for imx6 boards, the configuration of the board must follow the
> +generic distro configuration (doc/README.distro).
> +
> +3.1. Setup uboot configuration for your board
> +---------------------------------------------
> +
> +First, you have to set 'CONFIG_DISTRO_DEFAULTS=y' in your board defconfig
> +
> +Some mandatory variable are set in mx6_common.h but can be overwritten like:
> +      - fdtfile with CONFIG_FDTFILE
> +      - fdt_addr_r and fdt_addr with CONFIG_FDTADDR
> +      - ramdisk_addr_r, ramdiskaddr CONFIG_RAMDISKADDR
> +
> +You also have to define BOOT_TARGET_DEVICES with available media.
> +For example added in include/configs/nitrogen6x.h:
> +#define BOOT_TARGET_DEVICES(func) \
> +	func(MMC, mmc, 0) \
> +	func(MMC, mmc, 1) \
> +	func(SATA, sata, 0) \
> +	func(USB, usb, 0) \
> +	func(PXE, pxe, na) \
> +	func(DHCP, dhcp, na)
> +
> +All this configuration should be done before '#include "mx6_common.h"'
> +
> +3.2. Setup your distribution
> +----------------------------
> +
> +Set the partition containing /boot/ bootable.
> +Copy your kernel and device tree in /boot.
> +Create /boot/extlinux/extlinux.conf on your rootfs and fill it according to specification
> +at http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/
> +
> +For example:
> +
> +default Buildroot
> +
> +label Buildroot
> +	kernel /boot/zImage
> +	append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
> +	fdtdir /boot
> +
> diff --git a/include/configs/mx6_common.h b/include/configs/mx6_common.h
> index fb49322..4a665d2 100644
> --- a/include/configs/mx6_common.h
> +++ b/include/configs/mx6_common.h
> @@ -58,6 +58,12 @@
>  #endif
>  #endif
>  #define CONFIG_SYS_LOAD_ADDR	CONFIG_LOADADDR
> +#ifndef CONFIG_FDTADDR
> +#define CONFIG_FDTADDR		0x18000000

I am afraid that this can be a problem. I am not sure that all boards
can share the same address.

On most boards, mx6_common is included at the beginning of the
configuration file. This means that CONFIG_FDTADDR is surely not set,
and it will be set to 0x18000000.

For some boards this could be flawless: for example, I see  the
"aristainetos" board, it uses as address 0x14000000. But it is set
later. It remains just confusing that a CONFIG_FDTADDR is set to a
different address as used.

But for other boards I am quite unsure - it could generate some problems.

> +#endif
> +#ifndef CONFIG_RAMDISKADDR
> +#define CONFIG_RAMDISKADDR	0x13000000
> +#endif
>  
>  /* allow to overwrite serial and ethaddr */
>  #define CONFIG_ENV_OVERWRITE
> @@ -93,4 +99,22 @@
>  #define CONFIG_CMD_FUSE
>  #define CONFIG_MXC_OCOTP
>  
> +#ifdef CONFIG_DISTRO_DEFAULTS
> +#include <config_distro_defaults.h>
> +
> +#include <config_distro_bootcmd.h>
> +
> +#define CONFIG_EXTRA_DEFAULT_ENV_SETTINGS \
> +	"fdtfile=" CONFIG_FDTFILE "\0" \
> +	"fdt_addr_r=" __stringify(CONFIG_FDTADDR) "\0"  \
> +	"fdt_addr=" __stringify(CONFIG_FDTADDR) "\0" \
> +	"kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0"  \
> +	"pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
> +	"scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
> +	"ramdisk_addr_r=" __stringify(CONFIG_RAMDISKADDR) "\0" \
> +	"ramdiskaddr=" __stringify(CONFIG_RAMDISKADDR) "\0" \
> +	BOOTENV
> +
> +#endif
> +
>  #endif
> diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
> index b651eb3..c1a3a47 100644
> --- a/include/configs/nitrogen6x.h
> +++ b/include/configs/nitrogen6x.h
> @@ -10,8 +10,6 @@
>  #ifndef __CONFIG_H
>  #define __CONFIG_H
>  
> -#include "mx6_common.h"
> -
>  #define CONFIG_MACH_TYPE	3769
>  
>  /* Size of malloc() pool */
> @@ -38,9 +36,9 @@
>  /* I2C Configs */
>  #define CONFIG_SYS_I2C
>  #define CONFIG_SYS_I2C_MXC
> -#define CONFIG_SYS_I2C_MXC_I2C1		/* enable I2C bus 1 */
> -#define CONFIG_SYS_I2C_MXC_I2C2		/* enable I2C bus 2 */
> -#define CONFIG_SYS_I2C_MXC_I2C3		/* enable I2C bus 3 */
> +#define CONFIG_SYS_I2C_MXC_I2C1	/* enable I2C bus 1 */
> +#define CONFIG_SYS_I2C_MXC_I2C2	/* enable I2C bus 2 */
> +#define CONFIG_SYS_I2C_MXC_I2C3	/* enable I2C bus 3 */
>  #define CONFIG_SYS_I2C_SPEED		100000
>  #define CONFIG_I2C_EDID
>  
> @@ -113,6 +111,8 @@
>  
>  #define CONFIG_PREBOOT                 ""
>  
> +#ifndef CONFIG_DISTRO_DEFAULTS
> +
>  #ifdef CONFIG_CMD_SATA
>  #define CONFIG_DRIVE_SATA "sata "
>  #else
> @@ -266,6 +266,30 @@
>  	"done\0" \
>  
>  #endif
> +
> +#else
> +
> +#if defined(CONFIG_SABRELITE)
> +#define CONFIG_FDTFILE "imx6q-sabrelite.dtb"
> +#else
> +#define CONFIG_FDTFILE "imx6q-nitrogen6x.dtb"
> +#endif
> +
> +#define BOOT_TARGET_DEVICES(func) \
> +	func(MMC, mmc, 0) \
> +	func(MMC, mmc, 1) \
> +	func(SATA, sata, 0) \
> +	func(USB, usb, 0) \
> +	func(PXE, pxe, na) \
> +	func(DHCP, dhcp, na)
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +	CONFIG_EXTRA_DEFAULT_ENV_SETTINGS
> +
> +#endif
> +
> +#include "mx6_common.h"
> +
>  /* Miscellaneous configurable options */
>  #define CONFIG_SYS_MEMTEST_START       0x10000000
>  #define CONFIG_SYS_MEMTEST_END	       0x10010000
> @@ -327,4 +351,4 @@
>  #define CONFIG_FASTBOOT_BUF_ADDR   CONFIG_SYS_LOAD_ADDR
>  #define CONFIG_FASTBOOT_BUF_SIZE   0x07000000
>  
> -#endif	       /* __CONFIG_H */
> +#endif /* __CONFIG_H */
> 

Best regards,
Stefano Babic
Fabien Lahoudere July 20, 2016, 8:07 a.m. UTC | #2
Hi Stefano,

Thank you for your comments.

On 13/07/2016 16:28, Stefano Babic wrote:
> Hi Fabien,
>
> On 29/06/2016 09:05, Fabien Lahoudere wrote:
>> In order to simplify the use of various images on various media
>> for nitrogen6x, the configuration of the board must follow the
>> generic distro configuration (doc/README.distro).
>>
>> In order to boot your old rootfs, move your kernel and your device
>> tree in /boot/. Then create /boot/extlinux/extlinux.conf with for
>> example:
>>
>> default Buildroot
>>
>> label Buildroot
>> 	kernel /boot/zImage
>> 	append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
>> 	fdtdir /boot
>>
>> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk>
>> ---
>> Changes for V2:
>> 	- reintegration of deleted env
>> 	- changes are applied only if CONFIG_DISTRO_DEFAULTS=y
>>
>> Changes for V3:
>> 	- remove undefined device tree
>> 	
>>   configs/mx6qsabrelite_defconfig |  1 +
>>   configs/nitrogen6dl2g_defconfig |  1 +
>>   configs/nitrogen6dl_defconfig   |  1 +
>>   configs/nitrogen6q2g_defconfig  |  1 +
>>   configs/nitrogen6q_defconfig    |  1 +
>>   configs/nitrogen6s1g_defconfig  |  1 +
>>   configs/nitrogen6s_defconfig    |  1 +
>>   doc/README.imx6                 | 47 +++++++++++++++++++++++++++++++++++++++++
>>   include/configs/mx6_common.h    | 24 +++++++++++++++++++++
>>   include/configs/nitrogen6x.h    | 36 +++++++++++++++++++++++++------
>>   10 files changed, 108 insertions(+), 6 deletions(-)
>>
>> diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
>> index fa6139a..27b64c4 100644
>> --- a/configs/mx6qsabrelite_defconfig
>> +++ b/configs/mx6qsabrelite_defconfig
>> @@ -36,3 +36,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
>> index 02b2462..b1344c6 100644
>> --- a/configs/nitrogen6dl2g_defconfig
>> +++ b/configs/nitrogen6dl2g_defconfig
>> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
>> index 52553f6..f794c08 100644
>> --- a/configs/nitrogen6dl_defconfig
>> +++ b/configs/nitrogen6dl_defconfig
>> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
>> index 11188b7..56cebe0 100644
>> --- a/configs/nitrogen6q2g_defconfig
>> +++ b/configs/nitrogen6q2g_defconfig
>> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
>> index 05bf140..c150b97 100644
>> --- a/configs/nitrogen6q_defconfig
>> +++ b/configs/nitrogen6q_defconfig
>> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
>> index bb081a2..dfd096d 100644
>> --- a/configs/nitrogen6s1g_defconfig
>> +++ b/configs/nitrogen6s1g_defconfig
>> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
>> index 08e91c9..5e2e693 100644
>> --- a/configs/nitrogen6s_defconfig
>> +++ b/configs/nitrogen6s_defconfig
>> @@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
>>   CONFIG_G_DNL_VENDOR_NUM=0x0525
>>   CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
>>   CONFIG_OF_LIBFDT=y
>> +CONFIG_DISTRO_DEFAULTS=y
>> \ No newline at end of file
>> diff --git a/doc/README.imx6 b/doc/README.imx6
>> index 1823fb2..36452f6 100644
>> --- a/doc/README.imx6
>> +++ b/doc/README.imx6
>> @@ -138,3 +138,50 @@ c
>>   The last "c" command tells kermit (from ckermit package in most distros)
>>   to switch from command line mode to communication mode, and when the
>>   script is finished, the U-Boot prompt is shown in the same shell.
>> +
>> +3. Using generic distro configuration
>> +-------------------------------------
>> +
>> +In order to simplify the use of various images on various media
>> +for imx6 boards, the configuration of the board must follow the
>> +generic distro configuration (doc/README.distro).
>> +
>> +3.1. Setup uboot configuration for your board
>> +---------------------------------------------
>> +
>> +First, you have to set 'CONFIG_DISTRO_DEFAULTS=y' in your board defconfig
>> +
>> +Some mandatory variable are set in mx6_common.h but can be overwritten like:
>> +      - fdtfile with CONFIG_FDTFILE
>> +      - fdt_addr_r and fdt_addr with CONFIG_FDTADDR
>> +      - ramdisk_addr_r, ramdiskaddr CONFIG_RAMDISKADDR
>> +
>> +You also have to define BOOT_TARGET_DEVICES with available media.
>> +For example added in include/configs/nitrogen6x.h:
>> +#define BOOT_TARGET_DEVICES(func) \
>> +	func(MMC, mmc, 0) \
>> +	func(MMC, mmc, 1) \
>> +	func(SATA, sata, 0) \
>> +	func(USB, usb, 0) \
>> +	func(PXE, pxe, na) \
>> +	func(DHCP, dhcp, na)
>> +
>> +All this configuration should be done before '#include "mx6_common.h"'
>> +
>> +3.2. Setup your distribution
>> +----------------------------
>> +
>> +Set the partition containing /boot/ bootable.
>> +Copy your kernel and device tree in /boot.
>> +Create /boot/extlinux/extlinux.conf on your rootfs and fill it according to specification
>> +at http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/
>> +
>> +For example:
>> +
>> +default Buildroot
>> +
>> +label Buildroot
>> +	kernel /boot/zImage
>> +	append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
>> +	fdtdir /boot
>> +
>> diff --git a/include/configs/mx6_common.h b/include/configs/mx6_common.h
>> index fb49322..4a665d2 100644
>> --- a/include/configs/mx6_common.h
>> +++ b/include/configs/mx6_common.h
>> @@ -58,6 +58,12 @@
>>   #endif
>>   #endif
>>   #define CONFIG_SYS_LOAD_ADDR	CONFIG_LOADADDR
>> +#ifndef CONFIG_FDTADDR
>> +#define CONFIG_FDTADDR		0x18000000
> I am afraid that this can be a problem. I am not sure that all boards
> can share the same address.
>
> On most boards, mx6_common is included at the beginning of the
> configuration file. This means that CONFIG_FDTADDR is surely not set,
> and it will be set to 0x18000000.
>
> For some boards this could be flawless: for example, I see  the
> "aristainetos" board, it uses as address 0x14000000. But it is set
> later. It remains just confusing that a CONFIG_FDTADDR is set to a
> different address as used.
>
> But for other boards I am quite unsure - it could generate some problems.
I will remove those lines that just lead to a compilation error only if
we forgot to set CONFIG_FDTADDR when CONFIG_DISTRO_DEFAULTS=y.
Is this change acceptable for you?
>> +#endif
>> +#ifndef CONFIG_RAMDISKADDR
>> +#define CONFIG_RAMDISKADDR	0x13000000
>> +#endif
>>   
>>   /* allow to overwrite serial and ethaddr */
>>   #define CONFIG_ENV_OVERWRITE
>> @@ -93,4 +99,22 @@
>>   #define CONFIG_CMD_FUSE
>>   #define CONFIG_MXC_OCOTP
>>   
>> +#ifdef CONFIG_DISTRO_DEFAULTS
>> +#include <config_distro_defaults.h>
>> +
>> +#include <config_distro_bootcmd.h>
>> +
>> +#define CONFIG_EXTRA_DEFAULT_ENV_SETTINGS \
>> +	"fdtfile=" CONFIG_FDTFILE "\0" \
>> +	"fdt_addr_r=" __stringify(CONFIG_FDTADDR) "\0"  \
>> +	"fdt_addr=" __stringify(CONFIG_FDTADDR) "\0" \
>> +	"kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0"  \
>> +	"pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
>> +	"scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
>> +	"ramdisk_addr_r=" __stringify(CONFIG_RAMDISKADDR) "\0" \
>> +	"ramdiskaddr=" __stringify(CONFIG_RAMDISKADDR) "\0" \
>> +	BOOTENV
>> +
>> +#endif
>> +
>>   #endif
>> diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
>> index b651eb3..c1a3a47 100644
>> --- a/include/configs/nitrogen6x.h
>> +++ b/include/configs/nitrogen6x.h
>> @@ -10,8 +10,6 @@
>>   #ifndef __CONFIG_H
>>   #define __CONFIG_H
>>   
>> -#include "mx6_common.h"
>> -
>>   #define CONFIG_MACH_TYPE	3769
>>   
>>   /* Size of malloc() pool */
>> @@ -38,9 +36,9 @@
>>   /* I2C Configs */
>>   #define CONFIG_SYS_I2C
>>   #define CONFIG_SYS_I2C_MXC
>> -#define CONFIG_SYS_I2C_MXC_I2C1		/* enable I2C bus 1 */
>> -#define CONFIG_SYS_I2C_MXC_I2C2		/* enable I2C bus 2 */
>> -#define CONFIG_SYS_I2C_MXC_I2C3		/* enable I2C bus 3 */
>> +#define CONFIG_SYS_I2C_MXC_I2C1	/* enable I2C bus 1 */
>> +#define CONFIG_SYS_I2C_MXC_I2C2	/* enable I2C bus 2 */
>> +#define CONFIG_SYS_I2C_MXC_I2C3	/* enable I2C bus 3 */
>>   #define CONFIG_SYS_I2C_SPEED		100000
>>   #define CONFIG_I2C_EDID
>>   
>> @@ -113,6 +111,8 @@
>>   
>>   #define CONFIG_PREBOOT                 ""
>>   
>> +#ifndef CONFIG_DISTRO_DEFAULTS
>> +
>>   #ifdef CONFIG_CMD_SATA
>>   #define CONFIG_DRIVE_SATA "sata "
>>   #else
>> @@ -266,6 +266,30 @@
>>   	"done\0" \
>>   
>>   #endif
>> +
>> +#else
>> +
>> +#if defined(CONFIG_SABRELITE)
>> +#define CONFIG_FDTFILE "imx6q-sabrelite.dtb"
>> +#else
>> +#define CONFIG_FDTFILE "imx6q-nitrogen6x.dtb"
>> +#endif
>> +
>> +#define BOOT_TARGET_DEVICES(func) \
>> +	func(MMC, mmc, 0) \
>> +	func(MMC, mmc, 1) \
>> +	func(SATA, sata, 0) \
>> +	func(USB, usb, 0) \
>> +	func(PXE, pxe, na) \
>> +	func(DHCP, dhcp, na)
>> +
>> +#define CONFIG_EXTRA_ENV_SETTINGS \
>> +	CONFIG_EXTRA_DEFAULT_ENV_SETTINGS
>> +
>> +#endif
>> +
>> +#include "mx6_common.h"
>> +
>>   /* Miscellaneous configurable options */
>>   #define CONFIG_SYS_MEMTEST_START       0x10000000
>>   #define CONFIG_SYS_MEMTEST_END	       0x10010000
>> @@ -327,4 +351,4 @@
>>   #define CONFIG_FASTBOOT_BUF_ADDR   CONFIG_SYS_LOAD_ADDR
>>   #define CONFIG_FASTBOOT_BUF_SIZE   0x07000000
>>   
>> -#endif	       /* __CONFIG_H */
>> +#endif /* __CONFIG_H */
>>
> Best regards,
> Stefano Babic
>
Stefano Babic July 21, 2016, 10:01 a.m. UTC | #3
Hi Fabien,

On 20/07/2016 10:07, Fabien Lahoudere wrote:
>
>> On most boards, mx6_common is included at the beginning of the
>> configuration file. This means that CONFIG_FDTADDR is surely not set,
>> and it will be set to 0x18000000.
>>
>> For some boards this could be flawless: for example, I see  the
>> "aristainetos" board, it uses as address 0x14000000. But it is set
>> later. It remains just confusing that a CONFIG_FDTADDR is set to a
>> different address as used.
>>
>> But for other boards I am quite unsure - it could generate some problems.
> I will remove those lines that just lead to a compilation error only if
> we forgot to set CONFIG_FDTADDR when CONFIG_DISTRO_DEFAULTS=y.
> Is this change acceptable for you?

I agree - this lets boards that do not use CONFIG_DISTRO unchanged.

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
index fa6139a..27b64c4 100644
--- a/configs/mx6qsabrelite_defconfig
+++ b/configs/mx6qsabrelite_defconfig
@@ -36,3 +36,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
index 02b2462..b1344c6 100644
--- a/configs/nitrogen6dl2g_defconfig
+++ b/configs/nitrogen6dl2g_defconfig
@@ -34,3 +34,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
index 52553f6..f794c08 100644
--- a/configs/nitrogen6dl_defconfig
+++ b/configs/nitrogen6dl_defconfig
@@ -34,3 +34,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
index 11188b7..56cebe0 100644
--- a/configs/nitrogen6q2g_defconfig
+++ b/configs/nitrogen6q2g_defconfig
@@ -34,3 +34,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
index 05bf140..c150b97 100644
--- a/configs/nitrogen6q_defconfig
+++ b/configs/nitrogen6q_defconfig
@@ -34,3 +34,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
index bb081a2..dfd096d 100644
--- a/configs/nitrogen6s1g_defconfig
+++ b/configs/nitrogen6s1g_defconfig
@@ -34,3 +34,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
index 08e91c9..5e2e693 100644
--- a/configs/nitrogen6s_defconfig
+++ b/configs/nitrogen6s_defconfig
@@ -34,3 +34,4 @@  CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/doc/README.imx6 b/doc/README.imx6
index 1823fb2..36452f6 100644
--- a/doc/README.imx6
+++ b/doc/README.imx6
@@ -138,3 +138,50 @@  c
 The last "c" command tells kermit (from ckermit package in most distros)
 to switch from command line mode to communication mode, and when the
 script is finished, the U-Boot prompt is shown in the same shell.
+
+3. Using generic distro configuration
+-------------------------------------
+
+In order to simplify the use of various images on various media
+for imx6 boards, the configuration of the board must follow the
+generic distro configuration (doc/README.distro).
+
+3.1. Setup uboot configuration for your board
+---------------------------------------------
+
+First, you have to set 'CONFIG_DISTRO_DEFAULTS=y' in your board defconfig
+
+Some mandatory variable are set in mx6_common.h but can be overwritten like:
+      - fdtfile with CONFIG_FDTFILE
+      - fdt_addr_r and fdt_addr with CONFIG_FDTADDR
+      - ramdisk_addr_r, ramdiskaddr CONFIG_RAMDISKADDR
+
+You also have to define BOOT_TARGET_DEVICES with available media.
+For example added in include/configs/nitrogen6x.h:
+#define BOOT_TARGET_DEVICES(func) \
+	func(MMC, mmc, 0) \
+	func(MMC, mmc, 1) \
+	func(SATA, sata, 0) \
+	func(USB, usb, 0) \
+	func(PXE, pxe, na) \
+	func(DHCP, dhcp, na)
+
+All this configuration should be done before '#include "mx6_common.h"'
+
+3.2. Setup your distribution
+----------------------------
+
+Set the partition containing /boot/ bootable.
+Copy your kernel and device tree in /boot.
+Create /boot/extlinux/extlinux.conf on your rootfs and fill it according to specification
+at http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/
+
+For example:
+
+default Buildroot
+
+label Buildroot
+	kernel /boot/zImage
+	append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
+	fdtdir /boot
+
diff --git a/include/configs/mx6_common.h b/include/configs/mx6_common.h
index fb49322..4a665d2 100644
--- a/include/configs/mx6_common.h
+++ b/include/configs/mx6_common.h
@@ -58,6 +58,12 @@ 
 #endif
 #endif
 #define CONFIG_SYS_LOAD_ADDR	CONFIG_LOADADDR
+#ifndef CONFIG_FDTADDR
+#define CONFIG_FDTADDR		0x18000000
+#endif
+#ifndef CONFIG_RAMDISKADDR
+#define CONFIG_RAMDISKADDR	0x13000000
+#endif
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
@@ -93,4 +99,22 @@ 
 #define CONFIG_CMD_FUSE
 #define CONFIG_MXC_OCOTP
 
+#ifdef CONFIG_DISTRO_DEFAULTS
+#include <config_distro_defaults.h>
+
+#include <config_distro_bootcmd.h>
+
+#define CONFIG_EXTRA_DEFAULT_ENV_SETTINGS \
+	"fdtfile=" CONFIG_FDTFILE "\0" \
+	"fdt_addr_r=" __stringify(CONFIG_FDTADDR) "\0"  \
+	"fdt_addr=" __stringify(CONFIG_FDTADDR) "\0" \
+	"kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0"  \
+	"pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
+	"scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
+	"ramdisk_addr_r=" __stringify(CONFIG_RAMDISKADDR) "\0" \
+	"ramdiskaddr=" __stringify(CONFIG_RAMDISKADDR) "\0" \
+	BOOTENV
+
+#endif
+
 #endif
diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
index b651eb3..c1a3a47 100644
--- a/include/configs/nitrogen6x.h
+++ b/include/configs/nitrogen6x.h
@@ -10,8 +10,6 @@ 
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-#include "mx6_common.h"
-
 #define CONFIG_MACH_TYPE	3769
 
 /* Size of malloc() pool */
@@ -38,9 +36,9 @@ 
 /* I2C Configs */
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_I2C_MXC
-#define CONFIG_SYS_I2C_MXC_I2C1		/* enable I2C bus 1 */
-#define CONFIG_SYS_I2C_MXC_I2C2		/* enable I2C bus 2 */
-#define CONFIG_SYS_I2C_MXC_I2C3		/* enable I2C bus 3 */
+#define CONFIG_SYS_I2C_MXC_I2C1	/* enable I2C bus 1 */
+#define CONFIG_SYS_I2C_MXC_I2C2	/* enable I2C bus 2 */
+#define CONFIG_SYS_I2C_MXC_I2C3	/* enable I2C bus 3 */
 #define CONFIG_SYS_I2C_SPEED		100000
 #define CONFIG_I2C_EDID
 
@@ -113,6 +111,8 @@ 
 
 #define CONFIG_PREBOOT                 ""
 
+#ifndef CONFIG_DISTRO_DEFAULTS
+
 #ifdef CONFIG_CMD_SATA
 #define CONFIG_DRIVE_SATA "sata "
 #else
@@ -266,6 +266,30 @@ 
 	"done\0" \
 
 #endif
+
+#else
+
+#if defined(CONFIG_SABRELITE)
+#define CONFIG_FDTFILE "imx6q-sabrelite.dtb"
+#else
+#define CONFIG_FDTFILE "imx6q-nitrogen6x.dtb"
+#endif
+
+#define BOOT_TARGET_DEVICES(func) \
+	func(MMC, mmc, 0) \
+	func(MMC, mmc, 1) \
+	func(SATA, sata, 0) \
+	func(USB, usb, 0) \
+	func(PXE, pxe, na) \
+	func(DHCP, dhcp, na)
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+	CONFIG_EXTRA_DEFAULT_ENV_SETTINGS
+
+#endif
+
+#include "mx6_common.h"
+
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_MEMTEST_START       0x10000000
 #define CONFIG_SYS_MEMTEST_END	       0x10010000
@@ -327,4 +351,4 @@ 
 #define CONFIG_FASTBOOT_BUF_ADDR   CONFIG_SYS_LOAD_ADDR
 #define CONFIG_FASTBOOT_BUF_SIZE   0x07000000
 
-#endif	       /* __CONFIG_H */
+#endif /* __CONFIG_H */