All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained
@ 2018-12-05  0:15 Daniel Evans
  2018-12-05 14:36 ` Eugen.Hristev at microchip.com
  2018-12-08 19:49 ` [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled Derald D. Woods
  0 siblings, 2 replies; 32+ messages in thread
From: Daniel Evans @ 2018-12-05  0:15 UTC (permalink / raw)
  To: u-boot

Trying to get uboot SPL boot.bin to run on an SD card for the sama5d3 xplained board.  All I get is RomBOOT and no other messages.  I have tried throwing in a couple test pins to toggle in board_early_init_f but still not getting any debug.  I can get at91bootstrap to produce a boot.bin that works on the sama5d3 xplained so I am assuming I don’t have a bad board.  My boot partition is FAT16.  To compile I just run the following on Debian Buster :

make mrproper
make sama5d3_xplained_mmc_defconfig
make

Cross Compiler is gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf

When finished compiling I just copy the boot.bin to my BOOT partition.

Has to be something obvious that I am missing.  Any insight is appreciated…

Dan

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained
  2018-12-05  0:15 [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained Daniel Evans
@ 2018-12-05 14:36 ` Eugen.Hristev at microchip.com
  2018-12-05 18:08   ` Daniel Evans
  2018-12-05 20:38   ` Robert Nelson
  2018-12-08 19:49 ` [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled Derald D. Woods
  1 sibling, 2 replies; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2018-12-05 14:36 UTC (permalink / raw)
  To: u-boot



On 05.12.2018 02:15, Daniel Evans wrote:
> Trying to get uboot SPL boot.bin to run on an SD card for the sama5d3 xplained board.  All I get is RomBOOT and no other messages.  I have tried throwing in a couple test pins to toggle in board_early_init_f but still not getting any debug.  I can get at91bootstrap to produce a boot.bin that works on the sama5d3 xplained so I am assuming I don’t have a bad board.  My boot partition is FAT16.  To compile I just run the following on Debian Buster :
> 
> make mrproper
> make sama5d3_xplained_mmc_defconfig
> make
> 
> Cross Compiler is gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf
> 
> When finished compiling I just copy the boot.bin to my BOOT partition.
> 
> Has to be something obvious that I am missing.  Any insight is appreciated…

Hello,

Check the datasheet for sama5d3 SoC section 11.4.3. - Valid code 
detection (my datasheet is dated 2 Feb 2016 if it helps)

Basically the vector 6 needs to have hardcoded the binary size. Are you 
doing that ? Otherwise the RomBOOT code will consider your binary as faulty.

PS. make sure endianess is right, use a good hexeditor...

Hope this helps,
Eugen

> 
> Dan
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained
  2018-12-05 14:36 ` Eugen.Hristev at microchip.com
@ 2018-12-05 18:08   ` Daniel Evans
  2018-12-05 20:38   ` Robert Nelson
  1 sibling, 0 replies; 32+ messages in thread
From: Daniel Evans @ 2018-12-05 18:08 UTC (permalink / raw)
  To: u-boot

Thanks,

That put me on the right path.  For some reason the nandheader is being added to the top of the boot.bin for the mmc/SD build.

$ ls -l boot.bin
-rw-r--r-- 1 nelson nelson 62686 Dec  5 12:25 boot.bin
$ hexdump boot.bin | head
0000000 2405 c090 2405 c090 2405 c090 2405 c090
*
00000d0 000f ea00 f014 e59f f014 e59f f014 e59f
00000e0 f014 e59f f40e 0000 f014 e59f f014 e59f
00000f0 0040 0030 0040 0030 0040 0030 0040 0030
0000100 0040 0030 0040 0030 0040 0030 beef dead
0000110 fffe eaff 002a ea00 0000 e10f 101f e200
0000120 001a e331 001f 13c0 0013 1380 00c0 e380
0000130 f000 e129 0f10 ee11 0a02 e3c0 0f10 ee01
0000140 0078 e59f 0f10 ee0c 0006 eb00 001a eb00

So I just removed it and then you can see the size is correct once removed (0x0000F40E):

$ dd bs=208 skip=1 if=boot.bin of=bootShort.bin
$ hexdump bootShort.bin | head
0000000 000f ea00 f014 e59f f014 e59f f014 e59f
0000010 f014 e59f f40e 0000 f014 e59f f014 e59f
0000020 0040 0030 0040 0030 0040 0030 0040 0030
0000030 0040 0030 0040 0030 0040 0030 beef dead
0000040 fffe eaff 002a ea00 0000 e10f 101f e200
0000050 001a e331 001f 13c0 0013 1380 00c0 e380
0000060 f000 e129 0f10 ee11 0a02 e3c0 0f10 ee01
0000070 0078 e59f 0f10 ee0c 0006 eb00 001a eb00
0000080 01b6 eb00 0f15 ee07 0f9a ee07 0f95 ee07
0000090 ff1e e12f ffeb eaff 0000 e3a0 0f17 ee08
$ ls -l bootShort.bin
-rw-r--r-- 1 nelson nelson 62478 Dec  5 12:54 bootShort.bin

Any insight into why that is being added at the beginning?  Is there a configuration that needs tweaking or to be removed?

Dan

> On Dec 5, 2018, at 7:36 AM, <Eugen.Hristev@microchip.com> <Eugen.Hristev@microchip.com> wrote:
> 
> 
> 
> On 05.12.2018 02:15, Daniel Evans wrote:
>> Trying to get uboot SPL boot.bin to run on an SD card for the sama5d3 xplained board.  All I get is RomBOOT and no other messages.  I have tried throwing in a couple test pins to toggle in board_early_init_f but still not getting any debug.  I can get at91bootstrap to produce a boot.bin that works on the sama5d3 xplained so I am assuming I don’t have a bad board.  My boot partition is FAT16.  To compile I just run the following on Debian Buster :
>> 
>> make mrproper
>> make sama5d3_xplained_mmc_defconfig
>> make
>> 
>> Cross Compiler is gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf
>> 
>> When finished compiling I just copy the boot.bin to my BOOT partition.
>> 
>> Has to be something obvious that I am missing.  Any insight is appreciated…
> 
> Hello,
> 
> Check the datasheet for sama5d3 SoC section 11.4.3. - Valid code 
> detection (my datasheet is dated 2 Feb 2016 if it helps)
> 
> Basically the vector 6 needs to have hardcoded the binary size. Are you 
> doing that ? Otherwise the RomBOOT code will consider your binary as faulty.
> 
> PS. make sure endianess is right, use a good hexeditor...
> 
> Hope this helps,
> Eugen
> 
>> 
>> Dan
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
>> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained
  2018-12-05 14:36 ` Eugen.Hristev at microchip.com
  2018-12-05 18:08   ` Daniel Evans
@ 2018-12-05 20:38   ` Robert Nelson
  2018-12-06  8:02     ` Eugen.Hristev at microchip.com
  1 sibling, 1 reply; 32+ messages in thread
From: Robert Nelson @ 2018-12-05 20:38 UTC (permalink / raw)
  To: u-boot

On Wed, Dec 5, 2018 at 8:37 AM <Eugen.Hristev@microchip.com> wrote:
>
>
>
> On 05.12.2018 02:15, Daniel Evans wrote:
> > Trying to get uboot SPL boot.bin to run on an SD card for the sama5d3 xplained board.  All I get is RomBOOT and no other messages.  I have tried throwing in a couple test pins to toggle in board_early_init_f but still not getting any debug.  I can get at91bootstrap to produce a boot.bin that works on the sama5d3 xplained so I am assuming I don’t have a bad board.  My boot partition is FAT16.  To compile I just run the following on Debian Buster :
> >
> > make mrproper
> > make sama5d3_xplained_mmc_defconfig
> > make
> >
> > Cross Compiler is gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf
> >
> > When finished compiling I just copy the boot.bin to my BOOT partition.
> >
> > Has to be something obvious that I am missing.  Any insight is appreciated…
>
> Hello,
>
> Check the datasheet for sama5d3 SoC section 11.4.3. - Valid code
> detection (my datasheet is dated 2 Feb 2016 if it helps)
>
> Basically the vector 6 needs to have hardcoded the binary size. Are you
> doing that ? Otherwise the RomBOOT code will consider your binary as faulty.
>
> PS. make sure endianess is right, use a good hexeditor...
>
> Hope this helps,
> Eugen

Okay, just finished my git bisect, this turned out to be a miss-placed
#endif when Wenyou did the "configs: at91: Remove
CONFIG_SYS_EXTRA_OPTIONS assignment" patch:

https://github.com/u-boot/u-boot/commit/5541543f686b43210fb92181003ff7175d4ab036#diff-651b6ffe22be4df459343a0d6d25154e

=> RomBOOT
<debug_uart>
U-Boot spl 2019.01-rc1-00021-g2e2a2a5d4f-dirty (Dec 05 2018 - 14:30:22 -0600)
Trying to boot from MMC1
<debug_uart>

U-Boot 2019.01-rc1-00021-g2e2a2a5d4f-dirty (Dec 05 2018 - 14:30:22 -0600)

<snip>

diff --git a/include/configs/sama5d3_xplained.h
b/include/configs/sama5d3_xplained.h
index d0d8087ca3..f87713319d 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -80,7 +80,6 @@
 #elif CONFIG_NAND_BOOT
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
-#endif
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE      0x800
@@ -91,3 +90,5 @@
 #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

 #endif
+
+#endif

Before:
#ifdef CONFIG_SYS_USE_MMC
#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"

#elif CONFIG_SYS_USE_NANDFLASH
#define CONFIG_SPL_NAND_DRIVERS
#define CONFIG_SPL_NAND_BASE
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
#define CONFIG_SYS_NAND_5_ADDR_CYCLE
#define CONFIG_SYS_NAND_PAGE_SIZE 0x800
#define CONFIG_SYS_NAND_PAGE_COUNT 64
#define CONFIG_SYS_NAND_OOBSIZE 64
#define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
#define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

#endif

After:
#ifdef CONFIG_SD_BOOT
#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"

#elif CONFIG_NAND_BOOT
#define CONFIG_SPL_NAND_DRIVERS
#define CONFIG_SPL_NAND_BASE
#endif
<------------------------------------------------- WHY HERE????
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
#define CONFIG_SYS_NAND_5_ADDR_CYCLE
#define CONFIG_SYS_NAND_PAGE_SIZE 0x800
#define CONFIG_SYS_NAND_PAGE_COUNT 64
#define CONFIG_SYS_NAND_OOBSIZE 64
#define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
#define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

#endif

Regards,

-- 
Robert Nelson
https://rcn-ee.com/

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained
  2018-12-05 20:38   ` Robert Nelson
@ 2018-12-06  8:02     ` Eugen.Hristev at microchip.com
  2018-12-08  2:37       ` Derald D. Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2018-12-06  8:02 UTC (permalink / raw)
  To: u-boot



On 05.12.2018 22:38, Robert Nelson wrote:
> On Wed, Dec 5, 2018 at 8:37 AM <Eugen.Hristev@microchip.com> wrote:
>>
>>
>>
>> On 05.12.2018 02:15, Daniel Evans wrote:
>>> Trying to get uboot SPL boot.bin to run on an SD card for the sama5d3 xplained board.  All I get is RomBOOT and no other messages.  I have tried throwing in a couple test pins to toggle in board_early_init_f but still not getting any debug.  I can get at91bootstrap to produce a boot.bin that works on the sama5d3 xplained so I am assuming I don’t have a bad board.  My boot partition is FAT16.  To compile I just run the following on Debian Buster :
>>>
>>> make mrproper
>>> make sama5d3_xplained_mmc_defconfig
>>> make
>>>
>>> Cross Compiler is gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf
>>>
>>> When finished compiling I just copy the boot.bin to my BOOT partition.
>>>
>>> Has to be something obvious that I am missing.  Any insight is appreciated…
>>
>> Hello,
>>
>> Check the datasheet for sama5d3 SoC section 11.4.3. - Valid code
>> detection (my datasheet is dated 2 Feb 2016 if it helps)
>>
>> Basically the vector 6 needs to have hardcoded the binary size. Are you
>> doing that ? Otherwise the RomBOOT code will consider your binary as faulty.
>>
>> PS. make sure endianess is right, use a good hexeditor...
>>
>> Hope this helps,
>> Eugen
> 
> Okay, just finished my git bisect, this turned out to be a miss-placed
> #endif when Wenyou did the "configs: at91: Remove
> CONFIG_SYS_EXTRA_OPTIONS assignment" patch:
> 
> https://github.com/u-boot/u-boot/commit/5541543f686b43210fb92181003ff7175d4ab036#diff-651b6ffe22be4df459343a0d6d25154e

Interesting find, is this wrongly done for all the boards in the commit 
or just sama5d3_xplained ?

Feel free to submit a patch if this fixes the issue, and we will review it.

Thanks !


> 
> => RomBOOT
> <debug_uart>
> U-Boot spl 2019.01-rc1-00021-g2e2a2a5d4f-dirty (Dec 05 2018 - 14:30:22 -0600)
> Trying to boot from MMC1
> <debug_uart>
> 
> U-Boot 2019.01-rc1-00021-g2e2a2a5d4f-dirty (Dec 05 2018 - 14:30:22 -0600)
> 
> <snip>
> 
> diff --git a/include/configs/sama5d3_xplained.h
> b/include/configs/sama5d3_xplained.h
> index d0d8087ca3..f87713319d 100644
> --- a/include/configs/sama5d3_xplained.h
> +++ b/include/configs/sama5d3_xplained.h
> @@ -80,7 +80,6 @@
>   #elif CONFIG_NAND_BOOT
>   #define CONFIG_SPL_NAND_DRIVERS
>   #define CONFIG_SPL_NAND_BASE
> -#endif
>   #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
>   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>   #define CONFIG_SYS_NAND_PAGE_SIZE      0x800
> @@ -91,3 +90,5 @@
>   #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
>   #endif
> +
> +#endif
> 
> Before:
> #ifdef CONFIG_SYS_USE_MMC
> #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
> #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
> 
> #elif CONFIG_SYS_USE_NANDFLASH
> #define CONFIG_SPL_NAND_DRIVERS
> #define CONFIG_SPL_NAND_BASE
> #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> #define CONFIG_SYS_NAND_PAGE_SIZE 0x800
> #define CONFIG_SYS_NAND_PAGE_COUNT 64
> #define CONFIG_SYS_NAND_OOBSIZE 64
> #define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
> #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
> #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
> #endif
> 
> After:
> #ifdef CONFIG_SD_BOOT
> #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
> #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
> 
> #elif CONFIG_NAND_BOOT
> #define CONFIG_SPL_NAND_DRIVERS
> #define CONFIG_SPL_NAND_BASE
> #endif
> <------------------------------------------------- WHY HERE????
> #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> #define CONFIG_SYS_NAND_PAGE_SIZE 0x800
> #define CONFIG_SYS_NAND_PAGE_COUNT 64
> #define CONFIG_SYS_NAND_OOBSIZE 64
> #define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
> #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
> #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
> #endif
> 
> Regards,
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained
  2018-12-06  8:02     ` Eugen.Hristev at microchip.com
@ 2018-12-08  2:37       ` Derald D. Woods
  0 siblings, 0 replies; 32+ messages in thread
From: Derald D. Woods @ 2018-12-08  2:37 UTC (permalink / raw)
  To: u-boot

On Thu, Dec 06, 2018 at 08:02:19AM +0000, Eugen.Hristev at microchip.com wrote:
> 
> 
> On 05.12.2018 22:38, Robert Nelson wrote:
> > On Wed, Dec 5, 2018 at 8:37 AM <Eugen.Hristev@microchip.com> wrote:
> >>
> >>
> >>
> >> On 05.12.2018 02:15, Daniel Evans wrote:
> >>> Trying to get uboot SPL boot.bin to run on an SD card for the sama5d3 xplained board.  All I get is RomBOOT and no other messages.  I have tried throwing in a couple test pins to toggle in board_early_init_f but still not getting any debug.  I can get at91bootstrap to produce a boot.bin that works on the sama5d3 xplained so I am assuming I don’t have a bad board.  My boot partition is FAT16.  To compile I just run the following on Debian Buster :
> >>>
> >>> make mrproper
> >>> make sama5d3_xplained_mmc_defconfig
> >>> make
> >>>
> >>> Cross Compiler is gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf
> >>>
> >>> When finished compiling I just copy the boot.bin to my BOOT partition.
> >>>
> >>> Has to be something obvious that I am missing.  Any insight is appreciated…
> >>
> >> Hello,
> >>
> >> Check the datasheet for sama5d3 SoC section 11.4.3. - Valid code
> >> detection (my datasheet is dated 2 Feb 2016 if it helps)
> >>
> >> Basically the vector 6 needs to have hardcoded the binary size. Are you
> >> doing that ? Otherwise the RomBOOT code will consider your binary as faulty.
> >>
> >> PS. make sure endianess is right, use a good hexeditor...
> >>
> >> Hope this helps,
> >> Eugen
> > 
> > Okay, just finished my git bisect, this turned out to be a miss-placed
> > #endif when Wenyou did the "configs: at91: Remove
> > CONFIG_SYS_EXTRA_OPTIONS assignment" patch:
> > 
> > https://github.com/u-boot/u-boot/commit/5541543f686b43210fb92181003ff7175d4ab036#diff-651b6ffe22be4df459343a0d6d25154e
> 
> Interesting find, is this wrongly done for all the boards in the commit 
> or just sama5d3_xplained ?
> 
> Feel free to submit a patch if this fixes the issue, and we will review it.
> 
> Thanks !
> 

Would this be an acceptable alternative?

---8<-------------------------------------------------------------------
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
 MKIMAGEFLAGS_boot.bin = -T atmelimage
 
 ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
+ifneq ($(CONFIG_SD_BOOT),y)
 MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
 
 boot.bin: $(obj)/../tools/atmel_pmecc_params
 endif
+endif
 
 boot.bin: $(obj)/u-boot-spl.bin FORCE
        $(call if_changed,mkimage)
---8<-------------------------------------------------------------------

It guards the modification of 'boot.bin'@the build location. Also, as
Kconfig items are cleaned-up, the guard will still hold.

I can submit a proper patch, if this is reasonable.

Derald

> 
> > 
> > => RomBOOT
> > <debug_uart>
> > U-Boot spl 2019.01-rc1-00021-g2e2a2a5d4f-dirty (Dec 05 2018 - 14:30:22 -0600)
> > Trying to boot from MMC1
> > <debug_uart>
> > 
> > U-Boot 2019.01-rc1-00021-g2e2a2a5d4f-dirty (Dec 05 2018 - 14:30:22 -0600)
> > 
> > <snip>
> > 
> > diff --git a/include/configs/sama5d3_xplained.h
> > b/include/configs/sama5d3_xplained.h
> > index d0d8087ca3..f87713319d 100644
> > --- a/include/configs/sama5d3_xplained.h
> > +++ b/include/configs/sama5d3_xplained.h
> > @@ -80,7 +80,6 @@
> >   #elif CONFIG_NAND_BOOT
> >   #define CONFIG_SPL_NAND_DRIVERS
> >   #define CONFIG_SPL_NAND_BASE
> > -#endif
> >   #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
> >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >   #define CONFIG_SYS_NAND_PAGE_SIZE      0x800
> > @@ -91,3 +90,5 @@
> >   #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> > 
> >   #endif
> > +
> > +#endif
> > 
> > Before:
> > #ifdef CONFIG_SYS_USE_MMC
> > #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
> > #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
> > 
> > #elif CONFIG_SYS_USE_NANDFLASH
> > #define CONFIG_SPL_NAND_DRIVERS
> > #define CONFIG_SPL_NAND_BASE
> > #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> > #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> > #define CONFIG_SYS_NAND_PAGE_SIZE 0x800
> > #define CONFIG_SYS_NAND_PAGE_COUNT 64
> > #define CONFIG_SYS_NAND_OOBSIZE 64
> > #define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
> > #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
> > #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> > 
> > #endif
> > 
> > After:
> > #ifdef CONFIG_SD_BOOT
> > #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
> > #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
> > 
> > #elif CONFIG_NAND_BOOT
> > #define CONFIG_SPL_NAND_DRIVERS
> > #define CONFIG_SPL_NAND_BASE
> > #endif
> > <------------------------------------------------- WHY HERE????
> > #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> > #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> > #define CONFIG_SYS_NAND_PAGE_SIZE 0x800
> > #define CONFIG_SYS_NAND_PAGE_COUNT 64
> > #define CONFIG_SYS_NAND_OOBSIZE 64
> > #define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
> > #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
> > #define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> > 
> > #endif
> > 
> > Regards,
> > 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-05  0:15 [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained Daniel Evans
  2018-12-05 14:36 ` Eugen.Hristev at microchip.com
@ 2018-12-08 19:49 ` Derald D. Woods
  2018-12-10  8:32   ` Eugen.Hristev at microchip.com
  1 sibling, 1 reply; 32+ messages in thread
From: Derald D. Woods @ 2018-12-08 19:49 UTC (permalink / raw)
  To: u-boot

On AT91 platforms configured for SD_BOOT, this commit avoids the
generation of the PMECC header used for booting from NAND flash. This
issue was found by attempting to boot the SAMA5D3-XPLD board with the
'sama5d3_xplained_mmc_defconfig'.

[PMECC Reference]
http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap

[Mailing List Thread]
https://lists.denx.de/pipermail/u-boot/2018-December/350666.html

Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
Reported-by: Daniel Evans <photonthunder@gmail.com>
Cc: Robert Nelson <robertcnelson@gmail.com>
Cc: Eugen Hristev <eugen.hristev@microchip.com>
Cc: Wenyou Yang <wenyou.yang@microchip.com>
Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
---
 scripts/Makefile.spl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 22bd8f7c27..e727cb610f 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
 MKIMAGEFLAGS_boot.bin = -T atmelimage
 
 ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
+ifneq ($(CONFIG_SD_BOOT),y)
 MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
 
 boot.bin: $(obj)/../tools/atmel_pmecc_params
 endif
+endif
 
 boot.bin: $(obj)/u-boot-spl.bin FORCE
 	$(call if_changed,mkimage)
-- 
2.19.2

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-08 19:49 ` [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled Derald D. Woods
@ 2018-12-10  8:32   ` Eugen.Hristev at microchip.com
  2018-12-10 13:01     ` Derald D. Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2018-12-10  8:32 UTC (permalink / raw)
  To: u-boot



On 08.12.2018 21:49, Derald D. Woods wrote:
> On AT91 platforms configured for SD_BOOT, this commit avoids the
> generation of the PMECC header used for booting from NAND flash. This
> issue was found by attempting to boot the SAMA5D3-XPLD board with the
> 'sama5d3_xplained_mmc_defconfig'.
> 
> [PMECC Reference]
> http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> 
> [Mailing List Thread]
> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> 
> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
> Reported-by: Daniel Evans <photonthunder@gmail.com>
> Cc: Robert Nelson <robertcnelson@gmail.com>
> Cc: Eugen Hristev <eugen.hristev@microchip.com>
> Cc: Wenyou Yang <wenyou.yang@microchip.com>
> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
> ---
>   scripts/Makefile.spl | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index 22bd8f7c27..e727cb610f 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
>   MKIMAGEFLAGS_boot.bin = -T atmelimage
>   
>   ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> +ifneq ($(CONFIG_SD_BOOT),y)

Hi Derald,

Thanks for your patch, however, I don't like that we do not use the 
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER anymore... isn't this config 
supposed to say whether we are going to generate the header or not ?

Checking if "not sd-boot" doesn't look like a good option... we may use 
SPI boot or QSPI or some other type at some point and the issue will 
still be there.

I would rather fix the original patch by Wenyou, namely move the #ifdef 
below to not have the GENERATE_ATMEL_PMECC enabled for SDBOOT.

Does this sound good for you?

Thanks again,

Eugen

>   MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
>   
>   boot.bin: $(obj)/../tools/atmel_pmecc_params
>   endif
> +endif
>   
>   boot.bin: $(obj)/u-boot-spl.bin FORCE
>   	$(call if_changed,mkimage)
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-10  8:32   ` Eugen.Hristev at microchip.com
@ 2018-12-10 13:01     ` Derald D. Woods
  2018-12-10 14:03       ` Eugen.Hristev at microchip.com
  0 siblings, 1 reply; 32+ messages in thread
From: Derald D. Woods @ 2018-12-10 13:01 UTC (permalink / raw)
  To: u-boot

On Mon, Dec 10, 2018 at 08:32:33AM +0000, Eugen.Hristev at microchip.com wrote:
> 
> 
> On 08.12.2018 21:49, Derald D. Woods wrote:
> > On AT91 platforms configured for SD_BOOT, this commit avoids the
> > generation of the PMECC header used for booting from NAND flash. This
> > issue was found by attempting to boot the SAMA5D3-XPLD board with the
> > 'sama5d3_xplained_mmc_defconfig'.
> > 
> > [PMECC Reference]
> > http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> > 
> > [Mailing List Thread]
> > https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> > 
> > Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
> > Reported-by: Daniel Evans <photonthunder@gmail.com>
> > Cc: Robert Nelson <robertcnelson@gmail.com>
> > Cc: Eugen Hristev <eugen.hristev@microchip.com>
> > Cc: Wenyou Yang <wenyou.yang@microchip.com>
> > Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
> > ---
> >   scripts/Makefile.spl | 2 ++
> >   1 file changed, 2 insertions(+)
> > 
> > diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> > index 22bd8f7c27..e727cb610f 100644
> > --- a/scripts/Makefile.spl
> > +++ b/scripts/Makefile.spl
> > @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
> >   MKIMAGEFLAGS_boot.bin = -T atmelimage
> >   
> >   ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> > +ifneq ($(CONFIG_SD_BOOT),y)
> 
> Hi Derald,
> 
> Thanks for your patch, however, I don't like that we do not use the 
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER anymore... isn't this config 
> supposed to say whether we are going to generate the header or not ?
> 

That is not what is happening with this patch. SPL_GENERATE_ATMEL_PMECC_HEADER
is not removed. The config still serves its orignal intent. If SD_BOOT
is configured, then NAND is not being used. In this non-NAND case, the
header is not needed.

> Checking if "not sd-boot" doesn't look like a good option... we may use 
> SPI boot or QSPI or some other type at some point and the issue will 
> still be there.
> 

This location and method would work for those nod-NAND cases also. See
below.

> I would rather fix the original patch by Wenyou, namely move the #ifdef 
> below to not have the GENERATE_ATMEL_PMECC enabled for SDBOOT.
> 
> Does this sound good for you?
> 

If this SPL_GENERATE_ATMEL_PMECC_HEADER only needs to be there for NAND,
why not guard the 'ifdef ($(CONFIG_NAND_BOOT,y))'? Would this be better?
Basically we could replace the 'ifneq ($(CONFIG_SD_BOOT),y)' with the
more appropriate 'ifeq ($(CONFIG_NAND_BOOT),y)'. This would actually
allow the future use-cases to be added as they become available and can
be shown to actually boot with the header applied.

I will put together a proper version 2 of my patch later today.

[patch v2]
------------------------------------------------------------------------	
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 22bd8f7..e727cb6 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
 MKIMAGEFLAGS_boot.bin = -T atmelimage
 
 ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
+ifeq ($(CONFIG_NAND_BOOT),y)
 MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
 
 boot.bin: $(obj)/../tools/atmel_pmecc_params
 endif
+endif
 
 boot.bin: $(obj)/u-boot-spl.bin FORCE
 	$(call if_changed,mkimage)
------------------------------------------------------------------------	

This would allow other configurations to 'opt-in' to applying the
header. Which I think is the direction this is truly heading.

Also, the SPL_GENERATE_ATMEL_PMECC_HEADER needs transitioning to
Kconfig. Having the logic in "Makefile.spl" would help with that work
too.

Derald


> Thanks again,
> 
> Eugen
> 
> >   MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
> >   
> >   boot.bin: $(obj)/../tools/atmel_pmecc_params
> >   endif
> > +endif
> >   
> >   boot.bin: $(obj)/u-boot-spl.bin FORCE
> >   	$(call if_changed,mkimage)
> > 

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-10 13:01     ` Derald D. Woods
@ 2018-12-10 14:03       ` Eugen.Hristev at microchip.com
  2018-12-10 14:54         ` Derald Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2018-12-10 14:03 UTC (permalink / raw)
  To: u-boot



On 10.12.2018 15:01, Derald D. Woods wrote:
> On Mon, Dec 10, 2018 at 08:32:33AM +0000, Eugen.Hristev at microchip.com wrote:
>>
>>
>> On 08.12.2018 21:49, Derald D. Woods wrote:
>>> On AT91 platforms configured for SD_BOOT, this commit avoids the
>>> generation of the PMECC header used for booting from NAND flash. This
>>> issue was found by attempting to boot the SAMA5D3-XPLD board with the
>>> 'sama5d3_xplained_mmc_defconfig'.
>>>
>>> [PMECC Reference]
>>> http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
>>>
>>> [Mailing List Thread]
>>> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
>>>
>>> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
>>> Reported-by: Daniel Evans <photonthunder@gmail.com>
>>> Cc: Robert Nelson <robertcnelson@gmail.com>
>>> Cc: Eugen Hristev <eugen.hristev@microchip.com>
>>> Cc: Wenyou Yang <wenyou.yang@microchip.com>
>>> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
>>> ---
>>>    scripts/Makefile.spl | 2 ++
>>>    1 file changed, 2 insertions(+)
>>>
>>> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
>>> index 22bd8f7c27..e727cb610f 100644
>>> --- a/scripts/Makefile.spl
>>> +++ b/scripts/Makefile.spl
>>> @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
>>>    MKIMAGEFLAGS_boot.bin = -T atmelimage
>>>    
>>>    ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
>>> +ifneq ($(CONFIG_SD_BOOT),y)
>>
>> Hi Derald,
>>
>> Thanks for your patch, however, I don't like that we do not use the
>> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER anymore... isn't this config
>> supposed to say whether we are going to generate the header or not ?
>>
> 
> That is not what is happening with this patch. SPL_GENERATE_ATMEL_PMECC_HEADER
> is not removed. The config still serves its orignal intent. If SD_BOOT
> is configured, then NAND is not being used. In this non-NAND case, the
> header is not needed.
> 
>> Checking if "not sd-boot" doesn't look like a good option... we may use
>> SPI boot or QSPI or some other type at some point and the issue will
>> still be there.
>>
> 
> This location and method would work for those nod-NAND cases also. See
> below.
> 
>> I would rather fix the original patch by Wenyou, namely move the #ifdef
>> below to not have the GENERATE_ATMEL_PMECC enabled for SDBOOT.
>>
>> Does this sound good for you?
>>
> 
> If this SPL_GENERATE_ATMEL_PMECC_HEADER only needs to be there for NAND,
> why not guard the 'ifdef ($(CONFIG_NAND_BOOT,y))'? Would this be better?
> Basically we could replace the 'ifneq ($(CONFIG_SD_BOOT),y)' with the
> more appropriate 'ifeq ($(CONFIG_NAND_BOOT),y)'. This would actually
> allow the future use-cases to be added as they become available and can
> be shown to actually boot with the header applied.
> 
> I will put together a proper version 2 of my patch later today.
> 
> [patch v2]
> ------------------------------------------------------------------------	
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index 22bd8f7..e727cb6 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
>   MKIMAGEFLAGS_boot.bin = -T atmelimage
>   
>   ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> +ifeq ($(CONFIG_NAND_BOOT),y)
>   MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
>   
>   boot.bin: $(obj)/../tools/atmel_pmecc_params
>   endif
> +endif
>   
>   boot.bin: $(obj)/u-boot-spl.bin FORCE
>   	$(call if_changed,mkimage)
> ------------------------------------------------------------------------	
> 
> This would allow other configurations to 'opt-in' to applying the
> header. Which I think is the direction this is truly heading.

My questions are :

If we have configured CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER, then why 
the header is not being applied after your patch ?

And why do we configure CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER if we do 
not wish the PMECC header in the image ?

With your patch, why do we generate the PMECC header w.r.t. the 
configuration of NAND_BOOT and not CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?

Or perhaps I am missing something on the purpose of 
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?

To quote from doc/README.atmel_pmecc :
<quote>
To enable the generation of atmel PMECC header for SPL one need to 
define
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are 
taken from
board configuration and compiled into the host tools atmel_pmecc_params. 
This
tool will be called in build process to parametrize mkimage for 
atmelimage
type. The mkimage tool has intentionally _not_ compiled in those parameters.
</quote>


So I would expect CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER to generate the 
PMECC header if configured, and if this flag is not present, the PMECC 
header is not generated.
I do expect that SD card booting configurations do not select this flag.


> 
> Also, the SPL_GENERATE_ATMEL_PMECC_HEADER needs transitioning to
> Kconfig. Having the logic in "Makefile.spl" would help with that work
> too.
> 
> Derald
> 
> 
>> Thanks again,
>>
>> Eugen
>>
>>>    MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
>>>    
>>>    boot.bin: $(obj)/../tools/atmel_pmecc_params
>>>    endif
>>> +endif
>>>    
>>>    boot.bin: $(obj)/u-boot-spl.bin FORCE
>>>    	$(call if_changed,mkimage)
>>>
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-10 14:03       ` Eugen.Hristev at microchip.com
@ 2018-12-10 14:54         ` Derald Woods
  2018-12-10 15:14           ` Eugen.Hristev at microchip.com
  0 siblings, 1 reply; 32+ messages in thread
From: Derald Woods @ 2018-12-10 14:54 UTC (permalink / raw)
  To: u-boot

On Mon, Dec 10, 2018 at 8:03 AM <Eugen.Hristev@microchip.com> wrote:

>
>
> On 10.12.2018 15:01, Derald D. Woods wrote:
> > On Mon, Dec 10, 2018 at 08:32:33AM +0000, Eugen.Hristev at microchip.com
> wrote:
> >>
> >>
> >> On 08.12.2018 21:49, Derald D. Woods wrote:
> >>> On AT91 platforms configured for SD_BOOT, this commit avoids the
> >>> generation of the PMECC header used for booting from NAND flash. This
> >>> issue was found by attempting to boot the SAMA5D3-XPLD board with the
> >>> 'sama5d3_xplained_mmc_defconfig'.
> >>>
> >>> [PMECC Reference]
> >>> http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> >>>
> >>> [Mailing List Thread]
> >>> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> >>>
> >>> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
> assignment")
> >>> Reported-by: Daniel Evans <photonthunder@gmail.com>
> >>> Cc: Robert Nelson <robertcnelson@gmail.com>
> >>> Cc: Eugen Hristev <eugen.hristev@microchip.com>
> >>> Cc: Wenyou Yang <wenyou.yang@microchip.com>
> >>> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
> >>> ---
> >>>    scripts/Makefile.spl | 2 ++
> >>>    1 file changed, 2 insertions(+)
> >>>
> >>> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> >>> index 22bd8f7c27..e727cb610f 100644
> >>> --- a/scripts/Makefile.spl
> >>> +++ b/scripts/Makefile.spl
> >>> @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
> >>>    MKIMAGEFLAGS_boot.bin = -T atmelimage
> >>>
> >>>    ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> >>> +ifneq ($(CONFIG_SD_BOOT),y)
> >>
> >> Hi Derald,
> >>
> >> Thanks for your patch, however, I don't like that we do not use the
> >> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER anymore... isn't this config
> >> supposed to say whether we are going to generate the header or not ?
> >>
> >
> > That is not what is happening with this patch.
> SPL_GENERATE_ATMEL_PMECC_HEADER
> > is not removed. The config still serves its orignal intent. If SD_BOOT
> > is configured, then NAND is not being used. In this non-NAND case, the
> > header is not needed.
> >
> >> Checking if "not sd-boot" doesn't look like a good option... we may use
> >> SPI boot or QSPI or some other type at some point and the issue will
> >> still be there.
> >>
> >
> > This location and method would work for those nod-NAND cases also. See
> > below.
> >
> >> I would rather fix the original patch by Wenyou, namely move the #ifdef
> >> below to not have the GENERATE_ATMEL_PMECC enabled for SDBOOT.
> >>
> >> Does this sound good for you?
> >>
> >
> > If this SPL_GENERATE_ATMEL_PMECC_HEADER only needs to be there for NAND,
> > why not guard the 'ifdef ($(CONFIG_NAND_BOOT,y))'? Would this be better?
> > Basically we could replace the 'ifneq ($(CONFIG_SD_BOOT),y)' with the
> > more appropriate 'ifeq ($(CONFIG_NAND_BOOT),y)'. This would actually
> > allow the future use-cases to be added as they become available and can
> > be shown to actually boot with the header applied.
> >
> > I will put together a proper version 2 of my patch later today.
> >
> > [patch v2]
> >
> ------------------------------------------------------------------------
>
> > diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> > index 22bd8f7..e727cb6 100644
> > --- a/scripts/Makefile.spl
> > +++ b/scripts/Makefile.spl
> > @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
> >   MKIMAGEFLAGS_boot.bin = -T atmelimage
> >
> >   ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> > +ifeq ($(CONFIG_NAND_BOOT),y)
> >   MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
> >
> >   boot.bin: $(obj)/../tools/atmel_pmecc_params
> >   endif
> > +endif
> >
> >   boot.bin: $(obj)/u-boot-spl.bin FORCE
> >       $(call if_changed,mkimage)
> >
> ------------------------------------------------------------------------
>
> >
> > This would allow other configurations to 'opt-in' to applying the
> > header. Which I think is the direction this is truly heading.
>
> My questions are :
>
> If we have configured CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER, then why
> the header is not being applied after your patch ?
>
> And why do we configure CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER if we do
> not wish the PMECC header in the image ?
>
> With your patch, why do we generate the PMECC header w.r.t. the
> configuration of NAND_BOOT and not CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?
>
> Or perhaps I am missing something on the purpose of
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?
>
> To quote from doc/README.atmel_pmecc :
> <quote>
> To enable the generation of atmel PMECC header for SPL one need to
> define
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are
> taken from
> board configuration and compiled into the host tools atmel_pmecc_params.
> This
> tool will be called in build process to parametrize mkimage for
> atmelimage
> type. The mkimage tool has intentionally _not_ compiled in those
> parameters.
> </quote>
>
>
> So I would expect CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER to generate the
> PMECC header if configured, and if this flag is not present, the PMECC
> header is not generated.
> I do expect that SD card booting configurations do not select this flag.
>
>

The patch does _not_ remove CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER or change
its purpose or overall role. Literally. It is a very simple patch that
solves
a "no-boot" issue for at least sama5d3-xpld. I read the documents before
my patch. This is a post-build tooling issue. Makefile.spl can leverage
configs as they are naturally selected.

Derald



>
> >
> > Also, the SPL_GENERATE_ATMEL_PMECC_HEADER needs transitioning to
> > Kconfig. Having the logic in "Makefile.spl" would help with that work
> > too.
> >
> > Derald
> >
> >
> >> Thanks again,
> >>
> >> Eugen
> >>
> >>>    MKIMAGEFLAGS_boot.bin += -n $(shell
> $(obj)/../tools/atmel_pmecc_params)
> >>>
> >>>    boot.bin: $(obj)/../tools/atmel_pmecc_params
> >>>    endif
> >>> +endif
> >>>
> >>>    boot.bin: $(obj)/u-boot-spl.bin FORCE
> >>>     $(call if_changed,mkimage)
> >>>
> >
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-10 14:54         ` Derald Woods
@ 2018-12-10 15:14           ` Eugen.Hristev at microchip.com
  2018-12-11  5:48             ` Derald D. Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2018-12-10 15:14 UTC (permalink / raw)
  To: u-boot



On 10.12.2018 16:54, Derald Woods wrote:
> 
> 
> On Mon, Dec 10, 2018 at 8:03 AM <Eugen.Hristev@microchip.com 
> <mailto:Eugen.Hristev@microchip.com>> wrote:
> 
> 
> 
>     On 10.12.2018 15:01, Derald D. Woods wrote:
>      > On Mon, Dec 10, 2018 at 08:32:33AM +0000,
>     Eugen.Hristev at microchip.com <mailto:Eugen.Hristev@microchip.com> wrote:
>      >>
>      >>
>      >> On 08.12.2018 21:49, Derald D. Woods wrote:
>      >>> On AT91 platforms configured for SD_BOOT, this commit avoids the
>      >>> generation of the PMECC header used for booting from NAND
>     flash. This
>      >>> issue was found by attempting to boot the SAMA5D3-XPLD board
>     with the
>      >>> 'sama5d3_xplained_mmc_defconfig'.
>      >>>
>      >>> [PMECC Reference]
>      >>> http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
>      >>>
>      >>> [Mailing List Thread]
>      >>> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
>      >>>
>      >>> Fixes: 5541543f ("configs: at91: Remove
>     CONFIG_SYS_EXTRA_OPTIONS assignment")
>      >>> Reported-by: Daniel Evans <photonthunder@gmail.com
>     <mailto:photonthunder@gmail.com>>
>      >>> Cc: Robert Nelson <robertcnelson@gmail.com
>     <mailto:robertcnelson@gmail.com>>
>      >>> Cc: Eugen Hristev <eugen.hristev@microchip.com
>     <mailto:eugen.hristev@microchip.com>>
>      >>> Cc: Wenyou Yang <wenyou.yang@microchip.com
>     <mailto:wenyou.yang@microchip.com>>
>      >>> Signed-off-by: Derald D. Woods <woods.technical@gmail.com
>     <mailto:woods.technical@gmail.com>>
>      >>> ---
>      >>>    scripts/Makefile.spl | 2 ++
>      >>>    1 file changed, 2 insertions(+)
>      >>>
>      >>> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
>      >>> index 22bd8f7c27..e727cb610f 100644
>      >>> --- a/scripts/Makefile.spl
>      >>> +++ b/scripts/Makefile.spl
>      >>> @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
>      >>>    MKIMAGEFLAGS_boot.bin = -T atmelimage
>      >>>
>      >>>    ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
>      >>> +ifneq ($(CONFIG_SD_BOOT),y)
>      >>
>      >> Hi Derald,
>      >>
>      >> Thanks for your patch, however, I don't like that we do not use the
>      >> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER anymore... isn't this config
>      >> supposed to say whether we are going to generate the header or not ?
>      >>
>      >
>      > That is not what is happening with this patch.
>     SPL_GENERATE_ATMEL_PMECC_HEADER
>      > is not removed. The config still serves its orignal intent. If
>     SD_BOOT
>      > is configured, then NAND is not being used. In this non-NAND
>     case, the
>      > header is not needed.
>      >
>      >> Checking if "not sd-boot" doesn't look like a good option... we
>     may use
>      >> SPI boot or QSPI or some other type at some point and the issue will
>      >> still be there.
>      >>
>      >
>      > This location and method would work for those nod-NAND cases
>     also. See
>      > below.
>      >
>      >> I would rather fix the original patch by Wenyou, namely move the
>     #ifdef
>      >> below to not have the GENERATE_ATMEL_PMECC enabled for SDBOOT.
>      >>
>      >> Does this sound good for you?
>      >>
>      >
>      > If this SPL_GENERATE_ATMEL_PMECC_HEADER only needs to be there
>     for NAND,
>      > why not guard the 'ifdef ($(CONFIG_NAND_BOOT,y))'? Would this be
>     better?
>      > Basically we could replace the 'ifneq ($(CONFIG_SD_BOOT),y)' with the
>      > more appropriate 'ifeq ($(CONFIG_NAND_BOOT),y)'. This would actually
>      > allow the future use-cases to be added as they become available
>     and can
>      > be shown to actually boot with the header applied.
>      >
>      > I will put together a proper version 2 of my patch later today.
>      >
>      > [patch v2]
>      >
>     ------------------------------------------------------------------------
> 
>      > diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
>      > index 22bd8f7..e727cb6 100644
>      > --- a/scripts/Makefile.spl
>      > +++ b/scripts/Makefile.spl
>      > @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
>      >   MKIMAGEFLAGS_boot.bin = -T atmelimage
>      >
>      >   ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
>      > +ifeq ($(CONFIG_NAND_BOOT),y)
>      >   MKIMAGEFLAGS_boot.bin += -n $(shell
>     $(obj)/../tools/atmel_pmecc_params)
>      >
>      >   boot.bin: $(obj)/../tools/atmel_pmecc_params
>      >   endif
>      > +endif
>      >
>      >   boot.bin: $(obj)/u-boot-spl.bin FORCE
>      >       $(call if_changed,mkimage)
>      >
>     ------------------------------------------------------------------------
> 
>      >
>      > This would allow other configurations to 'opt-in' to applying the
>      > header. Which I think is the direction this is truly heading.
> 
>     My questions are :
> 
>     If we have configured CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER, then why
>     the header is not being applied after your patch ?
> 
>     And why do we configure CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER if we do
>     not wish the PMECC header in the image ?
> 
>     With your patch, why do we generate the PMECC header w.r.t. the
>     configuration of NAND_BOOT and not
>     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?
> 
>     Or perhaps I am missing something on the purpose of
>     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?
> 
>     To quote from doc/README.atmel_pmecc :
>     <quote>
>     To enable the generation of atmel PMECC header for SPL one need to
>     define
>     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are
>     taken from
>     board configuration and compiled into the host tools
>     atmel_pmecc_params.
>     This
>     tool will be called in build process to parametrize mkimage for
>     atmelimage
>     type. The mkimage tool has intentionally _not_ compiled in those
>     parameters.
>     </quote>
> 
> 
>     So I would expect CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER to generate
>     the
>     PMECC header if configured, and if this flag is not present, the PMECC
>     header is not generated.
>     I do expect that SD card booting configurations do not select this flag.
> 
> 
> 
> The patch does _not_ remove CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER or change
> its purpose or overall role. Literally. It is a very simple patch that 
> solves
> a "no-boot" issue for at least sama5d3-xpld. I read the documents before
> my patch. This is a post-build tooling issue. Makefile.spl can leverage
> configs as they are naturally selected.
> 
> Derald

Does the following change fix your problem ?

diff --git a/include/configs/sama5d3_xplained.h 
b/include/configs/sama5d3_xplained.h
index d0d8087..f2661c5 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -80,6 +80,7 @@
  #elif CONFIG_NAND_BOOT
  #define CONFIG_SPL_NAND_DRIVERS
  #define CONFIG_SPL_NAND_BASE
+#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
  #endif
  #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
  #define CONFIG_SYS_NAND_5_ADDR_CYCLE
@@ -88,6 +89,5 @@
  #define CONFIG_SYS_NAND_OOBSIZE                64
  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

  #endif



> 
> 
>      >
>      > Also, the SPL_GENERATE_ATMEL_PMECC_HEADER needs transitioning to
>      > Kconfig. Having the logic in "Makefile.spl" would help with that work
>      > too.
>      >
>      > Derald
>      >
>      >
>      >> Thanks again,
>      >>
>      >> Eugen
>      >>
>      >>>    MKIMAGEFLAGS_boot.bin += -n $(shell
>     $(obj)/../tools/atmel_pmecc_params)
>      >>>
>      >>>    boot.bin: $(obj)/../tools/atmel_pmecc_params
>      >>>    endif
>      >>> +endif
>      >>>
>      >>>    boot.bin: $(obj)/u-boot-spl.bin FORCE
>      >>>     $(call if_changed,mkimage)
>      >>>
>      >
> 

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled
  2018-12-10 15:14           ` Eugen.Hristev at microchip.com
@ 2018-12-11  5:48             ` Derald D. Woods
  2018-12-15  7:36               ` [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Derald D. Woods @ 2018-12-11  5:48 UTC (permalink / raw)
  To: u-boot

On Mon, Dec 10, 2018 at 03:14:05PM +0000, Eugen.Hristev at microchip.com wrote:
> 
> 
> On 10.12.2018 16:54, Derald Woods wrote:
> > 
> > 
> > On Mon, Dec 10, 2018 at 8:03 AM <Eugen.Hristev@microchip.com 
> > <mailto:Eugen.Hristev@microchip.com>> wrote:
> > 
> > 
> > 
> >     On 10.12.2018 15:01, Derald D. Woods wrote:
> >      > On Mon, Dec 10, 2018 at 08:32:33AM +0000,
> >     Eugen.Hristev at microchip.com <mailto:Eugen.Hristev@microchip.com> wrote:
> >      >>
> >      >>
> >      >> On 08.12.2018 21:49, Derald D. Woods wrote:
> >      >>> On AT91 platforms configured for SD_BOOT, this commit avoids the
> >      >>> generation of the PMECC header used for booting from NAND
> >     flash. This
> >      >>> issue was found by attempting to boot the SAMA5D3-XPLD board
> >     with the
> >      >>> 'sama5d3_xplained_mmc_defconfig'.
> >      >>>
> >      >>> [PMECC Reference]
> >      >>> http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> >      >>>
> >      >>> [Mailing List Thread]
> >      >>> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> >      >>>
> >      >>> Fixes: 5541543f ("configs: at91: Remove
> >     CONFIG_SYS_EXTRA_OPTIONS assignment")
> >      >>> Reported-by: Daniel Evans <photonthunder@gmail.com
> >     <mailto:photonthunder@gmail.com>>
> >      >>> Cc: Robert Nelson <robertcnelson@gmail.com
> >     <mailto:robertcnelson@gmail.com>>
> >      >>> Cc: Eugen Hristev <eugen.hristev@microchip.com
> >     <mailto:eugen.hristev@microchip.com>>
> >      >>> Cc: Wenyou Yang <wenyou.yang@microchip.com
> >     <mailto:wenyou.yang@microchip.com>>
> >      >>> Signed-off-by: Derald D. Woods <woods.technical@gmail.com
> >     <mailto:woods.technical@gmail.com>>
> >      >>> ---
> >      >>>    scripts/Makefile.spl | 2 ++
> >      >>>    1 file changed, 2 insertions(+)
> >      >>>
> >      >>> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> >      >>> index 22bd8f7c27..e727cb610f 100644
> >      >>> --- a/scripts/Makefile.spl
> >      >>> +++ b/scripts/Makefile.spl
> >      >>> @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
> >      >>>    MKIMAGEFLAGS_boot.bin = -T atmelimage
> >      >>>
> >      >>>    ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> >      >>> +ifneq ($(CONFIG_SD_BOOT),y)
> >      >>
> >      >> Hi Derald,
> >      >>
> >      >> Thanks for your patch, however, I don't like that we do not use the
> >      >> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER anymore... isn't this config
> >      >> supposed to say whether we are going to generate the header or not ?
> >      >>
> >      >
> >      > That is not what is happening with this patch.
> >     SPL_GENERATE_ATMEL_PMECC_HEADER
> >      > is not removed. The config still serves its orignal intent. If
> >     SD_BOOT
> >      > is configured, then NAND is not being used. In this non-NAND
> >     case, the
> >      > header is not needed.
> >      >
> >      >> Checking if "not sd-boot" doesn't look like a good option... we
> >     may use
> >      >> SPI boot or QSPI or some other type at some point and the issue will
> >      >> still be there.
> >      >>
> >      >
> >      > This location and method would work for those nod-NAND cases
> >     also. See
> >      > below.
> >      >
> >      >> I would rather fix the original patch by Wenyou, namely move the
> >     #ifdef
> >      >> below to not have the GENERATE_ATMEL_PMECC enabled for SDBOOT.
> >      >>
> >      >> Does this sound good for you?
> >      >>
> >      >
> >      > If this SPL_GENERATE_ATMEL_PMECC_HEADER only needs to be there
> >     for NAND,
> >      > why not guard the 'ifdef ($(CONFIG_NAND_BOOT,y))'? Would this be
> >     better?
> >      > Basically we could replace the 'ifneq ($(CONFIG_SD_BOOT),y)' with the
> >      > more appropriate 'ifeq ($(CONFIG_NAND_BOOT),y)'. This would actually
> >      > allow the future use-cases to be added as they become available
> >     and can
> >      > be shown to actually boot with the header applied.
> >      >
> >      > I will put together a proper version 2 of my patch later today.
> >      >
> >      > [patch v2]
> >      >
> >     ------------------------------------------------------------------------
> > 
> >      > diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> >      > index 22bd8f7..e727cb6 100644
> >      > --- a/scripts/Makefile.spl
> >      > +++ b/scripts/Makefile.spl
> >      > @@ -166,10 +166,12 @@ ifeq ($(CONFIG_SYS_SOC),"at91")
> >      >   MKIMAGEFLAGS_boot.bin = -T atmelimage
> >      >
> >      >   ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
> >      > +ifeq ($(CONFIG_NAND_BOOT),y)
> >      >   MKIMAGEFLAGS_boot.bin += -n $(shell
> >     $(obj)/../tools/atmel_pmecc_params)
> >      >
> >      >   boot.bin: $(obj)/../tools/atmel_pmecc_params
> >      >   endif
> >      > +endif
> >      >
> >      >   boot.bin: $(obj)/u-boot-spl.bin FORCE
> >      >       $(call if_changed,mkimage)
> >      >
> >     ------------------------------------------------------------------------
> > 
> >      >
> >      > This would allow other configurations to 'opt-in' to applying the
> >      > header. Which I think is the direction this is truly heading.
> > 
> >     My questions are :
> > 
> >     If we have configured CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER, then why
> >     the header is not being applied after your patch ?
> > 
> >     And why do we configure CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER if we do
> >     not wish the PMECC header in the image ?
> > 
> >     With your patch, why do we generate the PMECC header w.r.t. the
> >     configuration of NAND_BOOT and not
> >     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?
> > 
> >     Or perhaps I am missing something on the purpose of
> >     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER ?
> > 
> >     To quote from doc/README.atmel_pmecc :
> >     <quote>
> >     To enable the generation of atmel PMECC header for SPL one need to
> >     define
> >     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are
> >     taken from
> >     board configuration and compiled into the host tools
> >     atmel_pmecc_params.
> >     This
> >     tool will be called in build process to parametrize mkimage for
> >     atmelimage
> >     type. The mkimage tool has intentionally _not_ compiled in those
> >     parameters.
> >     </quote>
> > 
> > 
> >     So I would expect CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER to generate
> >     the
> >     PMECC header if configured, and if this flag is not present, the PMECC
> >     header is not generated.
> >     I do expect that SD card booting configurations do not select this flag.
> > 
> > 
> > 
> > The patch does _not_ remove CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER or change
> > its purpose or overall role. Literally. It is a very simple patch that 
> > solves
> > a "no-boot" issue for at least sama5d3-xpld. I read the documents before
> > my patch. This is a post-build tooling issue. Makefile.spl can leverage
> > configs as they are naturally selected.
> > 
> > Derald
> 
> Does the following change fix your problem ?
>

I am simply working on a proper solution. I have the SAMA5D3-XPLD board
and use it occasionally. The original post to the mailing list simply
peaked my interest. I had the board pinned at v2017.09 in my personal
build environment for the same issue. I am just digging deeper this time
around.

> diff --git a/include/configs/sama5d3_xplained.h 
> b/include/configs/sama5d3_xplained.h
> index d0d8087..f2661c5 100644
> --- a/include/configs/sama5d3_xplained.h
> +++ b/include/configs/sama5d3_xplained.h
> @@ -80,6 +80,7 @@
>   #elif CONFIG_NAND_BOOT
>   #define CONFIG_SPL_NAND_DRIVERS
>   #define CONFIG_SPL_NAND_BASE
> +#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   #endif
>   #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
>   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> @@ -88,6 +89,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE                64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
>   #endif
> 

I began looking into converting the following to Kconfig:

[scripts/config_whitelist.txt] (REMOVING ITEMS)
------------------------------------------------------------------------
CONFIG_ATMEL_NAND_HWECC
CONFIG_ATMEL_NAND_HW_PMECC
CONFIG_PMECC_CAP
CONFIG_PMECC_SECTOR_SIZE
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
------------------------------------------------------------------------

[arch/arm/mach-at91/Kconfig]
------------------------------------------------------------------------
config ATMEL_NAND_HWECC
	bool "Atmel Hardware ECC"
	default n

config ATMEL_NAND_HW_PMECC
	bool "Atmel Programmable Multibit ECC (PMECC)"
	select ATMEL_NAND_HWECC
	default n
	help
	  The Programmable Multibit ECC (PMECC) controller is a programmable
	  binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.

config PMECC_CAP
	int "PMECC Correctable ECC Bits"
	depends on ATMEL_NAND_HW_PMECC
	default 2
	help
	  Correctable ECC bits, can be 2, 4, 8, 12, and 24.

config PMECC_SECTOR_SIZE
	int "PMECC Sector Size"
	depends on ATMEL_NAND_HW_PMECC
	default 512
	help
	  Sector size, in bytes, can be 512 or 1024.

config SPL_GENERATE_ATMEL_PMECC_HEADER
	bool "Atmel PMECC Header Generation"
	select ATMEL_NAND_HWECC
	select ATMEL_NAND_HW_PMECC
	default n
	help
	  Generate Programmable Multibit ECC (PMECC) header for SPL image.

------------------------------------------------------------------------

The issue is that the PMECC configuration items are used along with
other NAND configuration items outside of a NAND_BOOT scenario. I would
like to get the proper Kconfig selections up and running. This is just a
start. I will not have any more time until this weekend. I will send
another patch at that time.

Cheers,

Derald

> 
> 
> > 
> > 
> >      >
> >      > Also, the SPL_GENERATE_ATMEL_PMECC_HEADER needs transitioning to
> >      > Kconfig. Having the logic in "Makefile.spl" would help with that work
> >      > too.
> >      >
> >      > Derald
> >      >
> >      >
> >      >> Thanks again,
> >      >>
> >      >> Eugen
> >      >>
> >      >>>    MKIMAGEFLAGS_boot.bin += -n $(shell
> >     $(obj)/../tools/atmel_pmecc_params)
> >      >>>
> >      >>>    boot.bin: $(obj)/../tools/atmel_pmecc_params
> >      >>>    endif
> >      >>> +endif
> >      >>>
> >      >>>    boot.bin: $(obj)/u-boot-spl.bin FORCE
> >      >>>     $(call if_changed,mkimage)
> >      >>>
> >      >
> > 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2018-12-11  5:48             ` Derald D. Woods
@ 2018-12-15  7:36               ` Derald D. Woods
  2018-12-28  0:04                 ` Derald Woods
                                   ` (3 more replies)
  0 siblings, 4 replies; 32+ messages in thread
From: Derald D. Woods @ 2018-12-15  7:36 UTC (permalink / raw)
  To: u-boot

This commit converts the following items to Kconfig:

CONFIG_ATMEL_NAND_HWECC
CONFIG_ATMEL_NAND_HW_PMECC
CONFIG_PMECC_CAP
CONFIG_PMECC_SECTOR_SIZE
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

[PMECC References]
https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap

[Mailing List Thread]
https://lists.denx.de/pipermail/u-boot/2018-December/350666.html

Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
Reported-by: Daniel Evans <photonthunder@gmail.com>
Cc: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
---
 configs/at91sam9n12ek_mmc_defconfig          |  1 +
 configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
 configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
 configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
 configs/at91sam9x5ek_mmc_defconfig           |  1 +
 configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
 configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
 configs/sama5d3_xplained_mmc_defconfig       |  1 +
 configs/sama5d3_xplained_nandflash_defconfig |  3 ++
 configs/sama5d3xek_mmc_defconfig             |  1 +
 configs/sama5d3xek_nandflash_defconfig       |  3 ++
 configs/sama5d3xek_spiflash_defconfig        |  3 ++
 configs/sama5d4_xplained_mmc_defconfig       |  1 +
 configs/sama5d4_xplained_nandflash_defconfig |  3 ++
 configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
 configs/sama5d4ek_mmc_defconfig              |  1 +
 configs/sama5d4ek_nandflash_defconfig        |  3 ++
 configs/sama5d4ek_spiflash_defconfig         |  3 ++
 configs/wb45n_defconfig                      |  3 ++
 configs/wb50n_defconfig                      |  3 ++
 doc/README.atmel_pmecc                       | 13 ++++---
 drivers/mtd/nand/raw/Kconfig                 | 38 ++++++++++++++++++++
 include/configs/at91sam9n12ek.h              |  7 ----
 include/configs/at91sam9x5ek.h               |  7 ----
 include/configs/sama5d3_xplained.h           |  7 ----
 include/configs/sama5d3xek.h                 |  7 ----
 include/configs/sama5d4_xplained.h           |  6 ----
 include/configs/sama5d4ek.h                  |  6 ----
 include/configs/wb45n.h                      |  7 ----
 include/configs/wb50n.h                      |  6 ----
 scripts/config_whitelist.txt                 |  5 ---
 31 files changed, 92 insertions(+), 65 deletions(-)

diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
index 6b2cfe9c42..7b46eb498d 100644
--- a/configs/at91sam9n12ek_mmc_defconfig
+++ b/configs/at91sam9n12ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
index 354c24ff16..4e34a517fd 100644
--- a/configs/at91sam9n12ek_nandflash_defconfig
+++ b/configs/at91sam9n12ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
index 63889355bf..500c3ab088 100644
--- a/configs/at91sam9n12ek_spiflash_defconfig
+++ b/configs/at91sam9n12ek_spiflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
index dc13509715..60d865cc23 100644
--- a/configs/at91sam9x5ek_dataflash_defconfig
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index ff86f93e61..75f7fbd199 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
index b2b3ddb6d9..dd6bdee7f9 100644
--- a/configs/at91sam9x5ek_nandflash_defconfig
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
index d0eebcdc75..8d8108888c 100644
--- a/configs/at91sam9x5ek_spiflash_defconfig
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
index eab38ec366..51d5aeaf0e 100644
--- a/configs/sama5d3_xplained_mmc_defconfig
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
index ff7d2bffdd..ce1f28607e 100644
--- a/configs/sama5d3_xplained_nandflash_defconfig
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3_XPLAINED=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
index 6faea0ec3f..49d4334213 100644
--- a/configs/sama5d3xek_mmc_defconfig
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
index e641279ee1..b0d56e0e3e 100644
--- a/configs/sama5d3xek_nandflash_defconfig
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index 37f603d528..cf2fb9e65b 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index bfcea3f519..35b8302b60 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 2c1b7f17c0..93714ed0c7 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index a89dd11a8c..e1eb0c72cd 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
index 45e6539913..bd238f7f14 100644
--- a/configs/sama5d4ek_mmc_defconfig
+++ b/configs/sama5d4ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
index 1497110452..3816bfb273 100644
--- a/configs/sama5d4ek_nandflash_defconfig
+++ b/configs/sama5d4ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index dad32b5711..242081e6a1 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
index 9d881e5d41..15fc17ac00 100644
--- a/configs/wb45n_defconfig
+++ b/configs/wb45n_defconfig
@@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x23f00000
 CONFIG_TARGET_WB45N=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
index c74eba1012..a7e9a53448 100644
--- a/configs/wb50n_defconfig
+++ b/configs/wb50n_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x23f00000
 CONFIG_TARGET_WB50N=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
index 274d860f06..c86d085779 100644
--- a/doc/README.atmel_pmecc
+++ b/doc/README.atmel_pmecc
@@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs to set:
 	2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
 	   It only can be 512 or 1024.
 
-Take AT91SAM9X5EK as an example, the board definition file likes:
+Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example, the board
+configuration file has the following entries:
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC		1
-#define CONFIG_ATMEL_NAND_HW_PMECC	1
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
+	CONFIG_PMECC_CAP=2
+	CONFIG_PMECC_SECTOR_SIZE=512
+	CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 
 How to enable PMECC header for direct programmable boot.bin
 -----------------------------------------------------------
@@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines how this PMECC header has to
 look like. In order to do so we have a new image type added to mkimage to
 generate this PMECC header and integrated this into the build process of SPL.
 
-To enable the generation of atmel PMECC header for SPL one need to define
+To enable the generation of atmel PMECC header for SPL one needs to define
 CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are taken from
 board configuration and compiled into the host tools atmel_pmecc_params. This
 tool will be called in build process to parametrize mkimage for atmelimage
diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index 008f7b4b4b..b99732736a 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -16,6 +16,44 @@ config NAND_ATMEL
 	  Enable this driver for NAND flash platforms using an Atmel NAND
 	  controller.
 
+if NAND_ATMEL
+
+config ATMEL_NAND_HWECC
+	bool "Atmel Hardware ECC"
+	default n
+
+config ATMEL_NAND_HW_PMECC
+	bool "Atmel Programmable Multibit ECC (PMECC)"
+	select ATMEL_NAND_HWECC
+	default n
+	help
+	  The Programmable Multibit ECC (PMECC) controller is a programmable
+	  binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
+
+config PMECC_CAP
+	int "PMECC Correctable ECC Bits"
+	depends on ATMEL_NAND_HW_PMECC
+	default 2
+	help
+	  Correctable ECC bits, can be 2, 4, 8, 12, and 24.
+
+config PMECC_SECTOR_SIZE
+	int "PMECC Sector Size"
+	depends on ATMEL_NAND_HW_PMECC
+	default 512
+	help
+	  Sector size, in bytes, can be 512 or 1024.
+
+config SPL_GENERATE_ATMEL_PMECC_HEADER
+	bool "Atmel PMECC Header Generation"
+	select ATMEL_NAND_HWECC
+	select ATMEL_NAND_HW_PMECC
+	default n
+	help
+	  Generate Programmable Multibit ECC (PMECC) header for SPL image.
+
+endif
+
 config NAND_DAVINCI
 	bool "Support TI Davinci NAND controller"
 	help
diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h
index 6cd267eee6..777a99b730 100644
--- a/include/configs/at91sam9n12ek.h
+++ b/include/configs/at91sam9n12ek.h
@@ -59,12 +59,6 @@
 #define CONFIG_SYS_NAND_READY_PIN	GPIO_PIN_PD(5)
 #endif
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
-
 #define CONFIG_EXTRA_ENV_SETTINGS                                       \
 	"console=console=ttyS0,115200\0"                                \
 	"mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"					\
@@ -177,6 +171,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/at91sam9x5ek.h b/include/configs/at91sam9x5ek.h
index 63305a7cdd..6adb965c3c 100644
--- a/include/configs/at91sam9x5ek.h
+++ b/include/configs/at91sam9x5ek.h
@@ -55,12 +55,6 @@
 #define CONFIG_SYS_NAND_READY_PIN	AT91_PIN_PD5
 #endif
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC		1
-#define CONFIG_ATMEL_NAND_HW_PMECC	1
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
-
 /* USB */
 #ifdef CONFIG_CMD_USB
 #ifndef CONFIG_USB_EHCI_HCD
@@ -151,6 +145,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
index d0d8087ca3..8a9a19d38e 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -43,14 +43,8 @@
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 #endif
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		4
-#define CONFIG_PMECC_SECTOR_SIZE	512
 
 /* USB */
-
 #ifdef CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL
 #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
@@ -88,6 +82,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
index 4d3c3b8314..ca1c2b0861 100644
--- a/include/configs/sama5d3xek.h
+++ b/include/configs/sama5d3xek.h
@@ -62,14 +62,8 @@
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 #endif
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		4
-#define CONFIG_PMECC_SECTOR_SIZE	512
 
 /* USB */
-
 #ifdef CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
 #define CONFIG_USB_OHCI_NEW
@@ -109,6 +103,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h
index 7f8ac178f3..bbb16993ec 100644
--- a/include/configs/sama5d4_xplained.h
+++ b/include/configs/sama5d4_xplained.h
@@ -37,9 +37,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
 /* SPL */
@@ -64,8 +61,6 @@
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
 #endif
-#define CONFIG_PMECC_CAP		8
-#define CONFIG_PMECC_SECTOR_SIZE	512
 #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
@@ -73,6 +68,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		224
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
index aa8573d8ba..d58041650c 100644
--- a/include/configs/sama5d4ek.h
+++ b/include/configs/sama5d4ek.h
@@ -37,9 +37,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
 /* SPL */
@@ -63,8 +60,6 @@
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
 #endif
-#define CONFIG_PMECC_CAP		8
-#define CONFIG_PMECC_SECTOR_SIZE	512
 #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
@@ -72,6 +67,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		224
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
index b516b66c35..add4019b31 100644
--- a/include/configs/wb45n.h
+++ b/include/configs/wb45n.h
@@ -48,12 +48,6 @@
 #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
 #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC     1
-#define CONFIG_ATMEL_NAND_HW_PMECC  1
-#define CONFIG_PMECC_CAP            4
-#define CONFIG_PMECC_SECTOR_SIZE    512
-
 #define CONFIG_RBTREE
 #define CONFIG_LZO
 
@@ -141,6 +135,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE     64
 #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif				/* __CONFIG_H__ */
diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
index 40ca9d602b..2684b6c16c 100644
--- a/include/configs/wb50n.h
+++ b/include/configs/wb50n.h
@@ -57,11 +57,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP            8
-#define CONFIG_PMECC_SECTOR_SIZE    512
 
 /* Ethernet Hardware */
 #define CONFIG_MACB
@@ -118,6 +113,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE     64
 #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index b8addeaf69..f798c6542a 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
 CONFIG_ATMEL_LCD_RGB565
 CONFIG_ATMEL_LEGACY
 CONFIG_ATMEL_MCI_8BIT
-CONFIG_ATMEL_NAND_HWECC
-CONFIG_ATMEL_NAND_HW_PMECC
 CONFIG_ATMEL_SPI0
 CONFIG_AT_TRANS
 CONFIG_AUTO_ZRELADDR
@@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
 CONFIG_PM
 CONFIG_PMC_BR_PRELIM
 CONFIG_PMC_OR_PRELIM
-CONFIG_PMECC_CAP
-CONFIG_PMECC_SECTOR_SIZE
 CONFIG_PME_PLAT_CLK_DIV
 CONFIG_PMU
 CONFIG_PMW_BASE
@@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
 CONFIG_SPL_FS_LOAD_KERNEL_NAME
 CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
 CONFIG_SPL_GD_ADDR
-CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 CONFIG_SPL_INIT_MINIMAL
 CONFIG_SPL_JR0_LIODN_NS
 CONFIG_SPL_JR0_LIODN_S
-- 
2.20.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2018-12-15  7:36               ` [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
@ 2018-12-28  0:04                 ` Derald Woods
  2019-01-07  9:40                 ` Eugen.Hristev at microchip.com
                                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 32+ messages in thread
From: Derald Woods @ 2018-12-28  0:04 UTC (permalink / raw)
  To: u-boot

On Sat, Dec 15, 2018 at 1:37 AM Derald D. Woods <woods.technical@gmail.com>
wrote:

> This commit converts the following items to Kconfig:
>
> CONFIG_ATMEL_NAND_HWECC
> CONFIG_ATMEL_NAND_HW_PMECC
> CONFIG_PMECC_CAP
> CONFIG_PMECC_SECTOR_SIZE
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
> [PMECC References]
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
>
> [Mailing List Thread]
> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
>
> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
> assignment")
> Reported-by: Daniel Evans <photonthunder@gmail.com>
> Cc: Eugen Hristev <eugen.hristev@microchip.com>
> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
>


Any concerns about this Kconfig conversion?

Derald




> ---
>  configs/at91sam9n12ek_mmc_defconfig          |  1 +
>  configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
>  configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
>  configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
>  configs/at91sam9x5ek_mmc_defconfig           |  1 +
>  configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
>  configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
>  configs/sama5d3_xplained_mmc_defconfig       |  1 +
>  configs/sama5d3_xplained_nandflash_defconfig |  3 ++
>  configs/sama5d3xek_mmc_defconfig             |  1 +
>  configs/sama5d3xek_nandflash_defconfig       |  3 ++
>  configs/sama5d3xek_spiflash_defconfig        |  3 ++
>  configs/sama5d4_xplained_mmc_defconfig       |  1 +
>  configs/sama5d4_xplained_nandflash_defconfig |  3 ++
>  configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
>  configs/sama5d4ek_mmc_defconfig              |  1 +
>  configs/sama5d4ek_nandflash_defconfig        |  3 ++
>  configs/sama5d4ek_spiflash_defconfig         |  3 ++
>  configs/wb45n_defconfig                      |  3 ++
>  configs/wb50n_defconfig                      |  3 ++
>  doc/README.atmel_pmecc                       | 13 ++++---
>  drivers/mtd/nand/raw/Kconfig                 | 38 ++++++++++++++++++++
>  include/configs/at91sam9n12ek.h              |  7 ----
>  include/configs/at91sam9x5ek.h               |  7 ----
>  include/configs/sama5d3_xplained.h           |  7 ----
>  include/configs/sama5d3xek.h                 |  7 ----
>  include/configs/sama5d4_xplained.h           |  6 ----
>  include/configs/sama5d4ek.h                  |  6 ----
>  include/configs/wb45n.h                      |  7 ----
>  include/configs/wb50n.h                      |  6 ----
>  scripts/config_whitelist.txt                 |  5 ---
>  31 files changed, 92 insertions(+), 65 deletions(-)
>
> diff --git a/configs/at91sam9n12ek_mmc_defconfig
> b/configs/at91sam9n12ek_mmc_defconfig
> index 6b2cfe9c42..7b46eb498d 100644
> --- a/configs/at91sam9n12ek_mmc_defconfig
> +++ b/configs/at91sam9n12ek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9N12EK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9n12ek_nandflash_defconfig
> b/configs/at91sam9n12ek_nandflash_defconfig
> index 354c24ff16..4e34a517fd 100644
> --- a/configs/at91sam9n12ek_nandflash_defconfig
> +++ b/configs/at91sam9n12ek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9N12EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9n12ek_spiflash_defconfig
> b/configs/at91sam9n12ek_spiflash_defconfig
> index 63889355bf..500c3ab088 100644
> --- a/configs/at91sam9n12ek_spiflash_defconfig
> +++ b/configs/at91sam9n12ek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9N12EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_dataflash_defconfig
> b/configs/at91sam9x5ek_dataflash_defconfig
> index dc13509715..60d865cc23 100644
> --- a/configs/at91sam9x5ek_dataflash_defconfig
> +++ b/configs/at91sam9x5ek_dataflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9X5EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_mmc_defconfig
> b/configs/at91sam9x5ek_mmc_defconfig
> index ff86f93e61..75f7fbd199 100644
> --- a/configs/at91sam9x5ek_mmc_defconfig
> +++ b/configs/at91sam9x5ek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9X5EK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_nandflash_defconfig
> b/configs/at91sam9x5ek_nandflash_defconfig
> index b2b3ddb6d9..dd6bdee7f9 100644
> --- a/configs/at91sam9x5ek_nandflash_defconfig
> +++ b/configs/at91sam9x5ek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9X5EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_spiflash_defconfig
> b/configs/at91sam9x5ek_spiflash_defconfig
> index d0eebcdc75..8d8108888c 100644
> --- a/configs/at91sam9x5ek_spiflash_defconfig
> +++ b/configs/at91sam9x5ek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_AT91SAM9X5EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SYS_MALLOC_F_LEN=0x2000
>  CONFIG_DEBUG_UART_BOARD_INIT=y
>  CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/sama5d3_xplained_mmc_defconfig
> b/configs/sama5d3_xplained_mmc_defconfig
> index eab38ec366..51d5aeaf0e 100644
> --- a/configs/sama5d3_xplained_mmc_defconfig
> +++ b/configs/sama5d3_xplained_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D3_XPLAINED=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3_xplained_nandflash_defconfig
> b/configs/sama5d3_xplained_nandflash_defconfig
> index ff7d2bffdd..ce1f28607e 100644
> --- a/configs/sama5d3_xplained_nandflash_defconfig
> +++ b/configs/sama5d3_xplained_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D3_XPLAINED=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3xek_mmc_defconfig
> b/configs/sama5d3xek_mmc_defconfig
> index 6faea0ec3f..49d4334213 100644
> --- a/configs/sama5d3xek_mmc_defconfig
> +++ b/configs/sama5d3xek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D3XEK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3xek_nandflash_defconfig
> b/configs/sama5d3xek_nandflash_defconfig
> index e641279ee1..b0d56e0e3e 100644
> --- a/configs/sama5d3xek_nandflash_defconfig
> +++ b/configs/sama5d3xek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D3XEK=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3xek_spiflash_defconfig
> b/configs/sama5d3xek_spiflash_defconfig
> index 37f603d528..cf2fb9e65b 100644
> --- a/configs/sama5d3xek_spiflash_defconfig
> +++ b/configs/sama5d3xek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D3XEK=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4_xplained_mmc_defconfig
> b/configs/sama5d4_xplained_mmc_defconfig
> index bfcea3f519..35b8302b60 100644
> --- a/configs/sama5d4_xplained_mmc_defconfig
> +++ b/configs/sama5d4_xplained_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D4_XPLAINED=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4_xplained_nandflash_defconfig
> b/configs/sama5d4_xplained_nandflash_defconfig
> index 2c1b7f17c0..93714ed0c7 100644
> --- a/configs/sama5d4_xplained_nandflash_defconfig
> +++ b/configs/sama5d4_xplained_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D4_XPLAINED=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4_xplained_spiflash_defconfig
> b/configs/sama5d4_xplained_spiflash_defconfig
> index a89dd11a8c..e1eb0c72cd 100644
> --- a/configs/sama5d4_xplained_spiflash_defconfig
> +++ b/configs/sama5d4_xplained_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D4_XPLAINED=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4ek_mmc_defconfig
> b/configs/sama5d4ek_mmc_defconfig
> index 45e6539913..bd238f7f14 100644
> --- a/configs/sama5d4ek_mmc_defconfig
> +++ b/configs/sama5d4ek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D4EK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4ek_nandflash_defconfig
> b/configs/sama5d4ek_nandflash_defconfig
> index 1497110452..3816bfb273 100644
> --- a/configs/sama5d4ek_nandflash_defconfig
> +++ b/configs/sama5d4ek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D4EK=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4ek_spiflash_defconfig
> b/configs/sama5d4ek_spiflash_defconfig
> index dad32b5711..242081e6a1 100644
> --- a/configs/sama5d4ek_spiflash_defconfig
> +++ b/configs/sama5d4ek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x26f00000
>  CONFIG_TARGET_SAMA5D4EK=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
> index 9d881e5d41..15fc17ac00 100644
> --- a/configs/wb45n_defconfig
> +++ b/configs/wb45n_defconfig
> @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x23f00000
>  CONFIG_TARGET_WB45N=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
> index c74eba1012..a7e9a53448 100644
> --- a/configs/wb50n_defconfig
> +++ b/configs/wb50n_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>  CONFIG_ARCH_AT91=y
>  CONFIG_SYS_TEXT_BASE=0x23f00000
>  CONFIG_TARGET_WB50N=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>  CONFIG_SPL_GPIO_SUPPORT=y
>  CONFIG_SPL_LIBCOMMON_SUPPORT=y
>  CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
> index 274d860f06..c86d085779 100644
> --- a/doc/README.atmel_pmecc
> +++ b/doc/README.atmel_pmecc
> @@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs to set:
>         2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
>            It only can be 512 or 1024.
>
> -Take AT91SAM9X5EK as an example, the board definition file likes:
> +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example, the board
> +configuration file has the following entries:
>
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC                1
> -#define CONFIG_ATMEL_NAND_HW_PMECC     1
> -#define CONFIG_PMECC_CAP               2
> -#define CONFIG_PMECC_SECTOR_SIZE       512
> +       CONFIG_PMECC_CAP=2
> +       CONFIG_PMECC_SECTOR_SIZE=512
> +       CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>
>  How to enable PMECC header for direct programmable boot.bin
>  -----------------------------------------------------------
> @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines how this
> PMECC header has to
>  look like. In order to do so we have a new image type added to mkimage to
>  generate this PMECC header and integrated this into the build process of
> SPL.
>
> -To enable the generation of atmel PMECC header for SPL one need to define
> +To enable the generation of atmel PMECC header for SPL one needs to define
>  CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are taken
> from
>  board configuration and compiled into the host tools atmel_pmecc_params.
> This
>  tool will be called in build process to parametrize mkimage for atmelimage
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index 008f7b4b4b..b99732736a 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -16,6 +16,44 @@ config NAND_ATMEL
>           Enable this driver for NAND flash platforms using an Atmel NAND
>           controller.
>
> +if NAND_ATMEL
> +
> +config ATMEL_NAND_HWECC
> +       bool "Atmel Hardware ECC"
> +       default n
> +
> +config ATMEL_NAND_HW_PMECC
> +       bool "Atmel Programmable Multibit ECC (PMECC)"
> +       select ATMEL_NAND_HWECC
> +       default n
> +       help
> +         The Programmable Multibit ECC (PMECC) controller is a
> programmable
> +         binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
> +
> +config PMECC_CAP
> +       int "PMECC Correctable ECC Bits"
> +       depends on ATMEL_NAND_HW_PMECC
> +       default 2
> +       help
> +         Correctable ECC bits, can be 2, 4, 8, 12, and 24.
> +
> +config PMECC_SECTOR_SIZE
> +       int "PMECC Sector Size"
> +       depends on ATMEL_NAND_HW_PMECC
> +       default 512
> +       help
> +         Sector size, in bytes, can be 512 or 1024.
> +
> +config SPL_GENERATE_ATMEL_PMECC_HEADER
> +       bool "Atmel PMECC Header Generation"
> +       select ATMEL_NAND_HWECC
> +       select ATMEL_NAND_HW_PMECC
> +       default n
> +       help
> +         Generate Programmable Multibit ECC (PMECC) header for SPL image.
> +
> +endif
> +
>  config NAND_DAVINCI
>         bool "Support TI Davinci NAND controller"
>         help
> diff --git a/include/configs/at91sam9n12ek.h
> b/include/configs/at91sam9n12ek.h
> index 6cd267eee6..777a99b730 100644
> --- a/include/configs/at91sam9n12ek.h
> +++ b/include/configs/at91sam9n12ek.h
> @@ -59,12 +59,6 @@
>  #define CONFIG_SYS_NAND_READY_PIN      GPIO_PIN_PD(5)
>  #endif
>
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP               2
> -#define CONFIG_PMECC_SECTOR_SIZE       512
> -
>  #define CONFIG_EXTRA_ENV_SETTINGS                                       \
>         "console=console=ttyS0,115200\0"                                \
>         "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"
>       \
> @@ -177,6 +171,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE                64
>  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/include/configs/at91sam9x5ek.h
> b/include/configs/at91sam9x5ek.h
> index 63305a7cdd..6adb965c3c 100644
> --- a/include/configs/at91sam9x5ek.h
> +++ b/include/configs/at91sam9x5ek.h
> @@ -55,12 +55,6 @@
>  #define CONFIG_SYS_NAND_READY_PIN      AT91_PIN_PD5
>  #endif
>
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC                1
> -#define CONFIG_ATMEL_NAND_HW_PMECC     1
> -#define CONFIG_PMECC_CAP               2
> -#define CONFIG_PMECC_SECTOR_SIZE       512
> -
>  /* USB */
>  #ifdef CONFIG_CMD_USB
>  #ifndef CONFIG_USB_EHCI_HCD
> @@ -151,6 +145,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE                64
>  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/include/configs/sama5d3_xplained.h
> b/include/configs/sama5d3_xplained.h
> index d0d8087ca3..8a9a19d38e 100644
> --- a/include/configs/sama5d3_xplained.h
> +++ b/include/configs/sama5d3_xplained.h
> @@ -43,14 +43,8 @@
>  #define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
>  #define CONFIG_SYS_NAND_ONFI_DETECTION
>  #endif
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP               4
> -#define CONFIG_PMECC_SECTOR_SIZE       512
>
>  /* USB */
> -
>  #ifdef CONFIG_CMD_USB
>  #define CONFIG_USB_ATMEL
>  #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> @@ -88,6 +82,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE                64
>  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
> index 4d3c3b8314..ca1c2b0861 100644
> --- a/include/configs/sama5d3xek.h
> +++ b/include/configs/sama5d3xek.h
> @@ -62,14 +62,8 @@
>  #define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
>  #define CONFIG_SYS_NAND_ONFI_DETECTION
>  #endif
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP               4
> -#define CONFIG_PMECC_SECTOR_SIZE       512
>
>  /* USB */
> -
>  #ifdef CONFIG_CMD_USB
>  #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>  #define CONFIG_USB_OHCI_NEW
> @@ -109,6 +103,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE                64
>  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/include/configs/sama5d4_xplained.h
> b/include/configs/sama5d4_xplained.h
> index 7f8ac178f3..bbb16993ec 100644
> --- a/include/configs/sama5d4_xplained.h
> +++ b/include/configs/sama5d4_xplained.h
> @@ -37,9 +37,6 @@
>  /* our CLE is AD22 */
>  #define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
>  #define CONFIG_SYS_NAND_ONFI_DETECTION
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
>  #endif
>
>  /* SPL */
> @@ -64,8 +61,6 @@
>  #define CONFIG_SPL_NAND_DRIVERS
>  #define CONFIG_SPL_NAND_BASE
>  #endif
> -#define CONFIG_PMECC_CAP               8
> -#define CONFIG_PMECC_SECTOR_SIZE       512
>  #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
>  #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>  #define CONFIG_SYS_NAND_PAGE_SIZE      0x1000
> @@ -73,6 +68,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE                224
>  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x40000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
> index aa8573d8ba..d58041650c 100644
> --- a/include/configs/sama5d4ek.h
> +++ b/include/configs/sama5d4ek.h
> @@ -37,9 +37,6 @@
>  /* our CLE is AD22 */
>  #define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
>  #define CONFIG_SYS_NAND_ONFI_DETECTION
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
>  #endif
>
>  /* SPL */
> @@ -63,8 +60,6 @@
>  #define CONFIG_SPL_NAND_DRIVERS
>  #define CONFIG_SPL_NAND_BASE
>  #endif
> -#define CONFIG_PMECC_CAP               8
> -#define CONFIG_PMECC_SECTOR_SIZE       512
>  #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
>  #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>  #define CONFIG_SYS_NAND_PAGE_SIZE      0x1000
> @@ -72,6 +67,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE                224
>  #define CONFIG_SYS_NAND_BLOCK_SIZE     0x40000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
> index b516b66c35..add4019b31 100644
> --- a/include/configs/wb45n.h
> +++ b/include/configs/wb45n.h
> @@ -48,12 +48,6 @@
>  #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
>  #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC     1
> -#define CONFIG_ATMEL_NAND_HW_PMECC  1
> -#define CONFIG_PMECC_CAP            4
> -#define CONFIG_PMECC_SECTOR_SIZE    512
> -
>  #define CONFIG_RBTREE
>  #define CONFIG_LZO
>
> @@ -141,6 +135,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE     64
>  #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif                         /* __CONFIG_H__ */
> diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
> index 40ca9d602b..2684b6c16c 100644
> --- a/include/configs/wb50n.h
> +++ b/include/configs/wb50n.h
> @@ -57,11 +57,6 @@
>  /* our CLE is AD22 */
>  #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>  #define CONFIG_SYS_NAND_ONFI_DETECTION
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP            8
> -#define CONFIG_PMECC_SECTOR_SIZE    512
>
>  /* Ethernet Hardware */
>  #define CONFIG_MACB
> @@ -118,6 +113,5 @@
>  #define CONFIG_SYS_NAND_OOBSIZE     64
>  #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>  #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>
>  #endif
> diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
> index b8addeaf69..f798c6542a 100644
> --- a/scripts/config_whitelist.txt
> +++ b/scripts/config_whitelist.txt
> @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
>  CONFIG_ATMEL_LCD_RGB565
>  CONFIG_ATMEL_LEGACY
>  CONFIG_ATMEL_MCI_8BIT
> -CONFIG_ATMEL_NAND_HWECC
> -CONFIG_ATMEL_NAND_HW_PMECC
>  CONFIG_ATMEL_SPI0
>  CONFIG_AT_TRANS
>  CONFIG_AUTO_ZRELADDR
> @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
>  CONFIG_PM
>  CONFIG_PMC_BR_PRELIM
>  CONFIG_PMC_OR_PRELIM
> -CONFIG_PMECC_CAP
> -CONFIG_PMECC_SECTOR_SIZE
>  CONFIG_PME_PLAT_CLK_DIV
>  CONFIG_PMU
>  CONFIG_PMW_BASE
> @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
>  CONFIG_SPL_FS_LOAD_KERNEL_NAME
>  CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
>  CONFIG_SPL_GD_ADDR
> -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>  CONFIG_SPL_INIT_MINIMAL
>  CONFIG_SPL_JR0_LIODN_NS
>  CONFIG_SPL_JR0_LIODN_S
> --
> 2.20.0
>
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2018-12-15  7:36               ` [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
  2018-12-28  0:04                 ` Derald Woods
@ 2019-01-07  9:40                 ` Eugen.Hristev at microchip.com
  2019-01-10  1:00                   ` Derald Woods
  2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
  2019-01-21 16:58                 ` [U-Boot] " Tom Rini
  3 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2019-01-07  9:40 UTC (permalink / raw)
  To: u-boot

Hi Derald,

Thank you for the patch,

Some minor questions inline.

On 15.12.2018 09:36, Derald D. Woods wrote:
> This commit converts the following items to Kconfig:
> 
> CONFIG_ATMEL_NAND_HWECC
> CONFIG_ATMEL_NAND_HW_PMECC
> CONFIG_PMECC_CAP
> CONFIG_PMECC_SECTOR_SIZE
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
> [PMECC References]
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> 
> [Mailing List Thread]
> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> 
> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
> Reported-by: Daniel Evans <photonthunder@gmail.com>
> Cc: Eugen Hristev <eugen.hristev@microchip.com>
> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
> ---
>   configs/at91sam9n12ek_mmc_defconfig          |  1 +
>   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
>   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
>   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
>   configs/at91sam9x5ek_mmc_defconfig           |  1 +
>   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
>   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
>   configs/sama5d3_xplained_mmc_defconfig       |  1 +
>   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
>   configs/sama5d3xek_mmc_defconfig             |  1 +
>   configs/sama5d3xek_nandflash_defconfig       |  3 ++
>   configs/sama5d3xek_spiflash_defconfig        |  3 ++
>   configs/sama5d4_xplained_mmc_defconfig       |  1 +
>   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
>   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
>   configs/sama5d4ek_mmc_defconfig              |  1 +
>   configs/sama5d4ek_nandflash_defconfig        |  3 ++
>   configs/sama5d4ek_spiflash_defconfig         |  3 ++
>   configs/wb45n_defconfig                      |  3 ++
>   configs/wb50n_defconfig                      |  3 ++
>   doc/README.atmel_pmecc                       | 13 ++++---
>   drivers/mtd/nand/raw/Kconfig                 | 38 ++++++++++++++++++++
>   include/configs/at91sam9n12ek.h              |  7 ----
>   include/configs/at91sam9x5ek.h               |  7 ----
>   include/configs/sama5d3_xplained.h           |  7 ----
>   include/configs/sama5d3xek.h                 |  7 ----
>   include/configs/sama5d4_xplained.h           |  6 ----
>   include/configs/sama5d4ek.h                  |  6 ----
>   include/configs/wb45n.h                      |  7 ----
>   include/configs/wb50n.h                      |  6 ----
>   scripts/config_whitelist.txt                 |  5 ---
>   31 files changed, 92 insertions(+), 65 deletions(-)
> 
> diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
> index 6b2cfe9c42..7b46eb498d 100644
> --- a/configs/at91sam9n12ek_mmc_defconfig
> +++ b/configs/at91sam9n12ek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9N12EK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
> index 354c24ff16..4e34a517fd 100644
> --- a/configs/at91sam9n12ek_nandflash_defconfig
> +++ b/configs/at91sam9n12ek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9N12EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
> index 63889355bf..500c3ab088 100644
> --- a/configs/at91sam9n12ek_spiflash_defconfig
> +++ b/configs/at91sam9n12ek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9N12EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y

Do we need to generate the PMECC header for SPI_BOOT configurations ?
I would say this would be required only for NAND_BOOT

>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
> index dc13509715..60d865cc23 100644
> --- a/configs/at91sam9x5ek_dataflash_defconfig
> +++ b/configs/at91sam9x5ek_dataflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9X5EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
> index ff86f93e61..75f7fbd199 100644
> --- a/configs/at91sam9x5ek_mmc_defconfig
> +++ b/configs/at91sam9x5ek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9X5EK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
> index b2b3ddb6d9..dd6bdee7f9 100644
> --- a/configs/at91sam9x5ek_nandflash_defconfig
> +++ b/configs/at91sam9x5ek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9X5EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
> index d0eebcdc75..8d8108888c 100644
> --- a/configs/at91sam9x5ek_spiflash_defconfig
> +++ b/configs/at91sam9x5ek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_AT91SAM9X5EK=y
> +CONFIG_PMECC_CAP=2
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y

Ditto.

>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_DEBUG_UART_BOARD_INIT=y
>   CONFIG_DEBUG_UART_BASE=0xfffff200
> diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
> index eab38ec366..51d5aeaf0e 100644
> --- a/configs/sama5d3_xplained_mmc_defconfig
> +++ b/configs/sama5d3_xplained_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
> index ff7d2bffdd..ce1f28607e 100644
> --- a/configs/sama5d3_xplained_nandflash_defconfig
> +++ b/configs/sama5d3_xplained_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
> index 6faea0ec3f..49d4334213 100644
> --- a/configs/sama5d3xek_mmc_defconfig
> +++ b/configs/sama5d3xek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D3XEK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
> index e641279ee1..b0d56e0e3e 100644
> --- a/configs/sama5d3xek_nandflash_defconfig
> +++ b/configs/sama5d3xek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D3XEK=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
> index 37f603d528..cf2fb9e65b 100644
> --- a/configs/sama5d3xek_spiflash_defconfig
> +++ b/configs/sama5d3xek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D3XEK=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y

Ditto

>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
> index bfcea3f519..35b8302b60 100644
> --- a/configs/sama5d4_xplained_mmc_defconfig
> +++ b/configs/sama5d4_xplained_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
> index 2c1b7f17c0..93714ed0c7 100644
> --- a/configs/sama5d4_xplained_nandflash_defconfig
> +++ b/configs/sama5d4_xplained_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
> index a89dd11a8c..e1eb0c72cd 100644
> --- a/configs/sama5d4_xplained_spiflash_defconfig
> +++ b/configs/sama5d4_xplained_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y

Ditto

>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
> index 45e6539913..bd238f7f14 100644
> --- a/configs/sama5d4ek_mmc_defconfig
> +++ b/configs/sama5d4ek_mmc_defconfig
> @@ -2,6 +2,7 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D4EK=y
> +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
> index 1497110452..3816bfb273 100644
> --- a/configs/sama5d4ek_nandflash_defconfig
> +++ b/configs/sama5d4ek_nandflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D4EK=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
> index dad32b5711..242081e6a1 100644
> --- a/configs/sama5d4ek_spiflash_defconfig
> +++ b/configs/sama5d4ek_spiflash_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x26f00000
>   CONFIG_TARGET_SAMA5D4EK=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y

Ditto

>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
> index 9d881e5d41..15fc17ac00 100644
> --- a/configs/wb45n_defconfig
> +++ b/configs/wb45n_defconfig
> @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x23f00000
>   CONFIG_TARGET_WB45N=y
> +CONFIG_PMECC_CAP=4
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
> index c74eba1012..a7e9a53448 100644
> --- a/configs/wb50n_defconfig
> +++ b/configs/wb50n_defconfig
> @@ -2,6 +2,9 @@ CONFIG_ARM=y
>   CONFIG_ARCH_AT91=y
>   CONFIG_SYS_TEXT_BASE=0x23f00000
>   CONFIG_TARGET_WB50N=y
> +CONFIG_PMECC_CAP=8
> +CONFIG_PMECC_SECTOR_SIZE=512
> +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   CONFIG_SPL_GPIO_SUPPORT=y
>   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
> index 274d860f06..c86d085779 100644
> --- a/doc/README.atmel_pmecc
> +++ b/doc/README.atmel_pmecc
> @@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs to set:
>   	2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
>   	   It only can be 512 or 1024.
>   
> -Take AT91SAM9X5EK as an example, the board definition file likes:
> +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example, the board
> +configuration file has the following entries:
>   
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC		1
> -#define CONFIG_ATMEL_NAND_HW_PMECC	1
> -#define CONFIG_PMECC_CAP		2
> -#define CONFIG_PMECC_SECTOR_SIZE	512
> +	CONFIG_PMECC_CAP=2
> +	CONFIG_PMECC_SECTOR_SIZE=512
> +	CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>   
>   How to enable PMECC header for direct programmable boot.bin
>   -----------------------------------------------------------
> @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines how this PMECC header has to
>   look like. In order to do so we have a new image type added to mkimage to
>   generate this PMECC header and integrated this into the build process of SPL.
>   
> -To enable the generation of atmel PMECC header for SPL one need to define
> +To enable the generation of atmel PMECC header for SPL one needs to define
>   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are taken from
>   board configuration and compiled into the host tools atmel_pmecc_params. This
>   tool will be called in build process to parametrize mkimage for atmelimage
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index 008f7b4b4b..b99732736a 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -16,6 +16,44 @@ config NAND_ATMEL
>   	  Enable this driver for NAND flash platforms using an Atmel NAND
>   	  controller.
>   
> +if NAND_ATMEL
> +
> +config ATMEL_NAND_HWECC
> +	bool "Atmel Hardware ECC"
> +	default n
> +
> +config ATMEL_NAND_HW_PMECC
> +	bool "Atmel Programmable Multibit ECC (PMECC)"
> +	select ATMEL_NAND_HWECC
> +	default n
> +	help
> +	  The Programmable Multibit ECC (PMECC) controller is a programmable
> +	  binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
> +
> +config PMECC_CAP
> +	int "PMECC Correctable ECC Bits"
> +	depends on ATMEL_NAND_HW_PMECC
> +	default 2
> +	help
> +	  Correctable ECC bits, can be 2, 4, 8, 12, and 24.
> +
> +config PMECC_SECTOR_SIZE
> +	int "PMECC Sector Size"
> +	depends on ATMEL_NAND_HW_PMECC
> +	default 512
> +	help
> +	  Sector size, in bytes, can be 512 or 1024.
> +
> +config SPL_GENERATE_ATMEL_PMECC_HEADER
> +	bool "Atmel PMECC Header Generation"
> +	select ATMEL_NAND_HWECC
> +	select ATMEL_NAND_HW_PMECC
> +	default n
> +	help
> +	  Generate Programmable Multibit ECC (PMECC) header for SPL image.
> +
> +endif
> +
>   config NAND_DAVINCI
>   	bool "Support TI Davinci NAND controller"
>   	help
> diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h
> index 6cd267eee6..777a99b730 100644
> --- a/include/configs/at91sam9n12ek.h
> +++ b/include/configs/at91sam9n12ek.h
> @@ -59,12 +59,6 @@
>   #define CONFIG_SYS_NAND_READY_PIN	GPIO_PIN_PD(5)
>   #endif
>   
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP		2
> -#define CONFIG_PMECC_SECTOR_SIZE	512
> -
>   #define CONFIG_EXTRA_ENV_SETTINGS                                       \
>   	"console=console=ttyS0,115200\0"                                \
>   	"mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"					\
> @@ -177,6 +171,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE		64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/include/configs/at91sam9x5ek.h b/include/configs/at91sam9x5ek.h
> index 63305a7cdd..6adb965c3c 100644
> --- a/include/configs/at91sam9x5ek.h
> +++ b/include/configs/at91sam9x5ek.h
> @@ -55,12 +55,6 @@
>   #define CONFIG_SYS_NAND_READY_PIN	AT91_PIN_PD5
>   #endif
>   
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC		1
> -#define CONFIG_ATMEL_NAND_HW_PMECC	1
> -#define CONFIG_PMECC_CAP		2
> -#define CONFIG_PMECC_SECTOR_SIZE	512
> -
>   /* USB */
>   #ifdef CONFIG_CMD_USB
>   #ifndef CONFIG_USB_EHCI_HCD
> @@ -151,6 +145,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE		64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/include/configs/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
> index d0d8087ca3..8a9a19d38e 100644
> --- a/include/configs/sama5d3_xplained.h
> +++ b/include/configs/sama5d3_xplained.h
> @@ -43,14 +43,8 @@
>   #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
>   #define CONFIG_SYS_NAND_ONFI_DETECTION
>   #endif
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP		4
> -#define CONFIG_PMECC_SECTOR_SIZE	512
>   
>   /* USB */
> -
>   #ifdef CONFIG_CMD_USB
>   #define CONFIG_USB_ATMEL
>   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> @@ -88,6 +82,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE		64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
> index 4d3c3b8314..ca1c2b0861 100644
> --- a/include/configs/sama5d3xek.h
> +++ b/include/configs/sama5d3xek.h
> @@ -62,14 +62,8 @@
>   #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
>   #define CONFIG_SYS_NAND_ONFI_DETECTION
>   #endif
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP		4
> -#define CONFIG_PMECC_SECTOR_SIZE	512
>   
>   /* USB */
> -
Unrelated change ?

>   #ifdef CONFIG_CMD_USB
>   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>   #define CONFIG_USB_OHCI_NEW
> @@ -109,6 +103,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE		64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h
> index 7f8ac178f3..bbb16993ec 100644
> --- a/include/configs/sama5d4_xplained.h
> +++ b/include/configs/sama5d4_xplained.h
> @@ -37,9 +37,6 @@
>   /* our CLE is AD22 */
>   #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
>   #define CONFIG_SYS_NAND_ONFI_DETECTION
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
>   #endif
>   
>   /* SPL */
> @@ -64,8 +61,6 @@
>   #define CONFIG_SPL_NAND_DRIVERS
>   #define CONFIG_SPL_NAND_BASE
>   #endif
> -#define CONFIG_PMECC_CAP		8
> -#define CONFIG_PMECC_SECTOR_SIZE	512
>   #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
>   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>   #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
> @@ -73,6 +68,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE		224
>   #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
> index aa8573d8ba..d58041650c 100644
> --- a/include/configs/sama5d4ek.h
> +++ b/include/configs/sama5d4ek.h
> @@ -37,9 +37,6 @@
>   /* our CLE is AD22 */
>   #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
>   #define CONFIG_SYS_NAND_ONFI_DETECTION
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
>   #endif
>   
>   /* SPL */
> @@ -63,8 +60,6 @@
>   #define CONFIG_SPL_NAND_DRIVERS
>   #define CONFIG_SPL_NAND_BASE
>   #endif
> -#define CONFIG_PMECC_CAP		8
> -#define CONFIG_PMECC_SECTOR_SIZE	512
>   #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
>   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>   #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
> @@ -72,6 +67,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE		224
>   #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
> index b516b66c35..add4019b31 100644
> --- a/include/configs/wb45n.h
> +++ b/include/configs/wb45n.h
> @@ -48,12 +48,6 @@
>   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
>   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>   
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC     1
> -#define CONFIG_ATMEL_NAND_HW_PMECC  1
> -#define CONFIG_PMECC_CAP            4
> -#define CONFIG_PMECC_SECTOR_SIZE    512
> -
>   #define CONFIG_RBTREE
>   #define CONFIG_LZO
>   
> @@ -141,6 +135,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE     64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif				/* __CONFIG_H__ */
> diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
> index 40ca9d602b..2684b6c16c 100644
> --- a/include/configs/wb50n.h
> +++ b/include/configs/wb50n.h
> @@ -57,11 +57,6 @@
>   /* our CLE is AD22 */
>   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>   #define CONFIG_SYS_NAND_ONFI_DETECTION
> -/* PMECC & PMERRLOC */
> -#define CONFIG_ATMEL_NAND_HWECC
> -#define CONFIG_ATMEL_NAND_HW_PMECC
> -#define CONFIG_PMECC_CAP            8
> -#define CONFIG_PMECC_SECTOR_SIZE    512
>   
>   /* Ethernet Hardware */
>   #define CONFIG_MACB
> @@ -118,6 +113,5 @@
>   #define CONFIG_SYS_NAND_OOBSIZE     64
>   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   
>   #endif
> diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
> index b8addeaf69..f798c6542a 100644
> --- a/scripts/config_whitelist.txt
> +++ b/scripts/config_whitelist.txt
> @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
>   CONFIG_ATMEL_LCD_RGB565
>   CONFIG_ATMEL_LEGACY
>   CONFIG_ATMEL_MCI_8BIT
> -CONFIG_ATMEL_NAND_HWECC
> -CONFIG_ATMEL_NAND_HW_PMECC
>   CONFIG_ATMEL_SPI0
>   CONFIG_AT_TRANS
>   CONFIG_AUTO_ZRELADDR
> @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
>   CONFIG_PM
>   CONFIG_PMC_BR_PRELIM
>   CONFIG_PMC_OR_PRELIM
> -CONFIG_PMECC_CAP
> -CONFIG_PMECC_SECTOR_SIZE
>   CONFIG_PME_PLAT_CLK_DIV
>   CONFIG_PMU
>   CONFIG_PMW_BASE
> @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
>   CONFIG_SPL_FS_LOAD_KERNEL_NAME
>   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
>   CONFIG_SPL_GD_ADDR
> -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>   CONFIG_SPL_INIT_MINIMAL
>   CONFIG_SPL_JR0_LIODN_NS
>   CONFIG_SPL_JR0_LIODN_S
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-07  9:40                 ` Eugen.Hristev at microchip.com
@ 2019-01-10  1:00                   ` Derald Woods
  2019-01-11 11:27                     ` Eugen.Hristev at microchip.com
  0 siblings, 1 reply; 32+ messages in thread
From: Derald Woods @ 2019-01-10  1:00 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 7, 2019 at 3:40 AM <Eugen.Hristev@microchip.com> wrote:

> Hi Derald,
>
> Thank you for the patch,
>
> Some minor questions inline.
>


Sorry for the late response. Family and day job take priority.

The patch is the simplest technical conversion that I could produce with my
board (SAMA5D3-XPLD) as the test platform. I was very careful not to touch
anything unrelated. It is not intended to address permutations outside of
the PMECC Kconfig scope. I have submitted these type of conversions to
U-Boot in the past. Adding speculative things is risky when you only have
one development board. The patch works well, for me, and addresses the
original need. All items, in the patch, are currently in scope. If there
are additions and/or modifications, feel free to modify the patch. It is
complete from my perspective. I do not have any additional time to chase
this any further. I have been developing for some time now and can handle
an 'out of tree' patch, in my environment, until something better comes
along. This patch is just my contribution to the process.

Cheers,

Derald



>
> On 15.12.2018 09:36, Derald D. Woods wrote:
> > This commit converts the following items to Kconfig:
> >
> > CONFIG_ATMEL_NAND_HWECC
> > CONFIG_ATMEL_NAND_HW_PMECC
> > CONFIG_PMECC_CAP
> > CONFIG_PMECC_SECTOR_SIZE
> > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> > [PMECC References]
> > https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> > https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> >
> > [Mailing List Thread]
> > https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> >
> > Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
> assignment")
> > Reported-by: Daniel Evans <photonthunder@gmail.com>
> > Cc: Eugen Hristev <eugen.hristev@microchip.com>
> > Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
> > ---
> >   configs/at91sam9n12ek_mmc_defconfig          |  1 +
> >   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
> >   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
> >   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
> >   configs/at91sam9x5ek_mmc_defconfig           |  1 +
> >   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
> >   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
> >   configs/sama5d3_xplained_mmc_defconfig       |  1 +
> >   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
> >   configs/sama5d3xek_mmc_defconfig             |  1 +
> >   configs/sama5d3xek_nandflash_defconfig       |  3 ++
> >   configs/sama5d3xek_spiflash_defconfig        |  3 ++
> >   configs/sama5d4_xplained_mmc_defconfig       |  1 +
> >   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
> >   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
> >   configs/sama5d4ek_mmc_defconfig              |  1 +
> >   configs/sama5d4ek_nandflash_defconfig        |  3 ++
> >   configs/sama5d4ek_spiflash_defconfig         |  3 ++
> >   configs/wb45n_defconfig                      |  3 ++
> >   configs/wb50n_defconfig                      |  3 ++
> >   doc/README.atmel_pmecc                       | 13 ++++---
> >   drivers/mtd/nand/raw/Kconfig                 | 38 ++++++++++++++++++++
> >   include/configs/at91sam9n12ek.h              |  7 ----
> >   include/configs/at91sam9x5ek.h               |  7 ----
> >   include/configs/sama5d3_xplained.h           |  7 ----
> >   include/configs/sama5d3xek.h                 |  7 ----
> >   include/configs/sama5d4_xplained.h           |  6 ----
> >   include/configs/sama5d4ek.h                  |  6 ----
> >   include/configs/wb45n.h                      |  7 ----
> >   include/configs/wb50n.h                      |  6 ----
> >   scripts/config_whitelist.txt                 |  5 ---
> >   31 files changed, 92 insertions(+), 65 deletions(-)
> >
> > diff --git a/configs/at91sam9n12ek_mmc_defconfig
> b/configs/at91sam9n12ek_mmc_defconfig
> > index 6b2cfe9c42..7b46eb498d 100644
> > --- a/configs/at91sam9n12ek_mmc_defconfig
> > +++ b/configs/at91sam9n12ek_mmc_defconfig
> > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9N12EK=y
> > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/at91sam9n12ek_nandflash_defconfig
> b/configs/at91sam9n12ek_nandflash_defconfig
> > index 354c24ff16..4e34a517fd 100644
> > --- a/configs/at91sam9n12ek_nandflash_defconfig
> > +++ b/configs/at91sam9n12ek_nandflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9N12EK=y
> > +CONFIG_PMECC_CAP=2
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/at91sam9n12ek_spiflash_defconfig
> b/configs/at91sam9n12ek_spiflash_defconfig
> > index 63889355bf..500c3ab088 100644
> > --- a/configs/at91sam9n12ek_spiflash_defconfig
> > +++ b/configs/at91sam9n12ek_spiflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9N12EK=y
> > +CONFIG_PMECC_CAP=2
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>
> Do we need to generate the PMECC header for SPI_BOOT configurations ?
> I would say this would be required only for NAND_BOOT
>
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/at91sam9x5ek_dataflash_defconfig
> b/configs/at91sam9x5ek_dataflash_defconfig
> > index dc13509715..60d865cc23 100644
> > --- a/configs/at91sam9x5ek_dataflash_defconfig
> > +++ b/configs/at91sam9x5ek_dataflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9X5EK=y
> > +CONFIG_PMECC_CAP=2
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/at91sam9x5ek_mmc_defconfig
> b/configs/at91sam9x5ek_mmc_defconfig
> > index ff86f93e61..75f7fbd199 100644
> > --- a/configs/at91sam9x5ek_mmc_defconfig
> > +++ b/configs/at91sam9x5ek_mmc_defconfig
> > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9X5EK=y
> > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/at91sam9x5ek_nandflash_defconfig
> b/configs/at91sam9x5ek_nandflash_defconfig
> > index b2b3ddb6d9..dd6bdee7f9 100644
> > --- a/configs/at91sam9x5ek_nandflash_defconfig
> > +++ b/configs/at91sam9x5ek_nandflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9X5EK=y
> > +CONFIG_PMECC_CAP=2
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/at91sam9x5ek_spiflash_defconfig
> b/configs/at91sam9x5ek_spiflash_defconfig
> > index d0eebcdc75..8d8108888c 100644
> > --- a/configs/at91sam9x5ek_spiflash_defconfig
> > +++ b/configs/at91sam9x5ek_spiflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_AT91SAM9X5EK=y
> > +CONFIG_PMECC_CAP=2
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>
> Ditto.
>
> >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >   CONFIG_DEBUG_UART_BASE=0xfffff200
> > diff --git a/configs/sama5d3_xplained_mmc_defconfig
> b/configs/sama5d3_xplained_mmc_defconfig
> > index eab38ec366..51d5aeaf0e 100644
> > --- a/configs/sama5d3_xplained_mmc_defconfig
> > +++ b/configs/sama5d3_xplained_mmc_defconfig
> > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d3_xplained_nandflash_defconfig
> b/configs/sama5d3_xplained_nandflash_defconfig
> > index ff7d2bffdd..ce1f28607e 100644
> > --- a/configs/sama5d3_xplained_nandflash_defconfig
> > +++ b/configs/sama5d3_xplained_nandflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> > +CONFIG_PMECC_CAP=4
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d3xek_mmc_defconfig
> b/configs/sama5d3xek_mmc_defconfig
> > index 6faea0ec3f..49d4334213 100644
> > --- a/configs/sama5d3xek_mmc_defconfig
> > +++ b/configs/sama5d3xek_mmc_defconfig
> > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D3XEK=y
> > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d3xek_nandflash_defconfig
> b/configs/sama5d3xek_nandflash_defconfig
> > index e641279ee1..b0d56e0e3e 100644
> > --- a/configs/sama5d3xek_nandflash_defconfig
> > +++ b/configs/sama5d3xek_nandflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D3XEK=y
> > +CONFIG_PMECC_CAP=4
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d3xek_spiflash_defconfig
> b/configs/sama5d3xek_spiflash_defconfig
> > index 37f603d528..cf2fb9e65b 100644
> > --- a/configs/sama5d3xek_spiflash_defconfig
> > +++ b/configs/sama5d3xek_spiflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D3XEK=y
> > +CONFIG_PMECC_CAP=4
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>
> Ditto
>
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d4_xplained_mmc_defconfig
> b/configs/sama5d4_xplained_mmc_defconfig
> > index bfcea3f519..35b8302b60 100644
> > --- a/configs/sama5d4_xplained_mmc_defconfig
> > +++ b/configs/sama5d4_xplained_mmc_defconfig
> > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d4_xplained_nandflash_defconfig
> b/configs/sama5d4_xplained_nandflash_defconfig
> > index 2c1b7f17c0..93714ed0c7 100644
> > --- a/configs/sama5d4_xplained_nandflash_defconfig
> > +++ b/configs/sama5d4_xplained_nandflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> > +CONFIG_PMECC_CAP=8
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d4_xplained_spiflash_defconfig
> b/configs/sama5d4_xplained_spiflash_defconfig
> > index a89dd11a8c..e1eb0c72cd 100644
> > --- a/configs/sama5d4_xplained_spiflash_defconfig
> > +++ b/configs/sama5d4_xplained_spiflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> > +CONFIG_PMECC_CAP=8
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>
> Ditto
>
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d4ek_mmc_defconfig
> b/configs/sama5d4ek_mmc_defconfig
> > index 45e6539913..bd238f7f14 100644
> > --- a/configs/sama5d4ek_mmc_defconfig
> > +++ b/configs/sama5d4ek_mmc_defconfig
> > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D4EK=y
> > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d4ek_nandflash_defconfig
> b/configs/sama5d4ek_nandflash_defconfig
> > index 1497110452..3816bfb273 100644
> > --- a/configs/sama5d4ek_nandflash_defconfig
> > +++ b/configs/sama5d4ek_nandflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D4EK=y
> > +CONFIG_PMECC_CAP=8
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/sama5d4ek_spiflash_defconfig
> b/configs/sama5d4ek_spiflash_defconfig
> > index dad32b5711..242081e6a1 100644
> > --- a/configs/sama5d4ek_spiflash_defconfig
> > +++ b/configs/sama5d4ek_spiflash_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >   CONFIG_TARGET_SAMA5D4EK=y
> > +CONFIG_PMECC_CAP=8
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>
> Ditto
>
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
> > index 9d881e5d41..15fc17ac00 100644
> > --- a/configs/wb45n_defconfig
> > +++ b/configs/wb45n_defconfig
> > @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x23f00000
> >   CONFIG_TARGET_WB45N=y
> > +CONFIG_PMECC_CAP=4
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
> > index c74eba1012..a7e9a53448 100644
> > --- a/configs/wb50n_defconfig
> > +++ b/configs/wb50n_defconfig
> > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >   CONFIG_ARCH_AT91=y
> >   CONFIG_SYS_TEXT_BASE=0x23f00000
> >   CONFIG_TARGET_WB50N=y
> > +CONFIG_PMECC_CAP=8
> > +CONFIG_PMECC_SECTOR_SIZE=512
> > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >   CONFIG_SPL_GPIO_SUPPORT=y
> >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> > diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
> > index 274d860f06..c86d085779 100644
> > --- a/doc/README.atmel_pmecc
> > +++ b/doc/README.atmel_pmecc
> > @@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs to set:
> >       2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
> >          It only can be 512 or 1024.
> >
> > -Take AT91SAM9X5EK as an example, the board definition file likes:
> > +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example, the board
> > +configuration file has the following entries:
> >
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC              1
> > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
> > -#define CONFIG_PMECC_CAP             2
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> > +     CONFIG_PMECC_CAP=2
> > +     CONFIG_PMECC_SECTOR_SIZE=512
> > +     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >
> >   How to enable PMECC header for direct programmable boot.bin
> >   -----------------------------------------------------------
> > @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines how
> this PMECC header has to
> >   look like. In order to do so we have a new image type added to mkimage
> to
> >   generate this PMECC header and integrated this into the build process
> of SPL.
> >
> > -To enable the generation of atmel PMECC header for SPL one need to
> define
> > +To enable the generation of atmel PMECC header for SPL one needs to
> define
> >   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are
> taken from
> >   board configuration and compiled into the host tools
> atmel_pmecc_params. This
> >   tool will be called in build process to parametrize mkimage for
> atmelimage
> > diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> > index 008f7b4b4b..b99732736a 100644
> > --- a/drivers/mtd/nand/raw/Kconfig
> > +++ b/drivers/mtd/nand/raw/Kconfig
> > @@ -16,6 +16,44 @@ config NAND_ATMEL
> >         Enable this driver for NAND flash platforms using an Atmel NAND
> >         controller.
> >
> > +if NAND_ATMEL
> > +
> > +config ATMEL_NAND_HWECC
> > +     bool "Atmel Hardware ECC"
> > +     default n
> > +
> > +config ATMEL_NAND_HW_PMECC
> > +     bool "Atmel Programmable Multibit ECC (PMECC)"
> > +     select ATMEL_NAND_HWECC
> > +     default n
> > +     help
> > +       The Programmable Multibit ECC (PMECC) controller is a
> programmable
> > +       binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
> > +
> > +config PMECC_CAP
> > +     int "PMECC Correctable ECC Bits"
> > +     depends on ATMEL_NAND_HW_PMECC
> > +     default 2
> > +     help
> > +       Correctable ECC bits, can be 2, 4, 8, 12, and 24.
> > +
> > +config PMECC_SECTOR_SIZE
> > +     int "PMECC Sector Size"
> > +     depends on ATMEL_NAND_HW_PMECC
> > +     default 512
> > +     help
> > +       Sector size, in bytes, can be 512 or 1024.
> > +
> > +config SPL_GENERATE_ATMEL_PMECC_HEADER
> > +     bool "Atmel PMECC Header Generation"
> > +     select ATMEL_NAND_HWECC
> > +     select ATMEL_NAND_HW_PMECC
> > +     default n
> > +     help
> > +       Generate Programmable Multibit ECC (PMECC) header for SPL image.
> > +
> > +endif
> > +
> >   config NAND_DAVINCI
> >       bool "Support TI Davinci NAND controller"
> >       help
> > diff --git a/include/configs/at91sam9n12ek.h
> b/include/configs/at91sam9n12ek.h
> > index 6cd267eee6..777a99b730 100644
> > --- a/include/configs/at91sam9n12ek.h
> > +++ b/include/configs/at91sam9n12ek.h
> > @@ -59,12 +59,6 @@
> >   #define CONFIG_SYS_NAND_READY_PIN   GPIO_PIN_PD(5)
> >   #endif
> >
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC
> > -#define CONFIG_ATMEL_NAND_HW_PMECC
> > -#define CONFIG_PMECC_CAP             2
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> > -
> >   #define CONFIG_EXTRA_ENV_SETTINGS
>  \
> >       "console=console=ttyS0,115200\0"                                \
> >       "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"
>       \
> > @@ -177,6 +171,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/include/configs/at91sam9x5ek.h
> b/include/configs/at91sam9x5ek.h
> > index 63305a7cdd..6adb965c3c 100644
> > --- a/include/configs/at91sam9x5ek.h
> > +++ b/include/configs/at91sam9x5ek.h
> > @@ -55,12 +55,6 @@
> >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
> >   #endif
> >
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC              1
> > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
> > -#define CONFIG_PMECC_CAP             2
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> > -
> >   /* USB */
> >   #ifdef CONFIG_CMD_USB
> >   #ifndef CONFIG_USB_EHCI_HCD
> > @@ -151,6 +145,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/include/configs/sama5d3_xplained.h
> b/include/configs/sama5d3_xplained.h
> > index d0d8087ca3..8a9a19d38e 100644
> > --- a/include/configs/sama5d3_xplained.h
> > +++ b/include/configs/sama5d3_xplained.h
> > @@ -43,14 +43,8 @@
> >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >   #endif
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC
> > -#define CONFIG_ATMEL_NAND_HW_PMECC
> > -#define CONFIG_PMECC_CAP             4
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >
> >   /* USB */
> > -
> >   #ifdef CONFIG_CMD_USB
> >   #define CONFIG_USB_ATMEL
> >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> > @@ -88,6 +82,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
> > index 4d3c3b8314..ca1c2b0861 100644
> > --- a/include/configs/sama5d3xek.h
> > +++ b/include/configs/sama5d3xek.h
> > @@ -62,14 +62,8 @@
> >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >   #endif
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC
> > -#define CONFIG_ATMEL_NAND_HW_PMECC
> > -#define CONFIG_PMECC_CAP             4
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >
> >   /* USB */
> > -
> Unrelated change ?
>
> >   #ifdef CONFIG_CMD_USB
> >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> >   #define CONFIG_USB_OHCI_NEW
> > @@ -109,6 +103,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/include/configs/sama5d4_xplained.h
> b/include/configs/sama5d4_xplained.h
> > index 7f8ac178f3..bbb16993ec 100644
> > --- a/include/configs/sama5d4_xplained.h
> > +++ b/include/configs/sama5d4_xplained.h
> > @@ -37,9 +37,6 @@
> >   /* our CLE is AD22 */
> >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC
> > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >   #endif
> >
> >   /* SPL */
> > @@ -64,8 +61,6 @@
> >   #define CONFIG_SPL_NAND_DRIVERS
> >   #define CONFIG_SPL_NAND_BASE
> >   #endif
> > -#define CONFIG_PMECC_CAP             8
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
> > @@ -73,6 +68,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE             224
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
> > index aa8573d8ba..d58041650c 100644
> > --- a/include/configs/sama5d4ek.h
> > +++ b/include/configs/sama5d4ek.h
> > @@ -37,9 +37,6 @@
> >   /* our CLE is AD22 */
> >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC
> > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >   #endif
> >
> >   /* SPL */
> > @@ -63,8 +60,6 @@
> >   #define CONFIG_SPL_NAND_DRIVERS
> >   #define CONFIG_SPL_NAND_BASE
> >   #endif
> > -#define CONFIG_PMECC_CAP             8
> > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
> > @@ -72,6 +67,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE             224
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
> > index b516b66c35..add4019b31 100644
> > --- a/include/configs/wb45n.h
> > +++ b/include/configs/wb45n.h
> > @@ -48,12 +48,6 @@
> >   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
> >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
> >
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC     1
> > -#define CONFIG_ATMEL_NAND_HW_PMECC  1
> > -#define CONFIG_PMECC_CAP            4
> > -#define CONFIG_PMECC_SECTOR_SIZE    512
> > -
> >   #define CONFIG_RBTREE
> >   #define CONFIG_LZO
> >
> > @@ -141,6 +135,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE     64
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif                              /* __CONFIG_H__ */
> > diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
> > index 40ca9d602b..2684b6c16c 100644
> > --- a/include/configs/wb50n.h
> > +++ b/include/configs/wb50n.h
> > @@ -57,11 +57,6 @@
> >   /* our CLE is AD22 */
> >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> > -/* PMECC & PMERRLOC */
> > -#define CONFIG_ATMEL_NAND_HWECC
> > -#define CONFIG_ATMEL_NAND_HW_PMECC
> > -#define CONFIG_PMECC_CAP            8
> > -#define CONFIG_PMECC_SECTOR_SIZE    512
> >
> >   /* Ethernet Hardware */
> >   #define CONFIG_MACB
> > @@ -118,6 +113,5 @@
> >   #define CONFIG_SYS_NAND_OOBSIZE     64
> >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> >   #endif
> > diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
> > index b8addeaf69..f798c6542a 100644
> > --- a/scripts/config_whitelist.txt
> > +++ b/scripts/config_whitelist.txt
> > @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
> >   CONFIG_ATMEL_LCD_RGB565
> >   CONFIG_ATMEL_LEGACY
> >   CONFIG_ATMEL_MCI_8BIT
> > -CONFIG_ATMEL_NAND_HWECC
> > -CONFIG_ATMEL_NAND_HW_PMECC
> >   CONFIG_ATMEL_SPI0
> >   CONFIG_AT_TRANS
> >   CONFIG_AUTO_ZRELADDR
> > @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
> >   CONFIG_PM
> >   CONFIG_PMC_BR_PRELIM
> >   CONFIG_PMC_OR_PRELIM
> > -CONFIG_PMECC_CAP
> > -CONFIG_PMECC_SECTOR_SIZE
> >   CONFIG_PME_PLAT_CLK_DIV
> >   CONFIG_PMU
> >   CONFIG_PMW_BASE
> > @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
> >   CONFIG_SPL_FS_LOAD_KERNEL_NAME
> >   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
> >   CONFIG_SPL_GD_ADDR
> > -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >   CONFIG_SPL_INIT_MINIMAL
> >   CONFIG_SPL_JR0_LIODN_NS
> >   CONFIG_SPL_JR0_LIODN_S
> >
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-10  1:00                   ` Derald Woods
@ 2019-01-11 11:27                     ` Eugen.Hristev at microchip.com
  2019-01-11 16:51                       ` Derald Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2019-01-11 11:27 UTC (permalink / raw)
  To: u-boot



On 10.01.2019 03:00, Derald Woods wrote:
> On Mon, Jan 7, 2019 at 3:40 AM <Eugen.Hristev@microchip.com 
> <mailto:Eugen.Hristev@microchip.com>> wrote:
> 
>     Hi Derald,
> 
>     Thank you for the patch,
> 
>     Some minor questions inline.
> 
> 
> 
> Sorry for the late response. Family and day job take priority.
> 
> The patch is the simplest technical conversion that I could produce with 
> my board (SAMA5D3-XPLD) as the test platform. I was very careful not to 
> touch anything unrelated. It is not intended to address permutations 
> outside of the PMECC Kconfig scope. I have submitted these type of 
> conversions to U-Boot in the past. Adding speculative things is risky 
> when you only have one development board. The patch works well, for me, 
> and addresses the original need. All items, in the patch, are currently 
> in scope. If there are additions and/or modifications, feel free to 
> modify the patch. It is complete from my perspective. I do not have any 
> additional time to chase this any further. I have been developing for 
> some time now and can handle an 'out of tree' patch, in my environment, 
> until something better comes along. This patch is just my contribution 
> to the process.

Hello Derald,

 From my point of view the PMECC header generation for SPL should be 
done if and only if the SPL is being placed in NAND flash namely 
defconfigs having *nandflash* in the name.

Thus I disagree with enabling it on spiflash configurations (like you 
did for the *mmc* configurations looks OK)

If you have any reasons or arguments , or anyone else does, please 
correct me.

If you do not have time to change the patch, that is OK, I can take over 
at some point when I have the time or someone else can pick and rework a 
little bit on that specific point and make a v2.

Thanks again,

Eugen

> 
> Cheers,
> 
> Derald
> 
> 
>     On 15.12.2018 09:36, Derald D. Woods wrote:
>      > This commit converts the following items to Kconfig:
>      >
>      > CONFIG_ATMEL_NAND_HWECC
>      > CONFIG_ATMEL_NAND_HW_PMECC
>      > CONFIG_PMECC_CAP
>      > CONFIG_PMECC_SECTOR_SIZE
>      > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      > [PMECC References]
>      > https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
>      > https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
>      >
>      > [Mailing List Thread]
>      > https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
>      >
>      > Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
>     assignment")
>      > Reported-by: Daniel Evans <photonthunder@gmail.com
>     <mailto:photonthunder@gmail.com>>
>      > Cc: Eugen Hristev <eugen.hristev@microchip.com
>     <mailto:eugen.hristev@microchip.com>>
>      > Signed-off-by: Derald D. Woods <woods.technical@gmail.com
>     <mailto:woods.technical@gmail.com>>
>      > ---
>      >   configs/at91sam9n12ek_mmc_defconfig          |  1 +
>      >   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
>      >   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
>      >   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
>      >   configs/at91sam9x5ek_mmc_defconfig           |  1 +
>      >   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
>      >   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
>      >   configs/sama5d3_xplained_mmc_defconfig       |  1 +
>      >   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
>      >   configs/sama5d3xek_mmc_defconfig             |  1 +
>      >   configs/sama5d3xek_nandflash_defconfig       |  3 ++
>      >   configs/sama5d3xek_spiflash_defconfig        |  3 ++
>      >   configs/sama5d4_xplained_mmc_defconfig       |  1 +
>      >   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
>      >   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
>      >   configs/sama5d4ek_mmc_defconfig              |  1 +
>      >   configs/sama5d4ek_nandflash_defconfig        |  3 ++
>      >   configs/sama5d4ek_spiflash_defconfig         |  3 ++
>      >   configs/wb45n_defconfig                      |  3 ++
>      >   configs/wb50n_defconfig                      |  3 ++
>      >   doc/README.atmel_pmecc                       | 13 ++++---
>      >   drivers/mtd/nand/raw/Kconfig                 | 38
>     ++++++++++++++++++++
>      >   include/configs/at91sam9n12ek.h              |  7 ----
>      >   include/configs/at91sam9x5ek.h               |  7 ----
>      >   include/configs/sama5d3_xplained.h           |  7 ----
>      >   include/configs/sama5d3xek.h                 |  7 ----
>      >   include/configs/sama5d4_xplained.h           |  6 ----
>      >   include/configs/sama5d4ek.h                  |  6 ----
>      >   include/configs/wb45n.h                      |  7 ----
>      >   include/configs/wb50n.h                      |  6 ----
>      >   scripts/config_whitelist.txt                 |  5 ---
>      >   31 files changed, 92 insertions(+), 65 deletions(-)
>      >
>      > diff --git a/configs/at91sam9n12ek_mmc_defconfig
>     b/configs/at91sam9n12ek_mmc_defconfig
>      > index 6b2cfe9c42..7b46eb498d 100644
>      > --- a/configs/at91sam9n12ek_mmc_defconfig
>      > +++ b/configs/at91sam9n12ek_mmc_defconfig
>      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9N12EK=y
>      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/at91sam9n12ek_nandflash_defconfig
>     b/configs/at91sam9n12ek_nandflash_defconfig
>      > index 354c24ff16..4e34a517fd 100644
>      > --- a/configs/at91sam9n12ek_nandflash_defconfig
>      > +++ b/configs/at91sam9n12ek_nandflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9N12EK=y
>      > +CONFIG_PMECC_CAP=2
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/at91sam9n12ek_spiflash_defconfig
>     b/configs/at91sam9n12ek_spiflash_defconfig
>      > index 63889355bf..500c3ab088 100644
>      > --- a/configs/at91sam9n12ek_spiflash_defconfig
>      > +++ b/configs/at91sam9n12ek_spiflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9N12EK=y
>      > +CONFIG_PMECC_CAP=2
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> 
>     Do we need to generate the PMECC header for SPI_BOOT configurations ?
>     I would say this would be required only for NAND_BOOT
> 
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/at91sam9x5ek_dataflash_defconfig
>     b/configs/at91sam9x5ek_dataflash_defconfig
>      > index dc13509715..60d865cc23 100644
>      > --- a/configs/at91sam9x5ek_dataflash_defconfig
>      > +++ b/configs/at91sam9x5ek_dataflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9X5EK=y
>      > +CONFIG_PMECC_CAP=2
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/at91sam9x5ek_mmc_defconfig
>     b/configs/at91sam9x5ek_mmc_defconfig
>      > index ff86f93e61..75f7fbd199 100644
>      > --- a/configs/at91sam9x5ek_mmc_defconfig
>      > +++ b/configs/at91sam9x5ek_mmc_defconfig
>      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9X5EK=y
>      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/at91sam9x5ek_nandflash_defconfig
>     b/configs/at91sam9x5ek_nandflash_defconfig
>      > index b2b3ddb6d9..dd6bdee7f9 100644
>      > --- a/configs/at91sam9x5ek_nandflash_defconfig
>      > +++ b/configs/at91sam9x5ek_nandflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9X5EK=y
>      > +CONFIG_PMECC_CAP=2
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/at91sam9x5ek_spiflash_defconfig
>     b/configs/at91sam9x5ek_spiflash_defconfig
>      > index d0eebcdc75..8d8108888c 100644
>      > --- a/configs/at91sam9x5ek_spiflash_defconfig
>      > +++ b/configs/at91sam9x5ek_spiflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_AT91SAM9X5EK=y
>      > +CONFIG_PMECC_CAP=2
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> 
>     Ditto.
> 
>      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>      > diff --git a/configs/sama5d3_xplained_mmc_defconfig
>     b/configs/sama5d3_xplained_mmc_defconfig
>      > index eab38ec366..51d5aeaf0e 100644
>      > --- a/configs/sama5d3_xplained_mmc_defconfig
>      > +++ b/configs/sama5d3_xplained_mmc_defconfig
>      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
>      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d3_xplained_nandflash_defconfig
>     b/configs/sama5d3_xplained_nandflash_defconfig
>      > index ff7d2bffdd..ce1f28607e 100644
>      > --- a/configs/sama5d3_xplained_nandflash_defconfig
>      > +++ b/configs/sama5d3_xplained_nandflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
>      > +CONFIG_PMECC_CAP=4
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d3xek_mmc_defconfig
>     b/configs/sama5d3xek_mmc_defconfig
>      > index 6faea0ec3f..49d4334213 100644
>      > --- a/configs/sama5d3xek_mmc_defconfig
>      > +++ b/configs/sama5d3xek_mmc_defconfig
>      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D3XEK=y
>      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d3xek_nandflash_defconfig
>     b/configs/sama5d3xek_nandflash_defconfig
>      > index e641279ee1..b0d56e0e3e 100644
>      > --- a/configs/sama5d3xek_nandflash_defconfig
>      > +++ b/configs/sama5d3xek_nandflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D3XEK=y
>      > +CONFIG_PMECC_CAP=4
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d3xek_spiflash_defconfig
>     b/configs/sama5d3xek_spiflash_defconfig
>      > index 37f603d528..cf2fb9e65b 100644
>      > --- a/configs/sama5d3xek_spiflash_defconfig
>      > +++ b/configs/sama5d3xek_spiflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D3XEK=y
>      > +CONFIG_PMECC_CAP=4
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> 
>     Ditto
> 
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d4_xplained_mmc_defconfig
>     b/configs/sama5d4_xplained_mmc_defconfig
>      > index bfcea3f519..35b8302b60 100644
>      > --- a/configs/sama5d4_xplained_mmc_defconfig
>      > +++ b/configs/sama5d4_xplained_mmc_defconfig
>      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d4_xplained_nandflash_defconfig
>     b/configs/sama5d4_xplained_nandflash_defconfig
>      > index 2c1b7f17c0..93714ed0c7 100644
>      > --- a/configs/sama5d4_xplained_nandflash_defconfig
>      > +++ b/configs/sama5d4_xplained_nandflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>      > +CONFIG_PMECC_CAP=8
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d4_xplained_spiflash_defconfig
>     b/configs/sama5d4_xplained_spiflash_defconfig
>      > index a89dd11a8c..e1eb0c72cd 100644
>      > --- a/configs/sama5d4_xplained_spiflash_defconfig
>      > +++ b/configs/sama5d4_xplained_spiflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>      > +CONFIG_PMECC_CAP=8
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> 
>     Ditto
> 
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d4ek_mmc_defconfig
>     b/configs/sama5d4ek_mmc_defconfig
>      > index 45e6539913..bd238f7f14 100644
>      > --- a/configs/sama5d4ek_mmc_defconfig
>      > +++ b/configs/sama5d4ek_mmc_defconfig
>      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D4EK=y
>      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d4ek_nandflash_defconfig
>     b/configs/sama5d4ek_nandflash_defconfig
>      > index 1497110452..3816bfb273 100644
>      > --- a/configs/sama5d4ek_nandflash_defconfig
>      > +++ b/configs/sama5d4ek_nandflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D4EK=y
>      > +CONFIG_PMECC_CAP=8
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/sama5d4ek_spiflash_defconfig
>     b/configs/sama5d4ek_spiflash_defconfig
>      > index dad32b5711..242081e6a1 100644
>      > --- a/configs/sama5d4ek_spiflash_defconfig
>      > +++ b/configs/sama5d4ek_spiflash_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>      >   CONFIG_TARGET_SAMA5D4EK=y
>      > +CONFIG_PMECC_CAP=8
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> 
>     Ditto
> 
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
>      > index 9d881e5d41..15fc17ac00 100644
>      > --- a/configs/wb45n_defconfig
>      > +++ b/configs/wb45n_defconfig
>      > @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x23f00000
>      >   CONFIG_TARGET_WB45N=y
>      > +CONFIG_PMECC_CAP=4
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
>      > index c74eba1012..a7e9a53448 100644
>      > --- a/configs/wb50n_defconfig
>      > +++ b/configs/wb50n_defconfig
>      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>      >   CONFIG_ARCH_AT91=y
>      >   CONFIG_SYS_TEXT_BASE=0x23f00000
>      >   CONFIG_TARGET_WB50N=y
>      > +CONFIG_PMECC_CAP=8
>      > +CONFIG_PMECC_SECTOR_SIZE=512
>      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >   CONFIG_SPL_GPIO_SUPPORT=y
>      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>      > diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
>      > index 274d860f06..c86d085779 100644
>      > --- a/doc/README.atmel_pmecc
>      > +++ b/doc/README.atmel_pmecc
>      > @@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs
>     to set:
>      >       2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
>      >          It only can be 512 or 1024.
>      >
>      > -Take AT91SAM9X5EK as an example, the board definition file likes:
>      > +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example,
>     the board
>      > +configuration file has the following entries:
>      >
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC              1
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
>      > -#define CONFIG_PMECC_CAP             2
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      > +     CONFIG_PMECC_CAP=2
>      > +     CONFIG_PMECC_SECTOR_SIZE=512
>      > +     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>      >
>      >   How to enable PMECC header for direct programmable boot.bin
>      >   -----------------------------------------------------------
>      > @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines
>     how this PMECC header has to
>      >   look like. In order to do so we have a new image type added to
>     mkimage to
>      >   generate this PMECC header and integrated this into the build
>     process of SPL.
>      >
>      > -To enable the generation of atmel PMECC header for SPL one need
>     to define
>      > +To enable the generation of atmel PMECC header for SPL one needs
>     to define
>      >   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters
>     are taken from
>      >   board configuration and compiled into the host tools
>     atmel_pmecc_params. This
>      >   tool will be called in build process to parametrize mkimage for
>     atmelimage
>      > diff --git a/drivers/mtd/nand/raw/Kconfig
>     b/drivers/mtd/nand/raw/Kconfig
>      > index 008f7b4b4b..b99732736a 100644
>      > --- a/drivers/mtd/nand/raw/Kconfig
>      > +++ b/drivers/mtd/nand/raw/Kconfig
>      > @@ -16,6 +16,44 @@ config NAND_ATMEL
>      >         Enable this driver for NAND flash platforms using an
>     Atmel NAND
>      >         controller.
>      >
>      > +if NAND_ATMEL
>      > +
>      > +config ATMEL_NAND_HWECC
>      > +     bool "Atmel Hardware ECC"
>      > +     default n
>      > +
>      > +config ATMEL_NAND_HW_PMECC
>      > +     bool "Atmel Programmable Multibit ECC (PMECC)"
>      > +     select ATMEL_NAND_HWECC
>      > +     default n
>      > +     help
>      > +       The Programmable Multibit ECC (PMECC) controller is a
>     programmable
>      > +       binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and
>     decoder.
>      > +
>      > +config PMECC_CAP
>      > +     int "PMECC Correctable ECC Bits"
>      > +     depends on ATMEL_NAND_HW_PMECC
>      > +     default 2
>      > +     help
>      > +       Correctable ECC bits, can be 2, 4, 8, 12, and 24.
>      > +
>      > +config PMECC_SECTOR_SIZE
>      > +     int "PMECC Sector Size"
>      > +     depends on ATMEL_NAND_HW_PMECC
>      > +     default 512
>      > +     help
>      > +       Sector size, in bytes, can be 512 or 1024.
>      > +
>      > +config SPL_GENERATE_ATMEL_PMECC_HEADER
>      > +     bool "Atmel PMECC Header Generation"
>      > +     select ATMEL_NAND_HWECC
>      > +     select ATMEL_NAND_HW_PMECC
>      > +     default n
>      > +     help
>      > +       Generate Programmable Multibit ECC (PMECC) header for SPL
>     image.
>      > +
>      > +endif
>      > +
>      >   config NAND_DAVINCI
>      >       bool "Support TI Davinci NAND controller"
>      >       help
>      > diff --git a/include/configs/at91sam9n12ek.h
>     b/include/configs/at91sam9n12ek.h
>      > index 6cd267eee6..777a99b730 100644
>      > --- a/include/configs/at91sam9n12ek.h
>      > +++ b/include/configs/at91sam9n12ek.h
>      > @@ -59,12 +59,6 @@
>      >   #define CONFIG_SYS_NAND_READY_PIN   GPIO_PIN_PD(5)
>      >   #endif
>      >
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>      > -#define CONFIG_PMECC_CAP             2
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      > -
>      >   #define CONFIG_EXTRA_ENV_SETTINGS                             
>               \
>      >       "console=console=ttyS0,115200\0"                           
>          \
>      >       "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"                     
>                  \
>      > @@ -177,6 +171,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/include/configs/at91sam9x5ek.h
>     b/include/configs/at91sam9x5ek.h
>      > index 63305a7cdd..6adb965c3c 100644
>      > --- a/include/configs/at91sam9x5ek.h
>      > +++ b/include/configs/at91sam9x5ek.h
>      > @@ -55,12 +55,6 @@
>      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>      >   #endif
>      >
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC              1
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
>      > -#define CONFIG_PMECC_CAP             2
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      > -
>      >   /* USB */
>      >   #ifdef CONFIG_CMD_USB
>      >   #ifndef CONFIG_USB_EHCI_HCD
>      > @@ -151,6 +145,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/include/configs/sama5d3_xplained.h
>     b/include/configs/sama5d3_xplained.h
>      > index d0d8087ca3..8a9a19d38e 100644
>      > --- a/include/configs/sama5d3_xplained.h
>      > +++ b/include/configs/sama5d3_xplained.h
>      > @@ -43,14 +43,8 @@
>      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>      >   #endif
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>      > -#define CONFIG_PMECC_CAP             4
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      >
>      >   /* USB */
>      > -
>      >   #ifdef CONFIG_CMD_USB
>      >   #define CONFIG_USB_ATMEL
>      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>      > @@ -88,6 +82,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/include/configs/sama5d3xek.h
>     b/include/configs/sama5d3xek.h
>      > index 4d3c3b8314..ca1c2b0861 100644
>      > --- a/include/configs/sama5d3xek.h
>      > +++ b/include/configs/sama5d3xek.h
>      > @@ -62,14 +62,8 @@
>      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>      >   #endif
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>      > -#define CONFIG_PMECC_CAP             4
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      >
>      >   /* USB */
>      > -
>     Unrelated change ?
> 
>      >   #ifdef CONFIG_CMD_USB
>      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>      >   #define CONFIG_USB_OHCI_NEW
>      > @@ -109,6 +103,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/include/configs/sama5d4_xplained.h
>     b/include/configs/sama5d4_xplained.h
>      > index 7f8ac178f3..bbb16993ec 100644
>      > --- a/include/configs/sama5d4_xplained.h
>      > +++ b/include/configs/sama5d4_xplained.h
>      > @@ -37,9 +37,6 @@
>      >   /* our CLE is AD22 */
>      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>      >   #endif
>      >
>      >   /* SPL */
>      > @@ -64,8 +61,6 @@
>      >   #define CONFIG_SPL_NAND_DRIVERS
>      >   #define CONFIG_SPL_NAND_BASE
>      >   #endif
>      > -#define CONFIG_PMECC_CAP             8
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
>      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
>      > @@ -73,6 +68,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE             224
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/include/configs/sama5d4ek.h
>     b/include/configs/sama5d4ek.h
>      > index aa8573d8ba..d58041650c 100644
>      > --- a/include/configs/sama5d4ek.h
>      > +++ b/include/configs/sama5d4ek.h
>      > @@ -37,9 +37,6 @@
>      >   /* our CLE is AD22 */
>      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>      >   #endif
>      >
>      >   /* SPL */
>      > @@ -63,8 +60,6 @@
>      >   #define CONFIG_SPL_NAND_DRIVERS
>      >   #define CONFIG_SPL_NAND_BASE
>      >   #endif
>      > -#define CONFIG_PMECC_CAP             8
>      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
>      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
>      > @@ -72,6 +67,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE             224
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
>      > index b516b66c35..add4019b31 100644
>      > --- a/include/configs/wb45n.h
>      > +++ b/include/configs/wb45n.h
>      > @@ -48,12 +48,6 @@
>      >   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
>      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>      >
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC     1
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC  1
>      > -#define CONFIG_PMECC_CAP            4
>      > -#define CONFIG_PMECC_SECTOR_SIZE    512
>      > -
>      >   #define CONFIG_RBTREE
>      >   #define CONFIG_LZO
>      >
>      > @@ -141,6 +135,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE     64
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif                              /* __CONFIG_H__ */
>      > diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
>      > index 40ca9d602b..2684b6c16c 100644
>      > --- a/include/configs/wb50n.h
>      > +++ b/include/configs/wb50n.h
>      > @@ -57,11 +57,6 @@
>      >   /* our CLE is AD22 */
>      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>      > -/* PMECC & PMERRLOC */
>      > -#define CONFIG_ATMEL_NAND_HWECC
>      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>      > -#define CONFIG_PMECC_CAP            8
>      > -#define CONFIG_PMECC_SECTOR_SIZE    512
>      >
>      >   /* Ethernet Hardware */
>      >   #define CONFIG_MACB
>      > @@ -118,6 +113,5 @@
>      >   #define CONFIG_SYS_NAND_OOBSIZE     64
>      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
>      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >
>      >   #endif
>      > diff --git a/scripts/config_whitelist.txt
>     b/scripts/config_whitelist.txt
>      > index b8addeaf69..f798c6542a 100644
>      > --- a/scripts/config_whitelist.txt
>      > +++ b/scripts/config_whitelist.txt
>      > @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
>      >   CONFIG_ATMEL_LCD_RGB565
>      >   CONFIG_ATMEL_LEGACY
>      >   CONFIG_ATMEL_MCI_8BIT
>      > -CONFIG_ATMEL_NAND_HWECC
>      > -CONFIG_ATMEL_NAND_HW_PMECC
>      >   CONFIG_ATMEL_SPI0
>      >   CONFIG_AT_TRANS
>      >   CONFIG_AUTO_ZRELADDR
>      > @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
>      >   CONFIG_PM
>      >   CONFIG_PMC_BR_PRELIM
>      >   CONFIG_PMC_OR_PRELIM
>      > -CONFIG_PMECC_CAP
>      > -CONFIG_PMECC_SECTOR_SIZE
>      >   CONFIG_PME_PLAT_CLK_DIV
>      >   CONFIG_PMU
>      >   CONFIG_PMW_BASE
>      > @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
>      >   CONFIG_SPL_FS_LOAD_KERNEL_NAME
>      >   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
>      >   CONFIG_SPL_GD_ADDR
>      > -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>      >   CONFIG_SPL_INIT_MINIMAL
>      >   CONFIG_SPL_JR0_LIODN_NS
>      >   CONFIG_SPL_JR0_LIODN_S
>      >
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-11 11:27                     ` Eugen.Hristev at microchip.com
@ 2019-01-11 16:51                       ` Derald Woods
  2019-01-11 16:53                         ` Derald Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Derald Woods @ 2019-01-11 16:51 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 11, 2019, 5:27 AM <Eugen.Hristev@microchip.com wrote:

>
>
> On 10.01.2019 03:00, Derald Woods wrote:
> > On Mon, Jan 7, 2019 at 3:40 AM <Eugen.Hristev@microchip.com
> > <mailto:Eugen.Hristev@microchip.com>> wrote:
> >
> >     Hi Derald,
> >
> >     Thank you for the patch,
> >
> >     Some minor questions inline.
> >
> >
> >
> > Sorry for the late response. Family and day job take priority.
> >
> > The patch is the simplest technical conversion that I could produce with
> > my board (SAMA5D3-XPLD) as the test platform. I was very careful not to
> > touch anything unrelated. It is not intended to address permutations
> > outside of the PMECC Kconfig scope. I have submitted these type of
> > conversions to U-Boot in the past. Adding speculative things is risky
> > when you only have one development board. The patch works well, for me,
> > and addresses the original need. All items, in the patch, are currently
> > in scope. If there are additions and/or modifications, feel free to
> > modify the patch. It is complete from my perspective. I do not have any
> > additional time to chase this any further. I have been developing for
> > some time now and can handle an 'out of tree' patch, in my environment,
> > until something better comes along. This patch is just my contribution
> > to the process.
>
> Hello Derald,
>
>  From my point of view the PMECC header generation for SPL should be
> done if and only if the SPL is being placed in NAND flash namely
> defconfigs having *nandflash* in the name.
>
> Thus I disagree with enabling it on spiflash configurations (like you
> did for the *mmc* configurations looks OK)
>

The patch is about 'one' thing. Kconfig conversion. Things that you are
mentioning do not invalidate my patch. I tried not to add things that were
not there originally. That is generally discouraged scope creep. The patch
does its job in a provable manner with changing existing usage.

Derald


If you have any reasons or arguments , or anyone else does, please
> correct me.
>
> If you do not have time to change the patch, that is OK, I can take over
> at some point when I have the time or someone else can pick and rework a
> little bit on that specific point and make a v2.
>
> Thanks again,
>
> Eugen
>
> >
> > Cheers,
> >
> > Derald
> >
> >
> >     On 15.12.2018 09:36, Derald D. Woods wrote:
> >      > This commit converts the following items to Kconfig:
> >      >
> >      > CONFIG_ATMEL_NAND_HWECC
> >      > CONFIG_ATMEL_NAND_HW_PMECC
> >      > CONFIG_PMECC_CAP
> >      > CONFIG_PMECC_SECTOR_SIZE
> >      > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      > [PMECC References]
> >      > https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> >      > https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> >      >
> >      > [Mailing List Thread]
> >      > https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> >      >
> >      > Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
> >     assignment")
> >      > Reported-by: Daniel Evans <photonthunder@gmail.com
> >     <mailto:photonthunder@gmail.com>>
> >      > Cc: Eugen Hristev <eugen.hristev@microchip.com
> >     <mailto:eugen.hristev@microchip.com>>
> >      > Signed-off-by: Derald D. Woods <woods.technical@gmail.com
> >     <mailto:woods.technical@gmail.com>>
> >      > ---
> >      >   configs/at91sam9n12ek_mmc_defconfig          |  1 +
> >      >   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
> >      >   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
> >      >   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
> >      >   configs/at91sam9x5ek_mmc_defconfig           |  1 +
> >      >   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
> >      >   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
> >      >   configs/sama5d3_xplained_mmc_defconfig       |  1 +
> >      >   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
> >      >   configs/sama5d3xek_mmc_defconfig             |  1 +
> >      >   configs/sama5d3xek_nandflash_defconfig       |  3 ++
> >      >   configs/sama5d3xek_spiflash_defconfig        |  3 ++
> >      >   configs/sama5d4_xplained_mmc_defconfig       |  1 +
> >      >   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
> >      >   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
> >      >   configs/sama5d4ek_mmc_defconfig              |  1 +
> >      >   configs/sama5d4ek_nandflash_defconfig        |  3 ++
> >      >   configs/sama5d4ek_spiflash_defconfig         |  3 ++
> >      >   configs/wb45n_defconfig                      |  3 ++
> >      >   configs/wb50n_defconfig                      |  3 ++
> >      >   doc/README.atmel_pmecc                       | 13 ++++---
> >      >   drivers/mtd/nand/raw/Kconfig                 | 38
> >     ++++++++++++++++++++
> >      >   include/configs/at91sam9n12ek.h              |  7 ----
> >      >   include/configs/at91sam9x5ek.h               |  7 ----
> >      >   include/configs/sama5d3_xplained.h           |  7 ----
> >      >   include/configs/sama5d3xek.h                 |  7 ----
> >      >   include/configs/sama5d4_xplained.h           |  6 ----
> >      >   include/configs/sama5d4ek.h                  |  6 ----
> >      >   include/configs/wb45n.h                      |  7 ----
> >      >   include/configs/wb50n.h                      |  6 ----
> >      >   scripts/config_whitelist.txt                 |  5 ---
> >      >   31 files changed, 92 insertions(+), 65 deletions(-)
> >      >
> >      > diff --git a/configs/at91sam9n12ek_mmc_defconfig
> >     b/configs/at91sam9n12ek_mmc_defconfig
> >      > index 6b2cfe9c42..7b46eb498d 100644
> >      > --- a/configs/at91sam9n12ek_mmc_defconfig
> >      > +++ b/configs/at91sam9n12ek_mmc_defconfig
> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9N12EK=y
> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/at91sam9n12ek_nandflash_defconfig
> >     b/configs/at91sam9n12ek_nandflash_defconfig
> >      > index 354c24ff16..4e34a517fd 100644
> >      > --- a/configs/at91sam9n12ek_nandflash_defconfig
> >      > +++ b/configs/at91sam9n12ek_nandflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9N12EK=y
> >      > +CONFIG_PMECC_CAP=2
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/at91sam9n12ek_spiflash_defconfig
> >     b/configs/at91sam9n12ek_spiflash_defconfig
> >      > index 63889355bf..500c3ab088 100644
> >      > --- a/configs/at91sam9n12ek_spiflash_defconfig
> >      > +++ b/configs/at91sam9n12ek_spiflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9N12EK=y
> >      > +CONFIG_PMECC_CAP=2
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >
> >     Do we need to generate the PMECC header for SPI_BOOT configurations ?
> >     I would say this would be required only for NAND_BOOT
> >
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/at91sam9x5ek_dataflash_defconfig
> >     b/configs/at91sam9x5ek_dataflash_defconfig
> >      > index dc13509715..60d865cc23 100644
> >      > --- a/configs/at91sam9x5ek_dataflash_defconfig
> >      > +++ b/configs/at91sam9x5ek_dataflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >      > +CONFIG_PMECC_CAP=2
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/at91sam9x5ek_mmc_defconfig
> >     b/configs/at91sam9x5ek_mmc_defconfig
> >      > index ff86f93e61..75f7fbd199 100644
> >      > --- a/configs/at91sam9x5ek_mmc_defconfig
> >      > +++ b/configs/at91sam9x5ek_mmc_defconfig
> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/at91sam9x5ek_nandflash_defconfig
> >     b/configs/at91sam9x5ek_nandflash_defconfig
> >      > index b2b3ddb6d9..dd6bdee7f9 100644
> >      > --- a/configs/at91sam9x5ek_nandflash_defconfig
> >      > +++ b/configs/at91sam9x5ek_nandflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >      > +CONFIG_PMECC_CAP=2
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/at91sam9x5ek_spiflash_defconfig
> >     b/configs/at91sam9x5ek_spiflash_defconfig
> >      > index d0eebcdc75..8d8108888c 100644
> >      > --- a/configs/at91sam9x5ek_spiflash_defconfig
> >      > +++ b/configs/at91sam9x5ek_spiflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >      > +CONFIG_PMECC_CAP=2
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >
> >     Ditto.
> >
> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >      > diff --git a/configs/sama5d3_xplained_mmc_defconfig
> >     b/configs/sama5d3_xplained_mmc_defconfig
> >      > index eab38ec366..51d5aeaf0e 100644
> >      > --- a/configs/sama5d3_xplained_mmc_defconfig
> >      > +++ b/configs/sama5d3_xplained_mmc_defconfig
> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d3_xplained_nandflash_defconfig
> >     b/configs/sama5d3_xplained_nandflash_defconfig
> >      > index ff7d2bffdd..ce1f28607e 100644
> >      > --- a/configs/sama5d3_xplained_nandflash_defconfig
> >      > +++ b/configs/sama5d3_xplained_nandflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> >      > +CONFIG_PMECC_CAP=4
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d3xek_mmc_defconfig
> >     b/configs/sama5d3xek_mmc_defconfig
> >      > index 6faea0ec3f..49d4334213 100644
> >      > --- a/configs/sama5d3xek_mmc_defconfig
> >      > +++ b/configs/sama5d3xek_mmc_defconfig
> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D3XEK=y
> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d3xek_nandflash_defconfig
> >     b/configs/sama5d3xek_nandflash_defconfig
> >      > index e641279ee1..b0d56e0e3e 100644
> >      > --- a/configs/sama5d3xek_nandflash_defconfig
> >      > +++ b/configs/sama5d3xek_nandflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D3XEK=y
> >      > +CONFIG_PMECC_CAP=4
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d3xek_spiflash_defconfig
> >     b/configs/sama5d3xek_spiflash_defconfig
> >      > index 37f603d528..cf2fb9e65b 100644
> >      > --- a/configs/sama5d3xek_spiflash_defconfig
> >      > +++ b/configs/sama5d3xek_spiflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D3XEK=y
> >      > +CONFIG_PMECC_CAP=4
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >
> >     Ditto
> >
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d4_xplained_mmc_defconfig
> >     b/configs/sama5d4_xplained_mmc_defconfig
> >      > index bfcea3f519..35b8302b60 100644
> >      > --- a/configs/sama5d4_xplained_mmc_defconfig
> >      > +++ b/configs/sama5d4_xplained_mmc_defconfig
> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d4_xplained_nandflash_defconfig
> >     b/configs/sama5d4_xplained_nandflash_defconfig
> >      > index 2c1b7f17c0..93714ed0c7 100644
> >      > --- a/configs/sama5d4_xplained_nandflash_defconfig
> >      > +++ b/configs/sama5d4_xplained_nandflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> >      > +CONFIG_PMECC_CAP=8
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d4_xplained_spiflash_defconfig
> >     b/configs/sama5d4_xplained_spiflash_defconfig
> >      > index a89dd11a8c..e1eb0c72cd 100644
> >      > --- a/configs/sama5d4_xplained_spiflash_defconfig
> >      > +++ b/configs/sama5d4_xplained_spiflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> >      > +CONFIG_PMECC_CAP=8
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >
> >     Ditto
> >
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d4ek_mmc_defconfig
> >     b/configs/sama5d4ek_mmc_defconfig
> >      > index 45e6539913..bd238f7f14 100644
> >      > --- a/configs/sama5d4ek_mmc_defconfig
> >      > +++ b/configs/sama5d4ek_mmc_defconfig
> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D4EK=y
> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d4ek_nandflash_defconfig
> >     b/configs/sama5d4ek_nandflash_defconfig
> >      > index 1497110452..3816bfb273 100644
> >      > --- a/configs/sama5d4ek_nandflash_defconfig
> >      > +++ b/configs/sama5d4ek_nandflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D4EK=y
> >      > +CONFIG_PMECC_CAP=8
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/sama5d4ek_spiflash_defconfig
> >     b/configs/sama5d4ek_spiflash_defconfig
> >      > index dad32b5711..242081e6a1 100644
> >      > --- a/configs/sama5d4ek_spiflash_defconfig
> >      > +++ b/configs/sama5d4ek_spiflash_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >      >   CONFIG_TARGET_SAMA5D4EK=y
> >      > +CONFIG_PMECC_CAP=8
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >
> >     Ditto
> >
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
> >      > index 9d881e5d41..15fc17ac00 100644
> >      > --- a/configs/wb45n_defconfig
> >      > +++ b/configs/wb45n_defconfig
> >      > @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
> >      >   CONFIG_TARGET_WB45N=y
> >      > +CONFIG_PMECC_CAP=4
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
> >      > index c74eba1012..a7e9a53448 100644
> >      > --- a/configs/wb50n_defconfig
> >      > +++ b/configs/wb50n_defconfig
> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >      >   CONFIG_ARCH_AT91=y
> >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
> >      >   CONFIG_TARGET_WB50N=y
> >      > +CONFIG_PMECC_CAP=8
> >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >      > diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
> >      > index 274d860f06..c86d085779 100644
> >      > --- a/doc/README.atmel_pmecc
> >      > +++ b/doc/README.atmel_pmecc
> >      > @@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs
> >     to set:
> >      >       2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
> >      >          It only can be 512 or 1024.
> >      >
> >      > -Take AT91SAM9X5EK as an example, the board definition file likes:
> >      > +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example,
> >     the board
> >      > +configuration file has the following entries:
> >      >
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC              1
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
> >      > -#define CONFIG_PMECC_CAP             2
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      > +     CONFIG_PMECC_CAP=2
> >      > +     CONFIG_PMECC_SECTOR_SIZE=512
> >      > +     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >      >
> >      >   How to enable PMECC header for direct programmable boot.bin
> >      >   -----------------------------------------------------------
> >      > @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines
> >     how this PMECC header has to
> >      >   look like. In order to do so we have a new image type added to
> >     mkimage to
> >      >   generate this PMECC header and integrated this into the build
> >     process of SPL.
> >      >
> >      > -To enable the generation of atmel PMECC header for SPL one need
> >     to define
> >      > +To enable the generation of atmel PMECC header for SPL one needs
> >     to define
> >      >   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters
> >     are taken from
> >      >   board configuration and compiled into the host tools
> >     atmel_pmecc_params. This
> >      >   tool will be called in build process to parametrize mkimage for
> >     atmelimage
> >      > diff --git a/drivers/mtd/nand/raw/Kconfig
> >     b/drivers/mtd/nand/raw/Kconfig
> >      > index 008f7b4b4b..b99732736a 100644
> >      > --- a/drivers/mtd/nand/raw/Kconfig
> >      > +++ b/drivers/mtd/nand/raw/Kconfig
> >      > @@ -16,6 +16,44 @@ config NAND_ATMEL
> >      >         Enable this driver for NAND flash platforms using an
> >     Atmel NAND
> >      >         controller.
> >      >
> >      > +if NAND_ATMEL
> >      > +
> >      > +config ATMEL_NAND_HWECC
> >      > +     bool "Atmel Hardware ECC"
> >      > +     default n
> >      > +
> >      > +config ATMEL_NAND_HW_PMECC
> >      > +     bool "Atmel Programmable Multibit ECC (PMECC)"
> >      > +     select ATMEL_NAND_HWECC
> >      > +     default n
> >      > +     help
> >      > +       The Programmable Multibit ECC (PMECC) controller is a
> >     programmable
> >      > +       binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and
> >     decoder.
> >      > +
> >      > +config PMECC_CAP
> >      > +     int "PMECC Correctable ECC Bits"
> >      > +     depends on ATMEL_NAND_HW_PMECC
> >      > +     default 2
> >      > +     help
> >      > +       Correctable ECC bits, can be 2, 4, 8, 12, and 24.
> >      > +
> >      > +config PMECC_SECTOR_SIZE
> >      > +     int "PMECC Sector Size"
> >      > +     depends on ATMEL_NAND_HW_PMECC
> >      > +     default 512
> >      > +     help
> >      > +       Sector size, in bytes, can be 512 or 1024.
> >      > +
> >      > +config SPL_GENERATE_ATMEL_PMECC_HEADER
> >      > +     bool "Atmel PMECC Header Generation"
> >      > +     select ATMEL_NAND_HWECC
> >      > +     select ATMEL_NAND_HW_PMECC
> >      > +     default n
> >      > +     help
> >      > +       Generate Programmable Multibit ECC (PMECC) header for SPL
> >     image.
> >      > +
> >      > +endif
> >      > +
> >      >   config NAND_DAVINCI
> >      >       bool "Support TI Davinci NAND controller"
> >      >       help
> >      > diff --git a/include/configs/at91sam9n12ek.h
> >     b/include/configs/at91sam9n12ek.h
> >      > index 6cd267eee6..777a99b730 100644
> >      > --- a/include/configs/at91sam9n12ek.h
> >      > +++ b/include/configs/at91sam9n12ek.h
> >      > @@ -59,12 +59,6 @@
> >      >   #define CONFIG_SYS_NAND_READY_PIN   GPIO_PIN_PD(5)
> >      >   #endif
> >      >
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >      > -#define CONFIG_PMECC_CAP             2
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      > -
> >      >   #define CONFIG_EXTRA_ENV_SETTINGS
> >               \
> >      >       "console=console=ttyS0,115200\0"
> >          \
> >      >       "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"
> >                  \
> >      > @@ -177,6 +171,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/include/configs/at91sam9x5ek.h
> >     b/include/configs/at91sam9x5ek.h
> >      > index 63305a7cdd..6adb965c3c 100644
> >      > --- a/include/configs/at91sam9x5ek.h
> >      > +++ b/include/configs/at91sam9x5ek.h
> >      > @@ -55,12 +55,6 @@
> >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
> >      >   #endif
> >      >
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC              1
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
> >      > -#define CONFIG_PMECC_CAP             2
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      > -
> >      >   /* USB */
> >      >   #ifdef CONFIG_CMD_USB
> >      >   #ifndef CONFIG_USB_EHCI_HCD
> >      > @@ -151,6 +145,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/include/configs/sama5d3_xplained.h
> >     b/include/configs/sama5d3_xplained.h
> >      > index d0d8087ca3..8a9a19d38e 100644
> >      > --- a/include/configs/sama5d3_xplained.h
> >      > +++ b/include/configs/sama5d3_xplained.h
> >      > @@ -43,14 +43,8 @@
> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >      >   #endif
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >      > -#define CONFIG_PMECC_CAP             4
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      >
> >      >   /* USB */
> >      > -
> >      >   #ifdef CONFIG_CMD_USB
> >      >   #define CONFIG_USB_ATMEL
> >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> >      > @@ -88,6 +82,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/include/configs/sama5d3xek.h
> >     b/include/configs/sama5d3xek.h
> >      > index 4d3c3b8314..ca1c2b0861 100644
> >      > --- a/include/configs/sama5d3xek.h
> >      > +++ b/include/configs/sama5d3xek.h
> >      > @@ -62,14 +62,8 @@
> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >      >   #endif
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >      > -#define CONFIG_PMECC_CAP             4
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      >
> >      >   /* USB */
> >      > -
> >     Unrelated change ?
> >
> >      >   #ifdef CONFIG_CMD_USB
> >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> >      >   #define CONFIG_USB_OHCI_NEW
> >      > @@ -109,6 +103,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/include/configs/sama5d4_xplained.h
> >     b/include/configs/sama5d4_xplained.h
> >      > index 7f8ac178f3..bbb16993ec 100644
> >      > --- a/include/configs/sama5d4_xplained.h
> >      > +++ b/include/configs/sama5d4_xplained.h
> >      > @@ -37,9 +37,6 @@
> >      >   /* our CLE is AD22 */
> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >      >   #endif
> >      >
> >      >   /* SPL */
> >      > @@ -64,8 +61,6 @@
> >      >   #define CONFIG_SPL_NAND_DRIVERS
> >      >   #define CONFIG_SPL_NAND_BASE
> >      >   #endif
> >      > -#define CONFIG_PMECC_CAP             8
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
> >      > @@ -73,6 +68,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/include/configs/sama5d4ek.h
> >     b/include/configs/sama5d4ek.h
> >      > index aa8573d8ba..d58041650c 100644
> >      > --- a/include/configs/sama5d4ek.h
> >      > +++ b/include/configs/sama5d4ek.h
> >      > @@ -37,9 +37,6 @@
> >      >   /* our CLE is AD22 */
> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >      >   #endif
> >      >
> >      >   /* SPL */
> >      > @@ -63,8 +60,6 @@
> >      >   #define CONFIG_SPL_NAND_DRIVERS
> >      >   #define CONFIG_SPL_NAND_BASE
> >      >   #endif
> >      > -#define CONFIG_PMECC_CAP             8
> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
> >      > @@ -72,6 +67,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
> >      > index b516b66c35..add4019b31 100644
> >      > --- a/include/configs/wb45n.h
> >      > +++ b/include/configs/wb45n.h
> >      > @@ -48,12 +48,6 @@
> >      >   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
> >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
> >      >
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC     1
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC  1
> >      > -#define CONFIG_PMECC_CAP            4
> >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
> >      > -
> >      >   #define CONFIG_RBTREE
> >      >   #define CONFIG_LZO
> >      >
> >      > @@ -141,6 +135,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif                              /* __CONFIG_H__ */
> >      > diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
> >      > index 40ca9d602b..2684b6c16c 100644
> >      > --- a/include/configs/wb50n.h
> >      > +++ b/include/configs/wb50n.h
> >      > @@ -57,11 +57,6 @@
> >      >   /* our CLE is AD22 */
> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >      > -/* PMECC & PMERRLOC */
> >      > -#define CONFIG_ATMEL_NAND_HWECC
> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >      > -#define CONFIG_PMECC_CAP            8
> >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
> >      >
> >      >   /* Ethernet Hardware */
> >      >   #define CONFIG_MACB
> >      > @@ -118,6 +113,5 @@
> >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >
> >      >   #endif
> >      > diff --git a/scripts/config_whitelist.txt
> >     b/scripts/config_whitelist.txt
> >      > index b8addeaf69..f798c6542a 100644
> >      > --- a/scripts/config_whitelist.txt
> >      > +++ b/scripts/config_whitelist.txt
> >      > @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
> >      >   CONFIG_ATMEL_LCD_RGB565
> >      >   CONFIG_ATMEL_LEGACY
> >      >   CONFIG_ATMEL_MCI_8BIT
> >      > -CONFIG_ATMEL_NAND_HWECC
> >      > -CONFIG_ATMEL_NAND_HW_PMECC
> >      >   CONFIG_ATMEL_SPI0
> >      >   CONFIG_AT_TRANS
> >      >   CONFIG_AUTO_ZRELADDR
> >      > @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
> >      >   CONFIG_PM
> >      >   CONFIG_PMC_BR_PRELIM
> >      >   CONFIG_PMC_OR_PRELIM
> >      > -CONFIG_PMECC_CAP
> >      > -CONFIG_PMECC_SECTOR_SIZE
> >      >   CONFIG_PME_PLAT_CLK_DIV
> >      >   CONFIG_PMU
> >      >   CONFIG_PMW_BASE
> >      > @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
> >      >   CONFIG_SPL_FS_LOAD_KERNEL_NAME
> >      >   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
> >      >   CONFIG_SPL_GD_ADDR
> >      > -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >      >   CONFIG_SPL_INIT_MINIMAL
> >      >   CONFIG_SPL_JR0_LIODN_NS
> >      >   CONFIG_SPL_JR0_LIODN_S
> >      >
> >
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-11 16:51                       ` Derald Woods
@ 2019-01-11 16:53                         ` Derald Woods
  2019-01-18  8:37                           ` Eugen.Hristev at microchip.com
  0 siblings, 1 reply; 32+ messages in thread
From: Derald Woods @ 2019-01-11 16:53 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 11, 2019, 10:51 AM Derald Woods <woods.technical@gmail.com
wrote:

>
> On Fri, Jan 11, 2019, 5:27 AM <Eugen.Hristev@microchip.com wrote:
>
>>
>>
>> On 10.01.2019 03:00, Derald Woods wrote:
>> > On Mon, Jan 7, 2019 at 3:40 AM <Eugen.Hristev@microchip.com
>> > <mailto:Eugen.Hristev@microchip.com>> wrote:
>> >
>> >     Hi Derald,
>> >
>> >     Thank you for the patch,
>> >
>> >     Some minor questions inline.
>> >
>> >
>> >
>> > Sorry for the late response. Family and day job take priority.
>> >
>> > The patch is the simplest technical conversion that I could produce
>> with
>> > my board (SAMA5D3-XPLD) as the test platform. I was very careful not to
>> > touch anything unrelated. It is not intended to address permutations
>> > outside of the PMECC Kconfig scope. I have submitted these type of
>> > conversions to U-Boot in the past. Adding speculative things is risky
>> > when you only have one development board. The patch works well, for me,
>> > and addresses the original need. All items, in the patch, are currently
>> > in scope. If there are additions and/or modifications, feel free to
>> > modify the patch. It is complete from my perspective. I do not have any
>> > additional time to chase this any further. I have been developing for
>> > some time now and can handle an 'out of tree' patch, in my environment,
>> > until something better comes along. This patch is just my contribution
>> > to the process.
>>
>> Hello Derald,
>>
>>  From my point of view the PMECC header generation for SPL should be
>> done if and only if the SPL is being placed in NAND flash namely
>> defconfigs having *nandflash* in the name.
>>
>> Thus I disagree with enabling it on spiflash configurations (like you
>> did for the *mmc* configurations looks OK)
>>
>
> The patch is about 'one' thing. Kconfig conversion. Things that you are
> mentioning do not invalidate my patch. I tried not to add things that were
> not there originally. That is generally discouraged scope creep. The patch
> does its job in a provable manner with
>

'without'

changing existing usage.
>
> Derald
>
>
> If you have any reasons or arguments , or anyone else does, please
>> correct me.
>>
>> If you do not have time to change the patch, that is OK, I can take over
>> at some point when I have the time or someone else can pick and rework a
>> little bit on that specific point and make a v2.
>>
>> Thanks again,
>>
>> Eugen
>>
>> >
>> > Cheers,
>> >
>> > Derald
>> >
>> >
>> >     On 15.12.2018 09:36, Derald D. Woods wrote:
>> >      > This commit converts the following items to Kconfig:
>> >      >
>> >      > CONFIG_ATMEL_NAND_HWECC
>> >      > CONFIG_ATMEL_NAND_HW_PMECC
>> >      > CONFIG_PMECC_CAP
>> >      > CONFIG_PMECC_SECTOR_SIZE
>> >      > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      > [PMECC References]
>> >      > https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
>> >      > https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
>> >      >
>> >      > [Mailing List Thread]
>> >      > https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
>> >      >
>> >      > Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
>> >     assignment")
>> >      > Reported-by: Daniel Evans <photonthunder@gmail.com
>> >     <mailto:photonthunder@gmail.com>>
>> >      > Cc: Eugen Hristev <eugen.hristev@microchip.com
>> >     <mailto:eugen.hristev@microchip.com>>
>> >      > Signed-off-by: Derald D. Woods <woods.technical@gmail.com
>> >     <mailto:woods.technical@gmail.com>>
>> >      > ---
>> >      >   configs/at91sam9n12ek_mmc_defconfig          |  1 +
>> >      >   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
>> >      >   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
>> >      >   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
>> >      >   configs/at91sam9x5ek_mmc_defconfig           |  1 +
>> >      >   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
>> >      >   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
>> >      >   configs/sama5d3_xplained_mmc_defconfig       |  1 +
>> >      >   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
>> >      >   configs/sama5d3xek_mmc_defconfig             |  1 +
>> >      >   configs/sama5d3xek_nandflash_defconfig       |  3 ++
>> >      >   configs/sama5d3xek_spiflash_defconfig        |  3 ++
>> >      >   configs/sama5d4_xplained_mmc_defconfig       |  1 +
>> >      >   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
>> >      >   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
>> >      >   configs/sama5d4ek_mmc_defconfig              |  1 +
>> >      >   configs/sama5d4ek_nandflash_defconfig        |  3 ++
>> >      >   configs/sama5d4ek_spiflash_defconfig         |  3 ++
>> >      >   configs/wb45n_defconfig                      |  3 ++
>> >      >   configs/wb50n_defconfig                      |  3 ++
>> >      >   doc/README.atmel_pmecc                       | 13 ++++---
>> >      >   drivers/mtd/nand/raw/Kconfig                 | 38
>> >     ++++++++++++++++++++
>> >      >   include/configs/at91sam9n12ek.h              |  7 ----
>> >      >   include/configs/at91sam9x5ek.h               |  7 ----
>> >      >   include/configs/sama5d3_xplained.h           |  7 ----
>> >      >   include/configs/sama5d3xek.h                 |  7 ----
>> >      >   include/configs/sama5d4_xplained.h           |  6 ----
>> >      >   include/configs/sama5d4ek.h                  |  6 ----
>> >      >   include/configs/wb45n.h                      |  7 ----
>> >      >   include/configs/wb50n.h                      |  6 ----
>> >      >   scripts/config_whitelist.txt                 |  5 ---
>> >      >   31 files changed, 92 insertions(+), 65 deletions(-)
>> >      >
>> >      > diff --git a/configs/at91sam9n12ek_mmc_defconfig
>> >     b/configs/at91sam9n12ek_mmc_defconfig
>> >      > index 6b2cfe9c42..7b46eb498d 100644
>> >      > --- a/configs/at91sam9n12ek_mmc_defconfig
>> >      > +++ b/configs/at91sam9n12ek_mmc_defconfig
>> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9N12EK=y
>> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/at91sam9n12ek_nandflash_defconfig
>> >     b/configs/at91sam9n12ek_nandflash_defconfig
>> >      > index 354c24ff16..4e34a517fd 100644
>> >      > --- a/configs/at91sam9n12ek_nandflash_defconfig
>> >      > +++ b/configs/at91sam9n12ek_nandflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9N12EK=y
>> >      > +CONFIG_PMECC_CAP=2
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/at91sam9n12ek_spiflash_defconfig
>> >     b/configs/at91sam9n12ek_spiflash_defconfig
>> >      > index 63889355bf..500c3ab088 100644
>> >      > --- a/configs/at91sam9n12ek_spiflash_defconfig
>> >      > +++ b/configs/at91sam9n12ek_spiflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9N12EK=y
>> >      > +CONFIG_PMECC_CAP=2
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >
>> >     Do we need to generate the PMECC header for SPI_BOOT configurations
>> ?
>> >     I would say this would be required only for NAND_BOOT
>> >
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/at91sam9x5ek_dataflash_defconfig
>> >     b/configs/at91sam9x5ek_dataflash_defconfig
>> >      > index dc13509715..60d865cc23 100644
>> >      > --- a/configs/at91sam9x5ek_dataflash_defconfig
>> >      > +++ b/configs/at91sam9x5ek_dataflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>> >      > +CONFIG_PMECC_CAP=2
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/at91sam9x5ek_mmc_defconfig
>> >     b/configs/at91sam9x5ek_mmc_defconfig
>> >      > index ff86f93e61..75f7fbd199 100644
>> >      > --- a/configs/at91sam9x5ek_mmc_defconfig
>> >      > +++ b/configs/at91sam9x5ek_mmc_defconfig
>> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/at91sam9x5ek_nandflash_defconfig
>> >     b/configs/at91sam9x5ek_nandflash_defconfig
>> >      > index b2b3ddb6d9..dd6bdee7f9 100644
>> >      > --- a/configs/at91sam9x5ek_nandflash_defconfig
>> >      > +++ b/configs/at91sam9x5ek_nandflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>> >      > +CONFIG_PMECC_CAP=2
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/at91sam9x5ek_spiflash_defconfig
>> >     b/configs/at91sam9x5ek_spiflash_defconfig
>> >      > index d0eebcdc75..8d8108888c 100644
>> >      > --- a/configs/at91sam9x5ek_spiflash_defconfig
>> >      > +++ b/configs/at91sam9x5ek_spiflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>> >      > +CONFIG_PMECC_CAP=2
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >
>> >     Ditto.
>> >
>> >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>> >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>> >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>> >      > diff --git a/configs/sama5d3_xplained_mmc_defconfig
>> >     b/configs/sama5d3_xplained_mmc_defconfig
>> >      > index eab38ec366..51d5aeaf0e 100644
>> >      > --- a/configs/sama5d3_xplained_mmc_defconfig
>> >      > +++ b/configs/sama5d3_xplained_mmc_defconfig
>> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
>> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d3_xplained_nandflash_defconfig
>> >     b/configs/sama5d3_xplained_nandflash_defconfig
>> >      > index ff7d2bffdd..ce1f28607e 100644
>> >      > --- a/configs/sama5d3_xplained_nandflash_defconfig
>> >      > +++ b/configs/sama5d3_xplained_nandflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
>> >      > +CONFIG_PMECC_CAP=4
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d3xek_mmc_defconfig
>> >     b/configs/sama5d3xek_mmc_defconfig
>> >      > index 6faea0ec3f..49d4334213 100644
>> >      > --- a/configs/sama5d3xek_mmc_defconfig
>> >      > +++ b/configs/sama5d3xek_mmc_defconfig
>> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D3XEK=y
>> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d3xek_nandflash_defconfig
>> >     b/configs/sama5d3xek_nandflash_defconfig
>> >      > index e641279ee1..b0d56e0e3e 100644
>> >      > --- a/configs/sama5d3xek_nandflash_defconfig
>> >      > +++ b/configs/sama5d3xek_nandflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D3XEK=y
>> >      > +CONFIG_PMECC_CAP=4
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d3xek_spiflash_defconfig
>> >     b/configs/sama5d3xek_spiflash_defconfig
>> >      > index 37f603d528..cf2fb9e65b 100644
>> >      > --- a/configs/sama5d3xek_spiflash_defconfig
>> >      > +++ b/configs/sama5d3xek_spiflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D3XEK=y
>> >      > +CONFIG_PMECC_CAP=4
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >
>> >     Ditto
>> >
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d4_xplained_mmc_defconfig
>> >     b/configs/sama5d4_xplained_mmc_defconfig
>> >      > index bfcea3f519..35b8302b60 100644
>> >      > --- a/configs/sama5d4_xplained_mmc_defconfig
>> >      > +++ b/configs/sama5d4_xplained_mmc_defconfig
>> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d4_xplained_nandflash_defconfig
>> >     b/configs/sama5d4_xplained_nandflash_defconfig
>> >      > index 2c1b7f17c0..93714ed0c7 100644
>> >      > --- a/configs/sama5d4_xplained_nandflash_defconfig
>> >      > +++ b/configs/sama5d4_xplained_nandflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>> >      > +CONFIG_PMECC_CAP=8
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d4_xplained_spiflash_defconfig
>> >     b/configs/sama5d4_xplained_spiflash_defconfig
>> >      > index a89dd11a8c..e1eb0c72cd 100644
>> >      > --- a/configs/sama5d4_xplained_spiflash_defconfig
>> >      > +++ b/configs/sama5d4_xplained_spiflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>> >      > +CONFIG_PMECC_CAP=8
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >
>> >     Ditto
>> >
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d4ek_mmc_defconfig
>> >     b/configs/sama5d4ek_mmc_defconfig
>> >      > index 45e6539913..bd238f7f14 100644
>> >      > --- a/configs/sama5d4ek_mmc_defconfig
>> >      > +++ b/configs/sama5d4ek_mmc_defconfig
>> >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D4EK=y
>> >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d4ek_nandflash_defconfig
>> >     b/configs/sama5d4ek_nandflash_defconfig
>> >      > index 1497110452..3816bfb273 100644
>> >      > --- a/configs/sama5d4ek_nandflash_defconfig
>> >      > +++ b/configs/sama5d4ek_nandflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D4EK=y
>> >      > +CONFIG_PMECC_CAP=8
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/sama5d4ek_spiflash_defconfig
>> >     b/configs/sama5d4ek_spiflash_defconfig
>> >      > index dad32b5711..242081e6a1 100644
>> >      > --- a/configs/sama5d4ek_spiflash_defconfig
>> >      > +++ b/configs/sama5d4ek_spiflash_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>> >      >   CONFIG_TARGET_SAMA5D4EK=y
>> >      > +CONFIG_PMECC_CAP=8
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >
>> >     Ditto
>> >
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
>> >      > index 9d881e5d41..15fc17ac00 100644
>> >      > --- a/configs/wb45n_defconfig
>> >      > +++ b/configs/wb45n_defconfig
>> >      > @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
>> >      >   CONFIG_TARGET_WB45N=y
>> >      > +CONFIG_PMECC_CAP=4
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
>> >      > index c74eba1012..a7e9a53448 100644
>> >      > --- a/configs/wb50n_defconfig
>> >      > +++ b/configs/wb50n_defconfig
>> >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>> >      >   CONFIG_ARCH_AT91=y
>> >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
>> >      >   CONFIG_TARGET_WB50N=y
>> >      > +CONFIG_PMECC_CAP=8
>> >      > +CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >   CONFIG_SPL_GPIO_SUPPORT=y
>> >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> >      > diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
>> >      > index 274d860f06..c86d085779 100644
>> >      > --- a/doc/README.atmel_pmecc
>> >      > +++ b/doc/README.atmel_pmecc
>> >      > @@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs
>> >     to set:
>> >      >       2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
>> >      >          It only can be 512 or 1024.
>> >      >
>> >      > -Take AT91SAM9X5EK as an example, the board definition file
>> likes:
>> >      > +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example,
>> >     the board
>> >      > +configuration file has the following entries:
>> >      >
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC              1
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
>> >      > -#define CONFIG_PMECC_CAP             2
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      > +     CONFIG_PMECC_CAP=2
>> >      > +     CONFIG_PMECC_SECTOR_SIZE=512
>> >      > +     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>> >      >
>> >      >   How to enable PMECC header for direct programmable boot.bin
>> >      >   -----------------------------------------------------------
>> >      > @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines
>> >     how this PMECC header has to
>> >      >   look like. In order to do so we have a new image type added to
>> >     mkimage to
>> >      >   generate this PMECC header and integrated this into the build
>> >     process of SPL.
>> >      >
>> >      > -To enable the generation of atmel PMECC header for SPL one need
>> >     to define
>> >      > +To enable the generation of atmel PMECC header for SPL one needs
>> >     to define
>> >      >   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters
>> >     are taken from
>> >      >   board configuration and compiled into the host tools
>> >     atmel_pmecc_params. This
>> >      >   tool will be called in build process to parametrize mkimage for
>> >     atmelimage
>> >      > diff --git a/drivers/mtd/nand/raw/Kconfig
>> >     b/drivers/mtd/nand/raw/Kconfig
>> >      > index 008f7b4b4b..b99732736a 100644
>> >      > --- a/drivers/mtd/nand/raw/Kconfig
>> >      > +++ b/drivers/mtd/nand/raw/Kconfig
>> >      > @@ -16,6 +16,44 @@ config NAND_ATMEL
>> >      >         Enable this driver for NAND flash platforms using an
>> >     Atmel NAND
>> >      >         controller.
>> >      >
>> >      > +if NAND_ATMEL
>> >      > +
>> >      > +config ATMEL_NAND_HWECC
>> >      > +     bool "Atmel Hardware ECC"
>> >      > +     default n
>> >      > +
>> >      > +config ATMEL_NAND_HW_PMECC
>> >      > +     bool "Atmel Programmable Multibit ECC (PMECC)"
>> >      > +     select ATMEL_NAND_HWECC
>> >      > +     default n
>> >      > +     help
>> >      > +       The Programmable Multibit ECC (PMECC) controller is a
>> >     programmable
>> >      > +       binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and
>> >     decoder.
>> >      > +
>> >      > +config PMECC_CAP
>> >      > +     int "PMECC Correctable ECC Bits"
>> >      > +     depends on ATMEL_NAND_HW_PMECC
>> >      > +     default 2
>> >      > +     help
>> >      > +       Correctable ECC bits, can be 2, 4, 8, 12, and 24.
>> >      > +
>> >      > +config PMECC_SECTOR_SIZE
>> >      > +     int "PMECC Sector Size"
>> >      > +     depends on ATMEL_NAND_HW_PMECC
>> >      > +     default 512
>> >      > +     help
>> >      > +       Sector size, in bytes, can be 512 or 1024.
>> >      > +
>> >      > +config SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      > +     bool "Atmel PMECC Header Generation"
>> >      > +     select ATMEL_NAND_HWECC
>> >      > +     select ATMEL_NAND_HW_PMECC
>> >      > +     default n
>> >      > +     help
>> >      > +       Generate Programmable Multibit ECC (PMECC) header for SPL
>> >     image.
>> >      > +
>> >      > +endif
>> >      > +
>> >      >   config NAND_DAVINCI
>> >      >       bool "Support TI Davinci NAND controller"
>> >      >       help
>> >      > diff --git a/include/configs/at91sam9n12ek.h
>> >     b/include/configs/at91sam9n12ek.h
>> >      > index 6cd267eee6..777a99b730 100644
>> >      > --- a/include/configs/at91sam9n12ek.h
>> >      > +++ b/include/configs/at91sam9n12ek.h
>> >      > @@ -59,12 +59,6 @@
>> >      >   #define CONFIG_SYS_NAND_READY_PIN   GPIO_PIN_PD(5)
>> >      >   #endif
>> >      >
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>> >      > -#define CONFIG_PMECC_CAP             2
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      > -
>> >      >   #define CONFIG_EXTRA_ENV_SETTINGS
>> >               \
>> >      >       "console=console=ttyS0,115200\0"
>> >          \
>> >      >       "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"
>> >                  \
>> >      > @@ -177,6 +171,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/include/configs/at91sam9x5ek.h
>> >     b/include/configs/at91sam9x5ek.h
>> >      > index 63305a7cdd..6adb965c3c 100644
>> >      > --- a/include/configs/at91sam9x5ek.h
>> >      > +++ b/include/configs/at91sam9x5ek.h
>> >      > @@ -55,12 +55,6 @@
>> >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>> >      >   #endif
>> >      >
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC              1
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
>> >      > -#define CONFIG_PMECC_CAP             2
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      > -
>> >      >   /* USB */
>> >      >   #ifdef CONFIG_CMD_USB
>> >      >   #ifndef CONFIG_USB_EHCI_HCD
>> >      > @@ -151,6 +145,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/include/configs/sama5d3_xplained.h
>> >     b/include/configs/sama5d3_xplained.h
>> >      > index d0d8087ca3..8a9a19d38e 100644
>> >      > --- a/include/configs/sama5d3_xplained.h
>> >      > +++ b/include/configs/sama5d3_xplained.h
>> >      > @@ -43,14 +43,8 @@
>> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>> >      >   #endif
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>> >      > -#define CONFIG_PMECC_CAP             4
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      >
>> >      >   /* USB */
>> >      > -
>> >      >   #ifdef CONFIG_CMD_USB
>> >      >   #define CONFIG_USB_ATMEL
>> >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>> >      > @@ -88,6 +82,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/include/configs/sama5d3xek.h
>> >     b/include/configs/sama5d3xek.h
>> >      > index 4d3c3b8314..ca1c2b0861 100644
>> >      > --- a/include/configs/sama5d3xek.h
>> >      > +++ b/include/configs/sama5d3xek.h
>> >      > @@ -62,14 +62,8 @@
>> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>> >      >   #endif
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>> >      > -#define CONFIG_PMECC_CAP             4
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      >
>> >      >   /* USB */
>> >      > -
>> >     Unrelated change ?
>> >
>> >      >   #ifdef CONFIG_CMD_USB
>> >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>> >      >   #define CONFIG_USB_OHCI_NEW
>> >      > @@ -109,6 +103,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/include/configs/sama5d4_xplained.h
>> >     b/include/configs/sama5d4_xplained.h
>> >      > index 7f8ac178f3..bbb16993ec 100644
>> >      > --- a/include/configs/sama5d4_xplained.h
>> >      > +++ b/include/configs/sama5d4_xplained.h
>> >      > @@ -37,9 +37,6 @@
>> >      >   /* our CLE is AD22 */
>> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>> >      >   #endif
>> >      >
>> >      >   /* SPL */
>> >      > @@ -64,8 +61,6 @@
>> >      >   #define CONFIG_SPL_NAND_DRIVERS
>> >      >   #define CONFIG_SPL_NAND_BASE
>> >      >   #endif
>> >      > -#define CONFIG_PMECC_CAP             8
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
>> >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>> >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
>> >      > @@ -73,6 +68,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/include/configs/sama5d4ek.h
>> >     b/include/configs/sama5d4ek.h
>> >      > index aa8573d8ba..d58041650c 100644
>> >      > --- a/include/configs/sama5d4ek.h
>> >      > +++ b/include/configs/sama5d4ek.h
>> >      > @@ -37,9 +37,6 @@
>> >      >   /* our CLE is AD22 */
>> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>> >      >   #endif
>> >      >
>> >      >   /* SPL */
>> >      > @@ -63,8 +60,6 @@
>> >      >   #define CONFIG_SPL_NAND_DRIVERS
>> >      >   #define CONFIG_SPL_NAND_BASE
>> >      >   #endif
>> >      > -#define CONFIG_PMECC_CAP             8
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>> >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
>> >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>> >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
>> >      > @@ -72,6 +67,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
>> >      > index b516b66c35..add4019b31 100644
>> >      > --- a/include/configs/wb45n.h
>> >      > +++ b/include/configs/wb45n.h
>> >      > @@ -48,12 +48,6 @@
>> >      >   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
>> >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>> >      >
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC     1
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC  1
>> >      > -#define CONFIG_PMECC_CAP            4
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
>> >      > -
>> >      >   #define CONFIG_RBTREE
>> >      >   #define CONFIG_LZO
>> >      >
>> >      > @@ -141,6 +135,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif                              /* __CONFIG_H__ */
>> >      > diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
>> >      > index 40ca9d602b..2684b6c16c 100644
>> >      > --- a/include/configs/wb50n.h
>> >      > +++ b/include/configs/wb50n.h
>> >      > @@ -57,11 +57,6 @@
>> >      >   /* our CLE is AD22 */
>> >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>> >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>> >      > -/* PMECC & PMERRLOC */
>> >      > -#define CONFIG_ATMEL_NAND_HWECC
>> >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>> >      > -#define CONFIG_PMECC_CAP            8
>> >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
>> >      >
>> >      >   /* Ethernet Hardware */
>> >      >   #define CONFIG_MACB
>> >      > @@ -118,6 +113,5 @@
>> >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
>> >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>> >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
>> >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >
>> >      >   #endif
>> >      > diff --git a/scripts/config_whitelist.txt
>> >     b/scripts/config_whitelist.txt
>> >      > index b8addeaf69..f798c6542a 100644
>> >      > --- a/scripts/config_whitelist.txt
>> >      > +++ b/scripts/config_whitelist.txt
>> >      > @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
>> >      >   CONFIG_ATMEL_LCD_RGB565
>> >      >   CONFIG_ATMEL_LEGACY
>> >      >   CONFIG_ATMEL_MCI_8BIT
>> >      > -CONFIG_ATMEL_NAND_HWECC
>> >      > -CONFIG_ATMEL_NAND_HW_PMECC
>> >      >   CONFIG_ATMEL_SPI0
>> >      >   CONFIG_AT_TRANS
>> >      >   CONFIG_AUTO_ZRELADDR
>> >      > @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
>> >      >   CONFIG_PM
>> >      >   CONFIG_PMC_BR_PRELIM
>> >      >   CONFIG_PMC_OR_PRELIM
>> >      > -CONFIG_PMECC_CAP
>> >      > -CONFIG_PMECC_SECTOR_SIZE
>> >      >   CONFIG_PME_PLAT_CLK_DIV
>> >      >   CONFIG_PMU
>> >      >   CONFIG_PMW_BASE
>> >      > @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
>> >      >   CONFIG_SPL_FS_LOAD_KERNEL_NAME
>> >      >   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
>> >      >   CONFIG_SPL_GD_ADDR
>> >      > -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>> >      >   CONFIG_SPL_INIT_MINIMAL
>> >      >   CONFIG_SPL_JR0_LIODN_NS
>> >      >   CONFIG_SPL_JR0_LIODN_S
>> >      >
>> >
>>
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-11 16:53                         ` Derald Woods
@ 2019-01-18  8:37                           ` Eugen.Hristev at microchip.com
  2019-01-19  3:26                             ` Derald D. Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Eugen.Hristev at microchip.com @ 2019-01-18  8:37 UTC (permalink / raw)
  To: u-boot



On 11.01.2019 18:53, Derald Woods wrote:
> 
> 
> On Fri, Jan 11, 2019, 10:51 AM Derald Woods <woods.technical@gmail.com 
> <mailto:woods.technical@gmail.com> wrote:
> 
> 
>     On Fri, Jan 11, 2019, 5:27 AM <Eugen.Hristev@microchip.com
>     <mailto:Eugen.Hristev@microchip.com> wrote:
> 
> 
> 
>         On 10.01.2019 03:00, Derald Woods wrote:
>          > On Mon, Jan 7, 2019 at 3:40 AM <Eugen.Hristev@microchip.com
>         <mailto:Eugen.Hristev@microchip.com>
>          > <mailto:Eugen.Hristev@microchip.com
>         <mailto:Eugen.Hristev@microchip.com>>> wrote:
>          >
>          >     Hi Derald,
>          >
>          >     Thank you for the patch,
>          >
>          >     Some minor questions inline.
>          >
>          >
>          >
>          > Sorry for the late response. Family and day job take priority.
>          >
>          > The patch is the simplest technical conversion that I could
>         produce with
>          > my board (SAMA5D3-XPLD) as the test platform. I was very
>         careful not to
>          > touch anything unrelated. It is not intended to address
>         permutations
>          > outside of the PMECC Kconfig scope. I have submitted these
>         type of
>          > conversions to U-Boot in the past. Adding speculative things
>         is risky
>          > when you only have one development board. The patch works
>         well, for me,
>          > and addresses the original need. All items, in the patch, are
>         currently
>          > in scope. If there are additions and/or modifications, feel
>         free to
>          > modify the patch. It is complete from my perspective. I do
>         not have any
>          > additional time to chase this any further. I have been
>         developing for
>          > some time now and can handle an 'out of tree' patch, in my
>         environment,
>          > until something better comes along. This patch is just my
>         contribution
>          > to the process.
> 
>         Hello Derald,
> 
>           From my point of view the PMECC header generation for SPL
>         should be
>         done if and only if the SPL is being placed in NAND flash namely
>         defconfigs having *nandflash* in the name.
> 
>         Thus I disagree with enabling it on spiflash configurations
>         (like you
>         did for the *mmc* configurations looks OK)
> 
> 
>     The patch is about 'one' thing. Kconfig conversion. Things that you
>     are mentioning do not invalidate my patch. I tried not to add things
>     that were not there originally. That is generally discouraged scope
>     creep. The patch does its job in a provable manner with
> 
> 
> 'without'
> 
>     changing existing usage.


Ok, I understand your point.
Can you make the CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER depend on 
NAND_BOOT though ? This way the errors cannot happen again.

Also the other defconfigs need to depend on NAND if they are strict NAND 
related.

Maybe we can get more opinions from someone more familiar with the NAND 
subsystem ? Adding Miquel and Boris.

Thanks,

Eugen

> 
>     Derald
> 
> 
>         If you have any reasons or arguments , or anyone else does, please
>         correct me.
> 
>         If you do not have time to change the patch, that is OK, I can
>         take over
>         at some point when I have the time or someone else can pick and
>         rework a
>         little bit on that specific point and make a v2.
> 
>         Thanks again,
> 
>         Eugen
> 
>          >
>          > Cheers,
>          >
>          > Derald
>          >
>          >
>          >     On 15.12.2018 09:36, Derald D. Woods wrote:
>          >      > This commit converts the following items to Kconfig:
>          >      >
>          >      > CONFIG_ATMEL_NAND_HWECC
>          >      > CONFIG_ATMEL_NAND_HW_PMECC
>          >      > CONFIG_PMECC_CAP
>          >      > CONFIG_PMECC_SECTOR_SIZE
>          >      > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      > [PMECC References]
>          >      >
>         https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
>          >      >
>         https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
>          >      >
>          >      > [Mailing List Thread]
>          >      >
>         https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
>          >      >
>          >      > Fixes: 5541543f ("configs: at91: Remove
>         CONFIG_SYS_EXTRA_OPTIONS
>          >     assignment")
>          >      > Reported-by: Daniel Evans <photonthunder@gmail.com
>         <mailto:photonthunder@gmail.com>
>          >     <mailto:photonthunder@gmail.com
>         <mailto:photonthunder@gmail.com>>>
>          >      > Cc: Eugen Hristev <eugen.hristev@microchip.com
>         <mailto:eugen.hristev@microchip.com>
>          >     <mailto:eugen.hristev@microchip.com
>         <mailto:eugen.hristev@microchip.com>>>
>          >      > Signed-off-by: Derald D. Woods
>         <woods.technical at gmail.com <mailto:woods.technical@gmail.com>
>          >     <mailto:woods.technical@gmail.com
>         <mailto:woods.technical@gmail.com>>>
>          >      > ---
>          >      >   configs/at91sam9n12ek_mmc_defconfig          |  1 +
>          >      >   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
>          >      >   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
>          >      >   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
>          >      >   configs/at91sam9x5ek_mmc_defconfig           |  1 +
>          >      >   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
>          >      >   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
>          >      >   configs/sama5d3_xplained_mmc_defconfig       |  1 +
>          >      >   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
>          >      >   configs/sama5d3xek_mmc_defconfig             |  1 +
>          >      >   configs/sama5d3xek_nandflash_defconfig       |  3 ++
>          >      >   configs/sama5d3xek_spiflash_defconfig        |  3 ++
>          >      >   configs/sama5d4_xplained_mmc_defconfig       |  1 +
>          >      >   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
>          >      >   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
>          >      >   configs/sama5d4ek_mmc_defconfig              |  1 +
>          >      >   configs/sama5d4ek_nandflash_defconfig        |  3 ++
>          >      >   configs/sama5d4ek_spiflash_defconfig         |  3 ++
>          >      >   configs/wb45n_defconfig                      |  3 ++
>          >      >   configs/wb50n_defconfig                      |  3 ++
>          >      >   doc/README.atmel_pmecc                       | 13
>         ++++---
>          >      >   drivers/mtd/nand/raw/Kconfig                 | 38
>          >     ++++++++++++++++++++
>          >      >   include/configs/at91sam9n12ek.h              |  7 ----
>          >      >   include/configs/at91sam9x5ek.h               |  7 ----
>          >      >   include/configs/sama5d3_xplained.h           |  7 ----
>          >      >   include/configs/sama5d3xek.h                 |  7 ----
>          >      >   include/configs/sama5d4_xplained.h           |  6 ----
>          >      >   include/configs/sama5d4ek.h                  |  6 ----
>          >      >   include/configs/wb45n.h                      |  7 ----
>          >      >   include/configs/wb50n.h                      |  6 ----
>          >      >   scripts/config_whitelist.txt                 |  5 ---
>          >      >   31 files changed, 92 insertions(+), 65 deletions(-)
>          >      >
>          >      > diff --git a/configs/at91sam9n12ek_mmc_defconfig
>          >     b/configs/at91sam9n12ek_mmc_defconfig
>          >      > index 6b2cfe9c42..7b46eb498d 100644
>          >      > --- a/configs/at91sam9n12ek_mmc_defconfig
>          >      > +++ b/configs/at91sam9n12ek_mmc_defconfig
>          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9N12EK=y
>          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/at91sam9n12ek_nandflash_defconfig
>          >     b/configs/at91sam9n12ek_nandflash_defconfig
>          >      > index 354c24ff16..4e34a517fd 100644
>          >      > --- a/configs/at91sam9n12ek_nandflash_defconfig
>          >      > +++ b/configs/at91sam9n12ek_nandflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9N12EK=y
>          >      > +CONFIG_PMECC_CAP=2
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/at91sam9n12ek_spiflash_defconfig
>          >     b/configs/at91sam9n12ek_spiflash_defconfig
>          >      > index 63889355bf..500c3ab088 100644
>          >      > --- a/configs/at91sam9n12ek_spiflash_defconfig
>          >      > +++ b/configs/at91sam9n12ek_spiflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9N12EK=y
>          >      > +CONFIG_PMECC_CAP=2
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >
>          >     Do we need to generate the PMECC header for SPI_BOOT
>         configurations ?
>          >     I would say this would be required only for NAND_BOOT
>          >
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/at91sam9x5ek_dataflash_defconfig
>          >     b/configs/at91sam9x5ek_dataflash_defconfig
>          >      > index dc13509715..60d865cc23 100644
>          >      > --- a/configs/at91sam9x5ek_dataflash_defconfig
>          >      > +++ b/configs/at91sam9x5ek_dataflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>          >      > +CONFIG_PMECC_CAP=2
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/at91sam9x5ek_mmc_defconfig
>          >     b/configs/at91sam9x5ek_mmc_defconfig
>          >      > index ff86f93e61..75f7fbd199 100644
>          >      > --- a/configs/at91sam9x5ek_mmc_defconfig
>          >      > +++ b/configs/at91sam9x5ek_mmc_defconfig
>          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/at91sam9x5ek_nandflash_defconfig
>          >     b/configs/at91sam9x5ek_nandflash_defconfig
>          >      > index b2b3ddb6d9..dd6bdee7f9 100644
>          >      > --- a/configs/at91sam9x5ek_nandflash_defconfig
>          >      > +++ b/configs/at91sam9x5ek_nandflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>          >      > +CONFIG_PMECC_CAP=2
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/at91sam9x5ek_spiflash_defconfig
>          >     b/configs/at91sam9x5ek_spiflash_defconfig
>          >      > index d0eebcdc75..8d8108888c 100644
>          >      > --- a/configs/at91sam9x5ek_spiflash_defconfig
>          >      > +++ b/configs/at91sam9x5ek_spiflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
>          >      > +CONFIG_PMECC_CAP=2
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >
>          >     Ditto.
>          >
>          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
>          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
>          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
>          >      > diff --git a/configs/sama5d3_xplained_mmc_defconfig
>          >     b/configs/sama5d3_xplained_mmc_defconfig
>          >      > index eab38ec366..51d5aeaf0e 100644
>          >      > --- a/configs/sama5d3_xplained_mmc_defconfig
>          >      > +++ b/configs/sama5d3_xplained_mmc_defconfig
>          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
>          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d3_xplained_nandflash_defconfig
>          >     b/configs/sama5d3_xplained_nandflash_defconfig
>          >      > index ff7d2bffdd..ce1f28607e 100644
>          >      > --- a/configs/sama5d3_xplained_nandflash_defconfig
>          >      > +++ b/configs/sama5d3_xplained_nandflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
>          >      > +CONFIG_PMECC_CAP=4
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d3xek_mmc_defconfig
>          >     b/configs/sama5d3xek_mmc_defconfig
>          >      > index 6faea0ec3f..49d4334213 100644
>          >      > --- a/configs/sama5d3xek_mmc_defconfig
>          >      > +++ b/configs/sama5d3xek_mmc_defconfig
>          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D3XEK=y
>          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d3xek_nandflash_defconfig
>          >     b/configs/sama5d3xek_nandflash_defconfig
>          >      > index e641279ee1..b0d56e0e3e 100644
>          >      > --- a/configs/sama5d3xek_nandflash_defconfig
>          >      > +++ b/configs/sama5d3xek_nandflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D3XEK=y
>          >      > +CONFIG_PMECC_CAP=4
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d3xek_spiflash_defconfig
>          >     b/configs/sama5d3xek_spiflash_defconfig
>          >      > index 37f603d528..cf2fb9e65b 100644
>          >      > --- a/configs/sama5d3xek_spiflash_defconfig
>          >      > +++ b/configs/sama5d3xek_spiflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D3XEK=y
>          >      > +CONFIG_PMECC_CAP=4
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >
>          >     Ditto
>          >
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d4_xplained_mmc_defconfig
>          >     b/configs/sama5d4_xplained_mmc_defconfig
>          >      > index bfcea3f519..35b8302b60 100644
>          >      > --- a/configs/sama5d4_xplained_mmc_defconfig
>          >      > +++ b/configs/sama5d4_xplained_mmc_defconfig
>          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d4_xplained_nandflash_defconfig
>          >     b/configs/sama5d4_xplained_nandflash_defconfig
>          >      > index 2c1b7f17c0..93714ed0c7 100644
>          >      > --- a/configs/sama5d4_xplained_nandflash_defconfig
>          >      > +++ b/configs/sama5d4_xplained_nandflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>          >      > +CONFIG_PMECC_CAP=8
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d4_xplained_spiflash_defconfig
>          >     b/configs/sama5d4_xplained_spiflash_defconfig
>          >      > index a89dd11a8c..e1eb0c72cd 100644
>          >      > --- a/configs/sama5d4_xplained_spiflash_defconfig
>          >      > +++ b/configs/sama5d4_xplained_spiflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
>          >      > +CONFIG_PMECC_CAP=8
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >
>          >     Ditto
>          >
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d4ek_mmc_defconfig
>          >     b/configs/sama5d4ek_mmc_defconfig
>          >      > index 45e6539913..bd238f7f14 100644
>          >      > --- a/configs/sama5d4ek_mmc_defconfig
>          >      > +++ b/configs/sama5d4ek_mmc_defconfig
>          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D4EK=y
>          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d4ek_nandflash_defconfig
>          >     b/configs/sama5d4ek_nandflash_defconfig
>          >      > index 1497110452..3816bfb273 100644
>          >      > --- a/configs/sama5d4ek_nandflash_defconfig
>          >      > +++ b/configs/sama5d4ek_nandflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D4EK=y
>          >      > +CONFIG_PMECC_CAP=8
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/sama5d4ek_spiflash_defconfig
>          >     b/configs/sama5d4ek_spiflash_defconfig
>          >      > index dad32b5711..242081e6a1 100644
>          >      > --- a/configs/sama5d4ek_spiflash_defconfig
>          >      > +++ b/configs/sama5d4ek_spiflash_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
>          >      >   CONFIG_TARGET_SAMA5D4EK=y
>          >      > +CONFIG_PMECC_CAP=8
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >
>          >     Ditto
>          >
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/wb45n_defconfig
>         b/configs/wb45n_defconfig
>          >      > index 9d881e5d41..15fc17ac00 100644
>          >      > --- a/configs/wb45n_defconfig
>          >      > +++ b/configs/wb45n_defconfig
>          >      > @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
>          >      >   CONFIG_TARGET_WB45N=y
>          >      > +CONFIG_PMECC_CAP=4
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/configs/wb50n_defconfig
>         b/configs/wb50n_defconfig
>          >      > index c74eba1012..a7e9a53448 100644
>          >      > --- a/configs/wb50n_defconfig
>          >      > +++ b/configs/wb50n_defconfig
>          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
>          >      >   CONFIG_ARCH_AT91=y
>          >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
>          >      >   CONFIG_TARGET_WB50N=y
>          >      > +CONFIG_PMECC_CAP=8
>          >      > +CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >   CONFIG_SPL_GPIO_SUPPORT=y
>          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
>          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>          >      > diff --git a/doc/README.atmel_pmecc
>         b/doc/README.atmel_pmecc
>          >      > index 274d860f06..c86d085779 100644
>          >      > --- a/doc/README.atmel_pmecc
>          >      > +++ b/doc/README.atmel_pmecc
>          >      > @@ -20,13 +20,12 @@ To use PMECC in this driver, the
>         user needs
>          >     to set:
>          >      >       2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
>          >      >          It only can be 512 or 1024.
>          >      >
>          >      > -Take AT91SAM9X5EK as an example, the board definition
>         file likes:
>          >      > +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an
>         example,
>          >     the board
>          >      > +configuration file has the following entries:
>          >      >
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC              1
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
>          >      > -#define CONFIG_PMECC_CAP             2
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      > +     CONFIG_PMECC_CAP=2
>          >      > +     CONFIG_PMECC_SECTOR_SIZE=512
>          >      > +     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
>          >      >
>          >      >   How to enable PMECC header for direct programmable
>         boot.bin
>          >      > 
>           -----------------------------------------------------------
>          >      > @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April
>         2014) defines
>          >     how this PMECC header has to
>          >      >   look like. In order to do so we have a new image
>         type added to
>          >     mkimage to
>          >      >   generate this PMECC header and integrated this into
>         the build
>          >     process of SPL.
>          >      >
>          >      > -To enable the generation of atmel PMECC header for
>         SPL one need
>          >     to define
>          >      > +To enable the generation of atmel PMECC header for
>         SPL one needs
>          >     to define
>          >      >   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required
>         parameters
>          >     are taken from
>          >      >   board configuration and compiled into the host tools
>          >     atmel_pmecc_params. This
>          >      >   tool will be called in build process to parametrize
>         mkimage for
>          >     atmelimage
>          >      > diff --git a/drivers/mtd/nand/raw/Kconfig
>          >     b/drivers/mtd/nand/raw/Kconfig
>          >      > index 008f7b4b4b..b99732736a 100644
>          >      > --- a/drivers/mtd/nand/raw/Kconfig
>          >      > +++ b/drivers/mtd/nand/raw/Kconfig
>          >      > @@ -16,6 +16,44 @@ config NAND_ATMEL
>          >      >         Enable this driver for NAND flash platforms
>         using an
>          >     Atmel NAND
>          >      >         controller.
>          >      >
>          >      > +if NAND_ATMEL
>          >      > +
>          >      > +config ATMEL_NAND_HWECC
>          >      > +     bool "Atmel Hardware ECC"
>          >      > +     default n
>          >      > +
>          >      > +config ATMEL_NAND_HW_PMECC
>          >      > +     bool "Atmel Programmable Multibit ECC (PMECC)"
>          >      > +     select ATMEL_NAND_HWECC
>          >      > +     default n
>          >      > +     help
>          >      > +       The Programmable Multibit ECC (PMECC)
>         controller is a
>          >     programmable
>          >      > +       binary BCH(Bose, Chaudhuri and Hocquenghem)
>         encoder and
>          >     decoder.
>          >      > +
>          >      > +config PMECC_CAP
>          >      > +     int "PMECC Correctable ECC Bits"
>          >      > +     depends on ATMEL_NAND_HW_PMECC
>          >      > +     default 2
>          >      > +     help
>          >      > +       Correctable ECC bits, can be 2, 4, 8, 12, and 24.
>          >      > +
>          >      > +config PMECC_SECTOR_SIZE
>          >      > +     int "PMECC Sector Size"
>          >      > +     depends on ATMEL_NAND_HW_PMECC
>          >      > +     default 512
>          >      > +     help
>          >      > +       Sector size, in bytes, can be 512 or 1024.
>          >      > +
>          >      > +config SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      > +     bool "Atmel PMECC Header Generation"
>          >      > +     select ATMEL_NAND_HWECC
>          >      > +     select ATMEL_NAND_HW_PMECC
>          >      > +     default n
>          >      > +     help
>          >      > +       Generate Programmable Multibit ECC (PMECC)
>         header for SPL
>          >     image.
>          >      > +
>          >      > +endif
>          >      > +
>          >      >   config NAND_DAVINCI
>          >      >       bool "Support TI Davinci NAND controller"
>          >      >       help
>          >      > diff --git a/include/configs/at91sam9n12ek.h
>          >     b/include/configs/at91sam9n12ek.h
>          >      > index 6cd267eee6..777a99b730 100644
>          >      > --- a/include/configs/at91sam9n12ek.h
>          >      > +++ b/include/configs/at91sam9n12ek.h
>          >      > @@ -59,12 +59,6 @@
>          >      >   #define CONFIG_SYS_NAND_READY_PIN   GPIO_PIN_PD(5)
>          >      >   #endif
>          >      >
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>          >      > -#define CONFIG_PMECC_CAP             2
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      > -
>          >      >   #define CONFIG_EXTRA_ENV_SETTINGS
>          >               \
>          >      >       "console=console=ttyS0,115200\0"
>          >          \
>          >      >       "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"
>          >                  \
>          >      > @@ -177,6 +171,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/include/configs/at91sam9x5ek.h
>          >     b/include/configs/at91sam9x5ek.h
>          >      > index 63305a7cdd..6adb965c3c 100644
>          >      > --- a/include/configs/at91sam9x5ek.h
>          >      > +++ b/include/configs/at91sam9x5ek.h
>          >      > @@ -55,12 +55,6 @@
>          >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>          >      >   #endif
>          >      >
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC              1
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
>          >      > -#define CONFIG_PMECC_CAP             2
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      > -
>          >      >   /* USB */
>          >      >   #ifdef CONFIG_CMD_USB
>          >      >   #ifndef CONFIG_USB_EHCI_HCD
>          >      > @@ -151,6 +145,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/include/configs/sama5d3_xplained.h
>          >     b/include/configs/sama5d3_xplained.h
>          >      > index d0d8087ca3..8a9a19d38e 100644
>          >      > --- a/include/configs/sama5d3_xplained.h
>          >      > +++ b/include/configs/sama5d3_xplained.h
>          >      > @@ -43,14 +43,8 @@
>          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>          >      >   #endif
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>          >      > -#define CONFIG_PMECC_CAP             4
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      >
>          >      >   /* USB */
>          >      > -
>          >      >   #ifdef CONFIG_CMD_USB
>          >      >   #define CONFIG_USB_ATMEL
>          >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>          >      > @@ -88,6 +82,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/include/configs/sama5d3xek.h
>          >     b/include/configs/sama5d3xek.h
>          >      > index 4d3c3b8314..ca1c2b0861 100644
>          >      > --- a/include/configs/sama5d3xek.h
>          >      > +++ b/include/configs/sama5d3xek.h
>          >      > @@ -62,14 +62,8 @@
>          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>          >      >   #endif
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>          >      > -#define CONFIG_PMECC_CAP             4
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      >
>          >      >   /* USB */
>          >      > -
>          >     Unrelated change ?
>          >
>          >      >   #ifdef CONFIG_CMD_USB
>          >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
>          >      >   #define CONFIG_USB_OHCI_NEW
>          >      > @@ -109,6 +103,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/include/configs/sama5d4_xplained.h
>          >     b/include/configs/sama5d4_xplained.h
>          >      > index 7f8ac178f3..bbb16993ec 100644
>          >      > --- a/include/configs/sama5d4_xplained.h
>          >      > +++ b/include/configs/sama5d4_xplained.h
>          >      > @@ -37,9 +37,6 @@
>          >      >   /* our CLE is AD22 */
>          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>          >      >   #endif
>          >      >
>          >      >   /* SPL */
>          >      > @@ -64,8 +61,6 @@
>          >      >   #define CONFIG_SPL_NAND_DRIVERS
>          >      >   #define CONFIG_SPL_NAND_BASE
>          >      >   #endif
>          >      > -#define CONFIG_PMECC_CAP             8
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
>          >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>          >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
>          >      > @@ -73,6 +68,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/include/configs/sama5d4ek.h
>          >     b/include/configs/sama5d4ek.h
>          >      > index aa8573d8ba..d58041650c 100644
>          >      > --- a/include/configs/sama5d4ek.h
>          >      > +++ b/include/configs/sama5d4ek.h
>          >      > @@ -37,9 +37,6 @@
>          >      >   /* our CLE is AD22 */
>          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>          >      >   #endif
>          >      >
>          >      >   /* SPL */
>          >      > @@ -63,8 +60,6 @@
>          >      >   #define CONFIG_SPL_NAND_DRIVERS
>          >      >   #define CONFIG_SPL_NAND_BASE
>          >      >   #endif
>          >      > -#define CONFIG_PMECC_CAP             8
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
>          >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
>          >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
>          >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
>          >      > @@ -72,6 +67,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/include/configs/wb45n.h
>         b/include/configs/wb45n.h
>          >      > index b516b66c35..add4019b31 100644
>          >      > --- a/include/configs/wb45n.h
>          >      > +++ b/include/configs/wb45n.h
>          >      > @@ -48,12 +48,6 @@
>          >      >   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
>          >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
>          >      >
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC     1
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC  1
>          >      > -#define CONFIG_PMECC_CAP            4
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
>          >      > -
>          >      >   #define CONFIG_RBTREE
>          >      >   #define CONFIG_LZO
>          >      >
>          >      > @@ -141,6 +135,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif                              /* __CONFIG_H__ */
>          >      > diff --git a/include/configs/wb50n.h
>         b/include/configs/wb50n.h
>          >      > index 40ca9d602b..2684b6c16c 100644
>          >      > --- a/include/configs/wb50n.h
>          >      > +++ b/include/configs/wb50n.h
>          >      > @@ -57,11 +57,6 @@
>          >      >   /* our CLE is AD22 */
>          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
>          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
>          >      > -/* PMECC & PMERRLOC */
>          >      > -#define CONFIG_ATMEL_NAND_HWECC
>          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
>          >      > -#define CONFIG_PMECC_CAP            8
>          >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
>          >      >
>          >      >   /* Ethernet Hardware */
>          >      >   #define CONFIG_MACB
>          >      > @@ -118,6 +113,5 @@
>          >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
>          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
>          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
>          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >
>          >      >   #endif
>          >      > diff --git a/scripts/config_whitelist.txt
>          >     b/scripts/config_whitelist.txt
>          >      > index b8addeaf69..f798c6542a 100644
>          >      > --- a/scripts/config_whitelist.txt
>          >      > +++ b/scripts/config_whitelist.txt
>          >      > @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
>          >      >   CONFIG_ATMEL_LCD_RGB565
>          >      >   CONFIG_ATMEL_LEGACY
>          >      >   CONFIG_ATMEL_MCI_8BIT
>          >      > -CONFIG_ATMEL_NAND_HWECC
>          >      > -CONFIG_ATMEL_NAND_HW_PMECC
>          >      >   CONFIG_ATMEL_SPI0
>          >      >   CONFIG_AT_TRANS
>          >      >   CONFIG_AUTO_ZRELADDR
>          >      > @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
>          >      >   CONFIG_PM
>          >      >   CONFIG_PMC_BR_PRELIM
>          >      >   CONFIG_PMC_OR_PRELIM
>          >      > -CONFIG_PMECC_CAP
>          >      > -CONFIG_PMECC_SECTOR_SIZE
>          >      >   CONFIG_PME_PLAT_CLK_DIV
>          >      >   CONFIG_PMU
>          >      >   CONFIG_PMW_BASE
>          >      > @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
>          >      >   CONFIG_SPL_FS_LOAD_KERNEL_NAME
>          >      >   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
>          >      >   CONFIG_SPL_GD_ADDR
>          >      > -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
>          >      >   CONFIG_SPL_INIT_MINIMAL
>          >      >   CONFIG_SPL_JR0_LIODN_NS
>          >      >   CONFIG_SPL_JR0_LIODN_S
>          >      >
>          >
> 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-18  8:37                           ` Eugen.Hristev at microchip.com
@ 2019-01-19  3:26                             ` Derald D. Woods
  0 siblings, 0 replies; 32+ messages in thread
From: Derald D. Woods @ 2019-01-19  3:26 UTC (permalink / raw)
  To: u-boot

On Fri, Jan 18, 2019 at 08:37:48AM +0000, Eugen.Hristev at microchip.com wrote:
> 
> 
> On 11.01.2019 18:53, Derald Woods wrote:
> > 
> > 
> > On Fri, Jan 11, 2019, 10:51 AM Derald Woods <woods.technical@gmail.com 
> > <mailto:woods.technical@gmail.com> wrote:
> > 
> > 
> >     On Fri, Jan 11, 2019, 5:27 AM <Eugen.Hristev@microchip.com
> >     <mailto:Eugen.Hristev@microchip.com> wrote:
> > 
> > 
> > 
> >         On 10.01.2019 03:00, Derald Woods wrote:
> >          > On Mon, Jan 7, 2019 at 3:40 AM <Eugen.Hristev@microchip.com
> >         <mailto:Eugen.Hristev@microchip.com>
> >          > <mailto:Eugen.Hristev@microchip.com
> >         <mailto:Eugen.Hristev@microchip.com>>> wrote:
> >          >
> >          >     Hi Derald,
> >          >
> >          >     Thank you for the patch,
> >          >
> >          >     Some minor questions inline.
> >          >
> >          >
> >          >
> >          > Sorry for the late response. Family and day job take priority.
> >          >
> >          > The patch is the simplest technical conversion that I could
> >         produce with
> >          > my board (SAMA5D3-XPLD) as the test platform. I was very
> >         careful not to
> >          > touch anything unrelated. It is not intended to address
> >         permutations
> >          > outside of the PMECC Kconfig scope. I have submitted these
> >         type of
> >          > conversions to U-Boot in the past. Adding speculative things
> >         is risky
> >          > when you only have one development board. The patch works
> >         well, for me,
> >          > and addresses the original need. All items, in the patch, are
> >         currently
> >          > in scope. If there are additions and/or modifications, feel
> >         free to
> >          > modify the patch. It is complete from my perspective. I do
> >         not have any
> >          > additional time to chase this any further. I have been
> >         developing for
> >          > some time now and can handle an 'out of tree' patch, in my
> >         environment,
> >          > until something better comes along. This patch is just my
> >         contribution
> >          > to the process.
> > 
> >         Hello Derald,
> > 
> >           From my point of view the PMECC header generation for SPL
> >         should be
> >         done if and only if the SPL is being placed in NAND flash namely
> >         defconfigs having *nandflash* in the name.
> > 
> >         Thus I disagree with enabling it on spiflash configurations
> >         (like you
> >         did for the *mmc* configurations looks OK)
> > 
> > 
> >     The patch is about 'one' thing. Kconfig conversion. Things that you
> >     are mentioning do not invalidate my patch. I tried not to add things
> >     that were not there originally. That is generally discouraged scope
> >     creep. The patch does its job in a provable manner with
> > 
> > 
> > 'without'
> > 
> >     changing existing usage.
> 
> 
> Ok, I understand your point.
> Can you make the CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER depend on 
> NAND_BOOT though ? This way the errors cannot happen again.
> 


I agree.


> Also the other defconfigs need to depend on NAND if they are strict NAND 
> related.
> 


But are the existing configs that enable both SPL_GENERATE_ATMEL_PMECC_HEADER
and SPI_BOOT really valid?

It would appear that those entries may just be placeholders in the event
that an end-user enabled PMECC and NAND_BOOT for that particular board.

I could rework the patch to remove PMECC items from non-NAND_BOOT
configs. Comments could be used to preserve previous values. Does this sound
reasonable?

Additionally, I would make ATMEL_NAND_HW_PMECC dependent on ATMEL_NAND_HWECC
as it should be.

I can only test on the SAMA5D3-XPLD board.

Derald


> Maybe we can get more opinions from someone more familiar with the NAND 
> subsystem ? Adding Miquel and Boris.
> 
> Thanks,
> 
> Eugen
> 
> > 
> >     Derald
> > 
> > 
> >         If you have any reasons or arguments , or anyone else does, please
> >         correct me.
> > 
> >         If you do not have time to change the patch, that is OK, I can
> >         take over
> >         at some point when I have the time or someone else can pick and
> >         rework a
> >         little bit on that specific point and make a v2.
> > 
> >         Thanks again,
> > 
> >         Eugen
> > 
> >          >
> >          > Cheers,
> >          >
> >          > Derald
> >          >
> >          >
> >          >     On 15.12.2018 09:36, Derald D. Woods wrote:
> >          >      > This commit converts the following items to Kconfig:
> >          >      >
> >          >      > CONFIG_ATMEL_NAND_HWECC
> >          >      > CONFIG_ATMEL_NAND_HW_PMECC
> >          >      > CONFIG_PMECC_CAP
> >          >      > CONFIG_PMECC_SECTOR_SIZE
> >          >      > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      > [PMECC References]
> >          >      >
> >         https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> >          >      >
> >         https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> >          >      >
> >          >      > [Mailing List Thread]
> >          >      >
> >         https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> >          >      >
> >          >      > Fixes: 5541543f ("configs: at91: Remove
> >         CONFIG_SYS_EXTRA_OPTIONS
> >          >     assignment")
> >          >      > Reported-by: Daniel Evans <photonthunder@gmail.com
> >         <mailto:photonthunder@gmail.com>
> >          >     <mailto:photonthunder@gmail.com
> >         <mailto:photonthunder@gmail.com>>>
> >          >      > Cc: Eugen Hristev <eugen.hristev@microchip.com
> >         <mailto:eugen.hristev@microchip.com>
> >          >     <mailto:eugen.hristev@microchip.com
> >         <mailto:eugen.hristev@microchip.com>>>
> >          >      > Signed-off-by: Derald D. Woods
> >         <woods.technical at gmail.com <mailto:woods.technical@gmail.com>
> >          >     <mailto:woods.technical@gmail.com
> >         <mailto:woods.technical@gmail.com>>>
> >          >      > ---
> >          >      >   configs/at91sam9n12ek_mmc_defconfig          |  1 +
> >          >      >   configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
> >          >      >   configs/at91sam9n12ek_spiflash_defconfig     |  3 ++
> >          >      >   configs/at91sam9x5ek_dataflash_defconfig     |  3 ++
> >          >      >   configs/at91sam9x5ek_mmc_defconfig           |  1 +
> >          >      >   configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
> >          >      >   configs/at91sam9x5ek_spiflash_defconfig      |  3 ++
> >          >      >   configs/sama5d3_xplained_mmc_defconfig       |  1 +
> >          >      >   configs/sama5d3_xplained_nandflash_defconfig |  3 ++
> >          >      >   configs/sama5d3xek_mmc_defconfig             |  1 +
> >          >      >   configs/sama5d3xek_nandflash_defconfig       |  3 ++
> >          >      >   configs/sama5d3xek_spiflash_defconfig        |  3 ++
> >          >      >   configs/sama5d4_xplained_mmc_defconfig       |  1 +
> >          >      >   configs/sama5d4_xplained_nandflash_defconfig |  3 ++
> >          >      >   configs/sama5d4_xplained_spiflash_defconfig  |  3 ++
> >          >      >   configs/sama5d4ek_mmc_defconfig              |  1 +
> >          >      >   configs/sama5d4ek_nandflash_defconfig        |  3 ++
> >          >      >   configs/sama5d4ek_spiflash_defconfig         |  3 ++
> >          >      >   configs/wb45n_defconfig                      |  3 ++
> >          >      >   configs/wb50n_defconfig                      |  3 ++
> >          >      >   doc/README.atmel_pmecc                       | 13
> >         ++++---
> >          >      >   drivers/mtd/nand/raw/Kconfig                 | 38
> >          >     ++++++++++++++++++++
> >          >      >   include/configs/at91sam9n12ek.h              |  7 ----
> >          >      >   include/configs/at91sam9x5ek.h               |  7 ----
> >          >      >   include/configs/sama5d3_xplained.h           |  7 ----
> >          >      >   include/configs/sama5d3xek.h                 |  7 ----
> >          >      >   include/configs/sama5d4_xplained.h           |  6 ----
> >          >      >   include/configs/sama5d4ek.h                  |  6 ----
> >          >      >   include/configs/wb45n.h                      |  7 ----
> >          >      >   include/configs/wb50n.h                      |  6 ----
> >          >      >   scripts/config_whitelist.txt                 |  5 ---
> >          >      >   31 files changed, 92 insertions(+), 65 deletions(-)
> >          >      >
> >          >      > diff --git a/configs/at91sam9n12ek_mmc_defconfig
> >          >     b/configs/at91sam9n12ek_mmc_defconfig
> >          >      > index 6b2cfe9c42..7b46eb498d 100644
> >          >      > --- a/configs/at91sam9n12ek_mmc_defconfig
> >          >      > +++ b/configs/at91sam9n12ek_mmc_defconfig
> >          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9N12EK=y
> >          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/at91sam9n12ek_nandflash_defconfig
> >          >     b/configs/at91sam9n12ek_nandflash_defconfig
> >          >      > index 354c24ff16..4e34a517fd 100644
> >          >      > --- a/configs/at91sam9n12ek_nandflash_defconfig
> >          >      > +++ b/configs/at91sam9n12ek_nandflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9N12EK=y
> >          >      > +CONFIG_PMECC_CAP=2
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/at91sam9n12ek_spiflash_defconfig
> >          >     b/configs/at91sam9n12ek_spiflash_defconfig
> >          >      > index 63889355bf..500c3ab088 100644
> >          >      > --- a/configs/at91sam9n12ek_spiflash_defconfig
> >          >      > +++ b/configs/at91sam9n12ek_spiflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9N12EK=y
> >          >      > +CONFIG_PMECC_CAP=2
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >
> >          >     Do we need to generate the PMECC header for SPI_BOOT
> >         configurations ?
> >          >     I would say this would be required only for NAND_BOOT
> >          >
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/at91sam9x5ek_dataflash_defconfig
> >          >     b/configs/at91sam9x5ek_dataflash_defconfig
> >          >      > index dc13509715..60d865cc23 100644
> >          >      > --- a/configs/at91sam9x5ek_dataflash_defconfig
> >          >      > +++ b/configs/at91sam9x5ek_dataflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >          >      > +CONFIG_PMECC_CAP=2
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/at91sam9x5ek_mmc_defconfig
> >          >     b/configs/at91sam9x5ek_mmc_defconfig
> >          >      > index ff86f93e61..75f7fbd199 100644
> >          >      > --- a/configs/at91sam9x5ek_mmc_defconfig
> >          >      > +++ b/configs/at91sam9x5ek_mmc_defconfig
> >          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/at91sam9x5ek_nandflash_defconfig
> >          >     b/configs/at91sam9x5ek_nandflash_defconfig
> >          >      > index b2b3ddb6d9..dd6bdee7f9 100644
> >          >      > --- a/configs/at91sam9x5ek_nandflash_defconfig
> >          >      > +++ b/configs/at91sam9x5ek_nandflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >          >      > +CONFIG_PMECC_CAP=2
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/at91sam9x5ek_spiflash_defconfig
> >          >     b/configs/at91sam9x5ek_spiflash_defconfig
> >          >      > index d0eebcdc75..8d8108888c 100644
> >          >      > --- a/configs/at91sam9x5ek_spiflash_defconfig
> >          >      > +++ b/configs/at91sam9x5ek_spiflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_AT91SAM9X5EK=y
> >          >      > +CONFIG_PMECC_CAP=2
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >
> >          >     Ditto.
> >          >
> >          >      >   CONFIG_SYS_MALLOC_F_LEN=0x2000
> >          >      >   CONFIG_DEBUG_UART_BOARD_INIT=y
> >          >      >   CONFIG_DEBUG_UART_BASE=0xfffff200
> >          >      > diff --git a/configs/sama5d3_xplained_mmc_defconfig
> >          >     b/configs/sama5d3_xplained_mmc_defconfig
> >          >      > index eab38ec366..51d5aeaf0e 100644
> >          >      > --- a/configs/sama5d3_xplained_mmc_defconfig
> >          >      > +++ b/configs/sama5d3_xplained_mmc_defconfig
> >          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> >          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d3_xplained_nandflash_defconfig
> >          >     b/configs/sama5d3_xplained_nandflash_defconfig
> >          >      > index ff7d2bffdd..ce1f28607e 100644
> >          >      > --- a/configs/sama5d3_xplained_nandflash_defconfig
> >          >      > +++ b/configs/sama5d3_xplained_nandflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D3_XPLAINED=y
> >          >      > +CONFIG_PMECC_CAP=4
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d3xek_mmc_defconfig
> >          >     b/configs/sama5d3xek_mmc_defconfig
> >          >      > index 6faea0ec3f..49d4334213 100644
> >          >      > --- a/configs/sama5d3xek_mmc_defconfig
> >          >      > +++ b/configs/sama5d3xek_mmc_defconfig
> >          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D3XEK=y
> >          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d3xek_nandflash_defconfig
> >          >     b/configs/sama5d3xek_nandflash_defconfig
> >          >      > index e641279ee1..b0d56e0e3e 100644
> >          >      > --- a/configs/sama5d3xek_nandflash_defconfig
> >          >      > +++ b/configs/sama5d3xek_nandflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D3XEK=y
> >          >      > +CONFIG_PMECC_CAP=4
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d3xek_spiflash_defconfig
> >          >     b/configs/sama5d3xek_spiflash_defconfig
> >          >      > index 37f603d528..cf2fb9e65b 100644
> >          >      > --- a/configs/sama5d3xek_spiflash_defconfig
> >          >      > +++ b/configs/sama5d3xek_spiflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D3XEK=y
> >          >      > +CONFIG_PMECC_CAP=4
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >
> >          >     Ditto
> >          >
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d4_xplained_mmc_defconfig
> >          >     b/configs/sama5d4_xplained_mmc_defconfig
> >          >      > index bfcea3f519..35b8302b60 100644
> >          >      > --- a/configs/sama5d4_xplained_mmc_defconfig
> >          >      > +++ b/configs/sama5d4_xplained_mmc_defconfig
> >          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> >          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d4_xplained_nandflash_defconfig
> >          >     b/configs/sama5d4_xplained_nandflash_defconfig
> >          >      > index 2c1b7f17c0..93714ed0c7 100644
> >          >      > --- a/configs/sama5d4_xplained_nandflash_defconfig
> >          >      > +++ b/configs/sama5d4_xplained_nandflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> >          >      > +CONFIG_PMECC_CAP=8
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d4_xplained_spiflash_defconfig
> >          >     b/configs/sama5d4_xplained_spiflash_defconfig
> >          >      > index a89dd11a8c..e1eb0c72cd 100644
> >          >      > --- a/configs/sama5d4_xplained_spiflash_defconfig
> >          >      > +++ b/configs/sama5d4_xplained_spiflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D4_XPLAINED=y
> >          >      > +CONFIG_PMECC_CAP=8
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >
> >          >     Ditto
> >          >
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d4ek_mmc_defconfig
> >          >     b/configs/sama5d4ek_mmc_defconfig
> >          >      > index 45e6539913..bd238f7f14 100644
> >          >      > --- a/configs/sama5d4ek_mmc_defconfig
> >          >      > +++ b/configs/sama5d4ek_mmc_defconfig
> >          >      > @@ -2,6 +2,7 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D4EK=y
> >          >      > +# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d4ek_nandflash_defconfig
> >          >     b/configs/sama5d4ek_nandflash_defconfig
> >          >      > index 1497110452..3816bfb273 100644
> >          >      > --- a/configs/sama5d4ek_nandflash_defconfig
> >          >      > +++ b/configs/sama5d4ek_nandflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D4EK=y
> >          >      > +CONFIG_PMECC_CAP=8
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/sama5d4ek_spiflash_defconfig
> >          >     b/configs/sama5d4ek_spiflash_defconfig
> >          >      > index dad32b5711..242081e6a1 100644
> >          >      > --- a/configs/sama5d4ek_spiflash_defconfig
> >          >      > +++ b/configs/sama5d4ek_spiflash_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x26f00000
> >          >      >   CONFIG_TARGET_SAMA5D4EK=y
> >          >      > +CONFIG_PMECC_CAP=8
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >
> >          >     Ditto
> >          >
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/wb45n_defconfig
> >         b/configs/wb45n_defconfig
> >          >      > index 9d881e5d41..15fc17ac00 100644
> >          >      > --- a/configs/wb45n_defconfig
> >          >      > +++ b/configs/wb45n_defconfig
> >          >      > @@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
> >          >      >   CONFIG_TARGET_WB45N=y
> >          >      > +CONFIG_PMECC_CAP=4
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/configs/wb50n_defconfig
> >         b/configs/wb50n_defconfig
> >          >      > index c74eba1012..a7e9a53448 100644
> >          >      > --- a/configs/wb50n_defconfig
> >          >      > +++ b/configs/wb50n_defconfig
> >          >      > @@ -2,6 +2,9 @@ CONFIG_ARM=y
> >          >      >   CONFIG_ARCH_AT91=y
> >          >      >   CONFIG_SYS_TEXT_BASE=0x23f00000
> >          >      >   CONFIG_TARGET_WB50N=y
> >          >      > +CONFIG_PMECC_CAP=8
> >          >      > +CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >   CONFIG_SPL_GPIO_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >          >      >   CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >          >      > diff --git a/doc/README.atmel_pmecc
> >         b/doc/README.atmel_pmecc
> >          >      > index 274d860f06..c86d085779 100644
> >          >      > --- a/doc/README.atmel_pmecc
> >          >      > +++ b/doc/README.atmel_pmecc
> >          >      > @@ -20,13 +20,12 @@ To use PMECC in this driver, the
> >         user needs
> >          >     to set:
> >          >      >       2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
> >          >      >          It only can be 512 or 1024.
> >          >      >
> >          >      > -Take AT91SAM9X5EK as an example, the board definition
> >         file likes:
> >          >      > +Take 'configs/at91sam9x5ek_nandflash_defconfig' as an
> >         example,
> >          >     the board
> >          >      > +configuration file has the following entries:
> >          >      >
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC              1
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
> >          >      > -#define CONFIG_PMECC_CAP             2
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      > +     CONFIG_PMECC_CAP=2
> >          >      > +     CONFIG_PMECC_SECTOR_SIZE=512
> >          >      > +     CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
> >          >      >
> >          >      >   How to enable PMECC header for direct programmable
> >         boot.bin
> >          >      > 
> >           -----------------------------------------------------------
> >          >      > @@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April
> >         2014) defines
> >          >     how this PMECC header has to
> >          >      >   look like. In order to do so we have a new image
> >         type added to
> >          >     mkimage to
> >          >      >   generate this PMECC header and integrated this into
> >         the build
> >          >     process of SPL.
> >          >      >
> >          >      > -To enable the generation of atmel PMECC header for
> >         SPL one need
> >          >     to define
> >          >      > +To enable the generation of atmel PMECC header for
> >         SPL one needs
> >          >     to define
> >          >      >   CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required
> >         parameters
> >          >     are taken from
> >          >      >   board configuration and compiled into the host tools
> >          >     atmel_pmecc_params. This
> >          >      >   tool will be called in build process to parametrize
> >         mkimage for
> >          >     atmelimage
> >          >      > diff --git a/drivers/mtd/nand/raw/Kconfig
> >          >     b/drivers/mtd/nand/raw/Kconfig
> >          >      > index 008f7b4b4b..b99732736a 100644
> >          >      > --- a/drivers/mtd/nand/raw/Kconfig
> >          >      > +++ b/drivers/mtd/nand/raw/Kconfig
> >          >      > @@ -16,6 +16,44 @@ config NAND_ATMEL
> >          >      >         Enable this driver for NAND flash platforms
> >         using an
> >          >     Atmel NAND
> >          >      >         controller.
> >          >      >
> >          >      > +if NAND_ATMEL
> >          >      > +
> >          >      > +config ATMEL_NAND_HWECC
> >          >      > +     bool "Atmel Hardware ECC"
> >          >      > +     default n
> >          >      > +
> >          >      > +config ATMEL_NAND_HW_PMECC
> >          >      > +     bool "Atmel Programmable Multibit ECC (PMECC)"
> >          >      > +     select ATMEL_NAND_HWECC
> >          >      > +     default n
> >          >      > +     help
> >          >      > +       The Programmable Multibit ECC (PMECC)
> >         controller is a
> >          >     programmable
> >          >      > +       binary BCH(Bose, Chaudhuri and Hocquenghem)
> >         encoder and
> >          >     decoder.
> >          >      > +
> >          >      > +config PMECC_CAP
> >          >      > +     int "PMECC Correctable ECC Bits"
> >          >      > +     depends on ATMEL_NAND_HW_PMECC
> >          >      > +     default 2
> >          >      > +     help
> >          >      > +       Correctable ECC bits, can be 2, 4, 8, 12, and 24.
> >          >      > +
> >          >      > +config PMECC_SECTOR_SIZE
> >          >      > +     int "PMECC Sector Size"
> >          >      > +     depends on ATMEL_NAND_HW_PMECC
> >          >      > +     default 512
> >          >      > +     help
> >          >      > +       Sector size, in bytes, can be 512 or 1024.
> >          >      > +
> >          >      > +config SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      > +     bool "Atmel PMECC Header Generation"
> >          >      > +     select ATMEL_NAND_HWECC
> >          >      > +     select ATMEL_NAND_HW_PMECC
> >          >      > +     default n
> >          >      > +     help
> >          >      > +       Generate Programmable Multibit ECC (PMECC)
> >         header for SPL
> >          >     image.
> >          >      > +
> >          >      > +endif
> >          >      > +
> >          >      >   config NAND_DAVINCI
> >          >      >       bool "Support TI Davinci NAND controller"
> >          >      >       help
> >          >      > diff --git a/include/configs/at91sam9n12ek.h
> >          >     b/include/configs/at91sam9n12ek.h
> >          >      > index 6cd267eee6..777a99b730 100644
> >          >      > --- a/include/configs/at91sam9n12ek.h
> >          >      > +++ b/include/configs/at91sam9n12ek.h
> >          >      > @@ -59,12 +59,6 @@
> >          >      >   #define CONFIG_SYS_NAND_READY_PIN   GPIO_PIN_PD(5)
> >          >      >   #endif
> >          >      >
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >          >      > -#define CONFIG_PMECC_CAP             2
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      > -
> >          >      >   #define CONFIG_EXTRA_ENV_SETTINGS
> >          >               \
> >          >      >       "console=console=ttyS0,115200\0"
> >          >          \
> >          >      >       "mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"
> >          >                  \
> >          >      > @@ -177,6 +171,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/include/configs/at91sam9x5ek.h
> >          >     b/include/configs/at91sam9x5ek.h
> >          >      > index 63305a7cdd..6adb965c3c 100644
> >          >      > --- a/include/configs/at91sam9x5ek.h
> >          >      > +++ b/include/configs/at91sam9x5ek.h
> >          >      > @@ -55,12 +55,6 @@
> >          >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
> >          >      >   #endif
> >          >      >
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC              1
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC   1
> >          >      > -#define CONFIG_PMECC_CAP             2
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      > -
> >          >      >   /* USB */
> >          >      >   #ifdef CONFIG_CMD_USB
> >          >      >   #ifndef CONFIG_USB_EHCI_HCD
> >          >      > @@ -151,6 +145,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/include/configs/sama5d3_xplained.h
> >          >     b/include/configs/sama5d3_xplained.h
> >          >      > index d0d8087ca3..8a9a19d38e 100644
> >          >      > --- a/include/configs/sama5d3_xplained.h
> >          >      > +++ b/include/configs/sama5d3_xplained.h
> >          >      > @@ -43,14 +43,8 @@
> >          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >          >      >   #endif
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >          >      > -#define CONFIG_PMECC_CAP             4
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      >
> >          >      >   /* USB */
> >          >      > -
> >          >      >   #ifdef CONFIG_CMD_USB
> >          >      >   #define CONFIG_USB_ATMEL
> >          >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> >          >      > @@ -88,6 +82,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/include/configs/sama5d3xek.h
> >          >     b/include/configs/sama5d3xek.h
> >          >      > index 4d3c3b8314..ca1c2b0861 100644
> >          >      > --- a/include/configs/sama5d3xek.h
> >          >      > +++ b/include/configs/sama5d3xek.h
> >          >      > @@ -62,14 +62,8 @@
> >          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >          >      >   #endif
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >          >      > -#define CONFIG_PMECC_CAP             4
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      >
> >          >      >   /* USB */
> >          >      > -
> >          >     Unrelated change ?
> >          >
> >          >      >   #ifdef CONFIG_CMD_USB
> >          >      >   #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
> >          >      >   #define CONFIG_USB_OHCI_NEW
> >          >      > @@ -109,6 +103,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE             64
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/include/configs/sama5d4_xplained.h
> >          >     b/include/configs/sama5d4_xplained.h
> >          >      > index 7f8ac178f3..bbb16993ec 100644
> >          >      > --- a/include/configs/sama5d4_xplained.h
> >          >      > +++ b/include/configs/sama5d4_xplained.h
> >          >      > @@ -37,9 +37,6 @@
> >          >      >   /* our CLE is AD22 */
> >          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >          >      >   #endif
> >          >      >
> >          >      >   /* SPL */
> >          >      > @@ -64,8 +61,6 @@
> >          >      >   #define CONFIG_SPL_NAND_DRIVERS
> >          >      >   #define CONFIG_SPL_NAND_BASE
> >          >      >   #endif
> >          >      > -#define CONFIG_PMECC_CAP             8
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> >          >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >          >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
> >          >      > @@ -73,6 +68,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/include/configs/sama5d4ek.h
> >          >     b/include/configs/sama5d4ek.h
> >          >      > index aa8573d8ba..d58041650c 100644
> >          >      > --- a/include/configs/sama5d4ek.h
> >          >      > +++ b/include/configs/sama5d4ek.h
> >          >      > @@ -37,9 +37,6 @@
> >          >      >   /* our CLE is AD22 */
> >          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >          >      >   #endif
> >          >      >
> >          >      >   /* SPL */
> >          >      > @@ -63,8 +60,6 @@
> >          >      >   #define CONFIG_SPL_NAND_DRIVERS
> >          >      >   #define CONFIG_SPL_NAND_BASE
> >          >      >   #endif
> >          >      > -#define CONFIG_PMECC_CAP             8
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE     512
> >          >      >   #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x40000
> >          >      >   #define CONFIG_SYS_NAND_5_ADDR_CYCLE
> >          >      >   #define CONFIG_SYS_NAND_PAGE_SIZE   0x1000
> >          >      > @@ -72,6 +67,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE             224
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x40000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS       0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/include/configs/wb45n.h
> >         b/include/configs/wb45n.h
> >          >      > index b516b66c35..add4019b31 100644
> >          >      > --- a/include/configs/wb45n.h
> >          >      > +++ b/include/configs/wb45n.h
> >          >      > @@ -48,12 +48,6 @@
> >          >      >   #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
> >          >      >   #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
> >          >      >
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC     1
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC  1
> >          >      > -#define CONFIG_PMECC_CAP            4
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
> >          >      > -
> >          >      >   #define CONFIG_RBTREE
> >          >      >   #define CONFIG_LZO
> >          >      >
> >          >      > @@ -141,6 +135,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif                              /* __CONFIG_H__ */
> >          >      > diff --git a/include/configs/wb50n.h
> >         b/include/configs/wb50n.h
> >          >      > index 40ca9d602b..2684b6c16c 100644
> >          >      > --- a/include/configs/wb50n.h
> >          >      > +++ b/include/configs/wb50n.h
> >          >      > @@ -57,11 +57,6 @@
> >          >      >   /* our CLE is AD22 */
> >          >      >   #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
> >          >      >   #define CONFIG_SYS_NAND_ONFI_DETECTION
> >          >      > -/* PMECC & PMERRLOC */
> >          >      > -#define CONFIG_ATMEL_NAND_HWECC
> >          >      > -#define CONFIG_ATMEL_NAND_HW_PMECC
> >          >      > -#define CONFIG_PMECC_CAP            8
> >          >      > -#define CONFIG_PMECC_SECTOR_SIZE    512
> >          >      >
> >          >      >   /* Ethernet Hardware */
> >          >      >   #define CONFIG_MACB
> >          >      > @@ -118,6 +113,5 @@
> >          >      >   #define CONFIG_SYS_NAND_OOBSIZE     64
> >          >      >   #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
> >          >      >   #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
> >          >      > -#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >
> >          >      >   #endif
> >          >      > diff --git a/scripts/config_whitelist.txt
> >          >     b/scripts/config_whitelist.txt
> >          >      > index b8addeaf69..f798c6542a 100644
> >          >      > --- a/scripts/config_whitelist.txt
> >          >      > +++ b/scripts/config_whitelist.txt
> >          >      > @@ -97,8 +97,6 @@ CONFIG_ATMEL_LCD_BGR555
> >          >      >   CONFIG_ATMEL_LCD_RGB565
> >          >      >   CONFIG_ATMEL_LEGACY
> >          >      >   CONFIG_ATMEL_MCI_8BIT
> >          >      > -CONFIG_ATMEL_NAND_HWECC
> >          >      > -CONFIG_ATMEL_NAND_HW_PMECC
> >          >      >   CONFIG_ATMEL_SPI0
> >          >      >   CONFIG_AT_TRANS
> >          >      >   CONFIG_AUTO_ZRELADDR
> >          >      > @@ -1509,8 +1507,6 @@ CONFIG_PLATINUM_PROJECT
> >          >      >   CONFIG_PM
> >          >      >   CONFIG_PMC_BR_PRELIM
> >          >      >   CONFIG_PMC_OR_PRELIM
> >          >      > -CONFIG_PMECC_CAP
> >          >      > -CONFIG_PMECC_SECTOR_SIZE
> >          >      >   CONFIG_PME_PLAT_CLK_DIV
> >          >      >   CONFIG_PMU
> >          >      >   CONFIG_PMW_BASE
> >          >      > @@ -1875,7 +1871,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
> >          >      >   CONFIG_SPL_FS_LOAD_KERNEL_NAME
> >          >      >   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
> >          >      >   CONFIG_SPL_GD_ADDR
> >          >      > -CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >          >      >   CONFIG_SPL_INIT_MINIMAL
> >          >      >   CONFIG_SPL_JR0_LIODN_NS
> >          >      >   CONFIG_SPL_JR0_LIODN_S
> >          >      >
> >          >
> > 

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion
  2018-12-15  7:36               ` [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
  2018-12-28  0:04                 ` Derald Woods
  2019-01-07  9:40                 ` Eugen.Hristev at microchip.com
@ 2019-01-19 20:02                 ` Derald D. Woods
  2019-01-19 20:02                   ` [U-Boot] [PATCH 1/2] nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC Derald D. Woods
                                     ` (3 more replies)
  2019-01-21 16:58                 ` [U-Boot] " Tom Rini
  3 siblings, 4 replies; 32+ messages in thread
From: Derald D. Woods @ 2019-01-19 20:02 UTC (permalink / raw)
  To: u-boot

This series converts to SPL_GENERATE_ATMEL_PMECC_HEADER Kconfig. The
focus is Kconfig conversion and clean build for the affected boards.

Derald D. Woods (2):
  nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC
  ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig

 configs/at91sam9n12ek_mmc_defconfig          |  1 +
 configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
 configs/at91sam9n12ek_spiflash_defconfig     |  1 +
 configs/at91sam9x5ek_dataflash_defconfig     |  1 +
 configs/at91sam9x5ek_mmc_defconfig           |  1 +
 configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
 configs/at91sam9x5ek_spiflash_defconfig      |  1 +
 configs/sama5d3_xplained_mmc_defconfig       |  1 +
 configs/sama5d3_xplained_nandflash_defconfig |  3 ++
 configs/sama5d3xek_mmc_defconfig             |  1 +
 configs/sama5d3xek_nandflash_defconfig       |  3 ++
 configs/sama5d3xek_spiflash_defconfig        |  1 +
 configs/sama5d4_xplained_mmc_defconfig       |  1 +
 configs/sama5d4_xplained_nandflash_defconfig |  3 ++
 configs/sama5d4_xplained_spiflash_defconfig  |  1 +
 configs/sama5d4ek_mmc_defconfig              |  1 +
 configs/sama5d4ek_nandflash_defconfig        |  3 ++
 configs/sama5d4ek_spiflash_defconfig         |  1 +
 configs/wb45n_defconfig                      |  3 ++
 configs/wb50n_defconfig                      |  3 ++
 doc/README.atmel_pmecc                       | 13 +++----
 drivers/mtd/nand/raw/Kconfig                 | 39 ++++++++++++++++++++
 drivers/mtd/nand/raw/atmel_nand.c            | 19 +++++-----
 include/configs/at91sam9n12ek.h              |  7 ----
 include/configs/at91sam9x5ek.h               |  7 ----
 include/configs/sama5d3_xplained.h           |  7 ----
 include/configs/sama5d3xek.h                 |  7 ----
 include/configs/sama5d4_xplained.h           |  6 ---
 include/configs/sama5d4ek.h                  |  6 ---
 include/configs/snapper9g45.h                |  1 -
 include/configs/wb45n.h                      |  7 ----
 include/configs/wb50n.h                      |  6 ---
 scripts/config_whitelist.txt                 |  6 ---
 33 files changed, 91 insertions(+), 76 deletions(-)

-- 
2.20.1

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH 1/2] nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC
  2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
@ 2019-01-19 20:02                   ` Derald D. Woods
  2019-01-19 20:02                   ` [U-Boot] [PATCH 2/2] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
                                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 32+ messages in thread
From: Derald D. Woods @ 2019-01-19 20:02 UTC (permalink / raw)
  To: u-boot

This commit removes remaining uses of SYS_NAND_ECC_BASE. Including
"<asm/arch/hardware.h>" in "drivers/mtd/nand/raw/atmel_nand.c" provides
access to ATMEL_BASE_ECC.

Cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
---
 drivers/mtd/nand/raw/atmel_nand.c | 19 ++++++++++---------
 include/configs/snapper9g45.h     |  1 -
 scripts/config_whitelist.txt      |  1 -
 3 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/drivers/mtd/nand/raw/atmel_nand.c b/drivers/mtd/nand/raw/atmel_nand.c
index 31ad2cfa88..0563472b9d 100644
--- a/drivers/mtd/nand/raw/atmel_nand.c
+++ b/drivers/mtd/nand/raw/atmel_nand.c
@@ -13,6 +13,7 @@
 #include <common.h>
 #include <asm/gpio.h>
 #include <asm/arch/gpio.h>
+#include <asm/arch/hardware.h>
 
 #include <malloc.h>
 #include <nand.h>
@@ -995,13 +996,13 @@ static int atmel_nand_calculate(struct mtd_info *mtd,
 	unsigned int ecc_value;
 
 	/* get the first 2 ECC bytes */
-	ecc_value = ecc_readl(CONFIG_SYS_NAND_ECC_BASE, PR);
+	ecc_value = ecc_readl(ATMEL_BASE_ECC, PR);
 
 	ecc_code[0] = ecc_value & 0xFF;
 	ecc_code[1] = (ecc_value >> 8) & 0xFF;
 
 	/* get the last 2 ECC bytes */
-	ecc_value = ecc_readl(CONFIG_SYS_NAND_ECC_BASE, NPR) & ATMEL_ECC_NPARITY;
+	ecc_value = ecc_readl(ATMEL_BASE_ECC, NPR) & ATMEL_ECC_NPARITY;
 
 	ecc_code[2] = ecc_value & 0xFF;
 	ecc_code[3] = (ecc_value >> 8) & 0xFF;
@@ -1084,16 +1085,16 @@ static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat,
 	unsigned int ecc_word, ecc_bit;
 
 	/* get the status from the Status Register */
-	ecc_status = ecc_readl(CONFIG_SYS_NAND_ECC_BASE, SR);
+	ecc_status = ecc_readl(ATMEL_BASE_ECC, SR);
 
 	/* if there's no error */
 	if (likely(!(ecc_status & ATMEL_ECC_RECERR)))
 		return 0;
 
 	/* get error bit offset (4 bits) */
-	ecc_bit = ecc_readl(CONFIG_SYS_NAND_ECC_BASE, PR) & ATMEL_ECC_BITADDR;
+	ecc_bit = ecc_readl(ATMEL_BASE_ECC, PR) & ATMEL_ECC_BITADDR;
 	/* get word address (12 bits) */
-	ecc_word = ecc_readl(CONFIG_SYS_NAND_ECC_BASE, PR) & ATMEL_ECC_WORDADDR;
+	ecc_word = ecc_readl(ATMEL_BASE_ECC, PR) & ATMEL_ECC_WORDADDR;
 	ecc_word >>= 4;
 
 	/* if there are multiple errors */
@@ -1164,22 +1165,22 @@ int atmel_hwecc_nand_init_param(struct nand_chip *nand, struct mtd_info *mtd)
 		switch (mtd->writesize) {
 		case 512:
 			nand->ecc.layout = &atmel_oobinfo_small;
-			ecc_writel(CONFIG_SYS_NAND_ECC_BASE, MR,
+			ecc_writel(ATMEL_BASE_ECC, MR,
 					ATMEL_ECC_PAGESIZE_528);
 			break;
 		case 1024:
 			nand->ecc.layout = &atmel_oobinfo_large;
-			ecc_writel(CONFIG_SYS_NAND_ECC_BASE, MR,
+			ecc_writel(ATMEL_BASE_ECC, MR,
 					ATMEL_ECC_PAGESIZE_1056);
 			break;
 		case 2048:
 			nand->ecc.layout = &atmel_oobinfo_large;
-			ecc_writel(CONFIG_SYS_NAND_ECC_BASE, MR,
+			ecc_writel(ATMEL_BASE_ECC, MR,
 					ATMEL_ECC_PAGESIZE_2112);
 			break;
 		case 4096:
 			nand->ecc.layout = &atmel_oobinfo_large;
-			ecc_writel(CONFIG_SYS_NAND_ECC_BASE, MR,
+			ecc_writel(ATMEL_BASE_ECC, MR,
 					ATMEL_ECC_PAGESIZE_4224);
 			break;
 		default:
diff --git a/include/configs/snapper9g45.h b/include/configs/snapper9g45.h
index f2c47dabc5..4b384641d1 100644
--- a/include/configs/snapper9g45.h
+++ b/include/configs/snapper9g45.h
@@ -36,7 +36,6 @@
 
 /* NAND Flash */
 #define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_SYS_NAND_ECC_BASE	ATMEL_BASE_ECC
 #define CONFIG_SYS_MAX_NAND_DEVICE	1
 #define CONFIG_SYS_NAND_BASE		ATMEL_BASE_CS3
 #define CONFIG_SYS_NAND_DBW_8
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index e2c2889acf..6fee575a43 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -3543,7 +3543,6 @@ CONFIG_SYS_NAND_ECCPOS
 CONFIG_SYS_NAND_ECCSIZE
 CONFIG_SYS_NAND_ECCSTEPS
 CONFIG_SYS_NAND_ECCTOTAL
-CONFIG_SYS_NAND_ECC_BASE
 CONFIG_SYS_NAND_ENABLE_PIN
 CONFIG_SYS_NAND_ENABLE_PIN_SPL
 CONFIG_SYS_NAND_FTIM0
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH 2/2] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
  2019-01-19 20:02                   ` [U-Boot] [PATCH 1/2] nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC Derald D. Woods
@ 2019-01-19 20:02                   ` Derald D. Woods
  2019-01-19 23:29                   ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Tom Rini
  2019-01-20  3:37                   ` [U-Boot] [PATCH v2 0/1] " Derald D. Woods
  3 siblings, 0 replies; 32+ messages in thread
From: Derald D. Woods @ 2019-01-19 20:02 UTC (permalink / raw)
  To: u-boot

This commit converts the following items to Kconfig:

CONFIG_ATMEL_NAND_HWECC
CONFIG_ATMEL_NAND_HW_PMECC
CONFIG_PMECC_CAP
CONFIG_PMECC_SECTOR_SIZE
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

Config files not explicitly containing the name *nandflash* will have
PMECC disabled. PMECC support requires that a header be applied to
"boot.bin". The generated PMECC "boot.bin" is intended for NAND media.

[PMECC References]
https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap

[Mailing List Thread]
https://lists.denx.de/pipermail/u-boot/2018-December/350666.html

Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
Reported-by: Daniel Evans <photonthunder@gmail.com>
Cc: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
---
v2:
- Make ATMEL_NAND_HW_PMECC dependent on ATMEL_NAND_HWECC
- Make SPL_GENERATE_ATMEL_PMECC_HEADER dependent on NAND_BOOT
- Remove PMECC from non-NAND_BOOT configs

---
 configs/at91sam9n12ek_mmc_defconfig          |  1 +
 configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
 configs/at91sam9n12ek_spiflash_defconfig     |  1 +
 configs/at91sam9x5ek_dataflash_defconfig     |  1 +
 configs/at91sam9x5ek_mmc_defconfig           |  1 +
 configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
 configs/at91sam9x5ek_spiflash_defconfig      |  1 +
 configs/sama5d3_xplained_mmc_defconfig       |  1 +
 configs/sama5d3_xplained_nandflash_defconfig |  3 ++
 configs/sama5d3xek_mmc_defconfig             |  1 +
 configs/sama5d3xek_nandflash_defconfig       |  3 ++
 configs/sama5d3xek_spiflash_defconfig        |  1 +
 configs/sama5d4_xplained_mmc_defconfig       |  1 +
 configs/sama5d4_xplained_nandflash_defconfig |  3 ++
 configs/sama5d4_xplained_spiflash_defconfig  |  1 +
 configs/sama5d4ek_mmc_defconfig              |  1 +
 configs/sama5d4ek_nandflash_defconfig        |  3 ++
 configs/sama5d4ek_spiflash_defconfig         |  1 +
 configs/wb45n_defconfig                      |  3 ++
 configs/wb50n_defconfig                      |  3 ++
 doc/README.atmel_pmecc                       | 13 +++----
 drivers/mtd/nand/raw/Kconfig                 | 39 ++++++++++++++++++++
 include/configs/at91sam9n12ek.h              |  7 ----
 include/configs/at91sam9x5ek.h               |  7 ----
 include/configs/sama5d3_xplained.h           |  7 ----
 include/configs/sama5d3xek.h                 |  7 ----
 include/configs/sama5d4_xplained.h           |  6 ---
 include/configs/sama5d4ek.h                  |  6 ---
 include/configs/wb45n.h                      |  7 ----
 include/configs/wb50n.h                      |  6 ---
 scripts/config_whitelist.txt                 |  5 ---
 31 files changed, 81 insertions(+), 65 deletions(-)

diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
index 6b2cfe9c42..7b46eb498d 100644
--- a/configs/at91sam9n12ek_mmc_defconfig
+++ b/configs/at91sam9n12ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
index 354c24ff16..4e34a517fd 100644
--- a/configs/at91sam9n12ek_nandflash_defconfig
+++ b/configs/at91sam9n12ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
index 63889355bf..7ba1d167e7 100644
--- a/configs/at91sam9n12ek_spiflash_defconfig
+++ b/configs/at91sam9n12ek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
index dc13509715..1aa6ce7185 100644
--- a/configs/at91sam9x5ek_dataflash_defconfig
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index ff86f93e61..75f7fbd199 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
index b2b3ddb6d9..dd6bdee7f9 100644
--- a/configs/at91sam9x5ek_nandflash_defconfig
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
index d0eebcdc75..94b813fe2c 100644
--- a/configs/at91sam9x5ek_spiflash_defconfig
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
index eab38ec366..51d5aeaf0e 100644
--- a/configs/sama5d3_xplained_mmc_defconfig
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
index ff7d2bffdd..ce1f28607e 100644
--- a/configs/sama5d3_xplained_nandflash_defconfig
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3_XPLAINED=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
index 6faea0ec3f..49d4334213 100644
--- a/configs/sama5d3xek_mmc_defconfig
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
index e641279ee1..b0d56e0e3e 100644
--- a/configs/sama5d3xek_nandflash_defconfig
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index 37f603d528..b0f07fd72d 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index bfcea3f519..35b8302b60 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 2c1b7f17c0..93714ed0c7 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index a89dd11a8c..325817f14e 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
index 45e6539913..bd238f7f14 100644
--- a/configs/sama5d4ek_mmc_defconfig
+++ b/configs/sama5d4ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
index 1497110452..3816bfb273 100644
--- a/configs/sama5d4ek_nandflash_defconfig
+++ b/configs/sama5d4ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index dad32b5711..888552a265 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
index 9d881e5d41..15fc17ac00 100644
--- a/configs/wb45n_defconfig
+++ b/configs/wb45n_defconfig
@@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x23f00000
 CONFIG_TARGET_WB45N=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
index c74eba1012..a7e9a53448 100644
--- a/configs/wb50n_defconfig
+++ b/configs/wb50n_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x23f00000
 CONFIG_TARGET_WB50N=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
index 274d860f06..c86d085779 100644
--- a/doc/README.atmel_pmecc
+++ b/doc/README.atmel_pmecc
@@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs to set:
 	2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
 	   It only can be 512 or 1024.
 
-Take AT91SAM9X5EK as an example, the board definition file likes:
+Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example, the board
+configuration file has the following entries:
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC		1
-#define CONFIG_ATMEL_NAND_HW_PMECC	1
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
+	CONFIG_PMECC_CAP=2
+	CONFIG_PMECC_SECTOR_SIZE=512
+	CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 
 How to enable PMECC header for direct programmable boot.bin
 -----------------------------------------------------------
@@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines how this PMECC header has to
 look like. In order to do so we have a new image type added to mkimage to
 generate this PMECC header and integrated this into the build process of SPL.
 
-To enable the generation of atmel PMECC header for SPL one need to define
+To enable the generation of atmel PMECC header for SPL one needs to define
 CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are taken from
 board configuration and compiled into the host tools atmel_pmecc_params. This
 tool will be called in build process to parametrize mkimage for atmelimage
diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index ffc6cc98aa..b55c5d2b28 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -18,10 +18,49 @@ config SYS_NAND_DRIVER_ECC_LAYOUT
 config NAND_ATMEL
 	bool "Support Atmel NAND controller"
 	imply SYS_NAND_USE_FLASH_BBT
+	select SYS_NAND_DRIVER_ECC_LAYOUT
 	help
 	  Enable this driver for NAND flash platforms using an Atmel NAND
 	  controller.
 
+if NAND_ATMEL
+
+config ATMEL_NAND_HWECC
+	bool "Atmel Hardware ECC"
+	default n
+
+config ATMEL_NAND_HW_PMECC
+	bool "Atmel Programmable Multibit ECC (PMECC)"
+	depends on NAND_BOOT
+	select ATMEL_NAND_HWECC
+	default n
+	help
+	  The Programmable Multibit ECC (PMECC) controller is a programmable
+	  binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
+
+config PMECC_CAP
+	int "PMECC Correctable ECC Bits"
+	depends on ATMEL_NAND_HW_PMECC
+	default 2
+	help
+	  Correctable ECC bits, can be 2, 4, 8, 12, and 24.
+
+config PMECC_SECTOR_SIZE
+	int "PMECC Sector Size"
+	depends on ATMEL_NAND_HW_PMECC
+	default 512
+	help
+	  Sector size, in bytes, can be 512 or 1024.
+
+config SPL_GENERATE_ATMEL_PMECC_HEADER
+	bool "Atmel PMECC Header Generation"
+	select ATMEL_NAND_HW_PMECC
+	default y
+	help
+	  Generate Programmable Multibit ECC (PMECC) header for SPL image.
+
+endif
+
 config NAND_DAVINCI
 	bool "Support TI Davinci NAND controller"
 	help
diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h
index 6cd267eee6..777a99b730 100644
--- a/include/configs/at91sam9n12ek.h
+++ b/include/configs/at91sam9n12ek.h
@@ -59,12 +59,6 @@
 #define CONFIG_SYS_NAND_READY_PIN	GPIO_PIN_PD(5)
 #endif
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
-
 #define CONFIG_EXTRA_ENV_SETTINGS                                       \
 	"console=console=ttyS0,115200\0"                                \
 	"mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"					\
@@ -177,6 +171,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/at91sam9x5ek.h b/include/configs/at91sam9x5ek.h
index 63305a7cdd..6adb965c3c 100644
--- a/include/configs/at91sam9x5ek.h
+++ b/include/configs/at91sam9x5ek.h
@@ -55,12 +55,6 @@
 #define CONFIG_SYS_NAND_READY_PIN	AT91_PIN_PD5
 #endif
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC		1
-#define CONFIG_ATMEL_NAND_HW_PMECC	1
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
-
 /* USB */
 #ifdef CONFIG_CMD_USB
 #ifndef CONFIG_USB_EHCI_HCD
@@ -151,6 +145,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
index d0d8087ca3..8a9a19d38e 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -43,14 +43,8 @@
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 #endif
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		4
-#define CONFIG_PMECC_SECTOR_SIZE	512
 
 /* USB */
-
 #ifdef CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL
 #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
@@ -88,6 +82,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
index 4d3c3b8314..ca1c2b0861 100644
--- a/include/configs/sama5d3xek.h
+++ b/include/configs/sama5d3xek.h
@@ -62,14 +62,8 @@
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 #endif
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		4
-#define CONFIG_PMECC_SECTOR_SIZE	512
 
 /* USB */
-
 #ifdef CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
 #define CONFIG_USB_OHCI_NEW
@@ -109,6 +103,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h
index 7f8ac178f3..bbb16993ec 100644
--- a/include/configs/sama5d4_xplained.h
+++ b/include/configs/sama5d4_xplained.h
@@ -37,9 +37,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
 /* SPL */
@@ -64,8 +61,6 @@
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
 #endif
-#define CONFIG_PMECC_CAP		8
-#define CONFIG_PMECC_SECTOR_SIZE	512
 #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
@@ -73,6 +68,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		224
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
index aa8573d8ba..d58041650c 100644
--- a/include/configs/sama5d4ek.h
+++ b/include/configs/sama5d4ek.h
@@ -37,9 +37,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
 /* SPL */
@@ -63,8 +60,6 @@
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
 #endif
-#define CONFIG_PMECC_CAP		8
-#define CONFIG_PMECC_SECTOR_SIZE	512
 #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
@@ -72,6 +67,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		224
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
index b516b66c35..add4019b31 100644
--- a/include/configs/wb45n.h
+++ b/include/configs/wb45n.h
@@ -48,12 +48,6 @@
 #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
 #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC     1
-#define CONFIG_ATMEL_NAND_HW_PMECC  1
-#define CONFIG_PMECC_CAP            4
-#define CONFIG_PMECC_SECTOR_SIZE    512
-
 #define CONFIG_RBTREE
 #define CONFIG_LZO
 
@@ -141,6 +135,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE     64
 #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif				/* __CONFIG_H__ */
diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
index 40ca9d602b..2684b6c16c 100644
--- a/include/configs/wb50n.h
+++ b/include/configs/wb50n.h
@@ -57,11 +57,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP            8
-#define CONFIG_PMECC_SECTOR_SIZE    512
 
 /* Ethernet Hardware */
 #define CONFIG_MACB
@@ -118,6 +113,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE     64
 #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 6fee575a43..38c153f829 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -96,8 +96,6 @@ CONFIG_ATMEL_LCD_BGR555
 CONFIG_ATMEL_LCD_RGB565
 CONFIG_ATMEL_LEGACY
 CONFIG_ATMEL_MCI_8BIT
-CONFIG_ATMEL_NAND_HWECC
-CONFIG_ATMEL_NAND_HW_PMECC
 CONFIG_ATMEL_SPI0
 CONFIG_AT_TRANS
 CONFIG_AUTO_ZRELADDR
@@ -1502,8 +1500,6 @@ CONFIG_PLATINUM_PROJECT
 CONFIG_PM
 CONFIG_PMC_BR_PRELIM
 CONFIG_PMC_OR_PRELIM
-CONFIG_PMECC_CAP
-CONFIG_PMECC_SECTOR_SIZE
 CONFIG_PME_PLAT_CLK_DIV
 CONFIG_PMU
 CONFIG_PMW_BASE
@@ -1868,7 +1864,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
 CONFIG_SPL_FS_LOAD_KERNEL_NAME
 CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
 CONFIG_SPL_GD_ADDR
-CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 CONFIG_SPL_INIT_MINIMAL
 CONFIG_SPL_JR0_LIODN_NS
 CONFIG_SPL_JR0_LIODN_S
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion
  2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
  2019-01-19 20:02                   ` [U-Boot] [PATCH 1/2] nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC Derald D. Woods
  2019-01-19 20:02                   ` [U-Boot] [PATCH 2/2] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
@ 2019-01-19 23:29                   ` Tom Rini
  2019-01-20  0:50                     ` Derald Woods
  2019-01-20  3:37                   ` [U-Boot] [PATCH v2 0/1] " Derald D. Woods
  3 siblings, 1 reply; 32+ messages in thread
From: Tom Rini @ 2019-01-19 23:29 UTC (permalink / raw)
  To: u-boot

On Sat, Jan 19, 2019 at 02:02:29PM -0600, Derald D. Woods wrote:

> This series converts to SPL_GENERATE_ATMEL_PMECC_HEADER Kconfig. The
> focus is Kconfig conversion and clean build for the affected boards.
> 
> Derald D. Woods (2):
>   nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC
>   ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig

This series causes a ton of problems now on:
pm9g45 at91sam9261ek_dataflash_cs3 at91sam9261ek_dataflash_cs0
at91sam9xeek_dataflash_cs1 at91sam9260ek_dataflash_cs0
at91sam9260ek_dataflash_cs1 at91sam9260ek_nandflash
at91sam9263ek_dataflash_cs0 ethernut5 sama5d2_ptc_ek_mmc
at91sam9g20ek_dataflash_cs1 at91sam9g20ek_dataflash_cs0
sama5d2_ptc_ek_nandflash at91sam9xeek_nandflash
at91sam9m10g45ek_nandflash snapper9g20 at91sam9rlek_mmc
at91sam9xeek_dataflash_cs0 at91sam9g10ek_nandflash
at91sam9g10ek_dataflash_cs3 at91sam9g10ek_dataflash_cs0
at91sam9g20ek_2mmc_nandflash at91sam9263ek_norflash_boot
at91sam9g20ek_nandflash snapper9260 at91sam9g20ek_2mmc
at91sam9263ek_norflash at91sam9261ek_nandflash meesc pm9261 pm9263
at91sam9m10g45ek_mmc gurnard usb_a9263_dataflash at91sam9rlek_nandflash
at91sam9263ek_dataflash at91sam9263ek_nandflash at91sam9rlek_dataflash

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190119/36862b7d/attachment.sig>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion
  2019-01-19 23:29                   ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Tom Rini
@ 2019-01-20  0:50                     ` Derald Woods
  0 siblings, 0 replies; 32+ messages in thread
From: Derald Woods @ 2019-01-20  0:50 UTC (permalink / raw)
  To: u-boot

On Sat, Jan 19, 2019, 5:29 PM Tom Rini <trini@konsulko.com wrote:

> On Sat, Jan 19, 2019 at 02:02:29PM -0600, Derald D. Woods wrote:
>
> > This series converts to SPL_GENERATE_ATMEL_PMECC_HEADER Kconfig. The
> > focus is Kconfig conversion and clean build for the affected boards.
> >
> > Derald D. Woods (2):
> >   nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC
> >   ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
>
> This series causes a ton of problems now on:
> pm9g45 at91sam9261ek_dataflash_cs3 at91sam9261ek_dataflash_cs0
> at91sam9xeek_dataflash_cs1 at91sam9260ek_dataflash_cs0
> at91sam9260ek_dataflash_cs1 at91sam9260ek_nandflash
> at91sam9263ek_dataflash_cs0 ethernut5 sama5d2_ptc_ek_mmc
> at91sam9g20ek_dataflash_cs1 at91sam9g20ek_dataflash_cs0
> sama5d2_ptc_ek_nandflash at91sam9xeek_nandflash
> at91sam9m10g45ek_nandflash snapper9g20 at91sam9rlek_mmc
> at91sam9xeek_dataflash_cs0 at91sam9g10ek_nandflash
> at91sam9g10ek_dataflash_cs3 at91sam9g10ek_dataflash_cs0
> at91sam9g20ek_2mmc_nandflash at91sam9263ek_norflash_boot
> at91sam9g20ek_nandflash snapper9260 at91sam9g20ek_2mmc
> at91sam9263ek_norflash at91sam9261ek_nandflash meesc pm9261 pm9263
> at91sam9m10g45ek_mmc gurnard usb_a9263_dataflash at91sam9rlek_nandflash
> at91sam9263ek_dataflash at91sam9263ek_nandflash at91sam9rlek_dataflash
>


OK.  So this is likely due to patch 0001 only. I will drop it. And try a
few of these configs.

Derald



> --
> Tom
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH v2 0/1] ARM: at91: NAND PMECC Kconfig conversion
  2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
                                     ` (2 preceding siblings ...)
  2019-01-19 23:29                   ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Tom Rini
@ 2019-01-20  3:37                   ` Derald D. Woods
  2019-01-20  3:37                     ` [U-Boot] [PATCH v3 1/1] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
  3 siblings, 1 reply; 32+ messages in thread
From: Derald D. Woods @ 2019-01-20  3:37 UTC (permalink / raw)
  To: u-boot

This series converts to SPL_GENERATE_ATMEL_PMECC_HEADER Kconfig. The
focus is Kconfig conversion and clean build for the affected boards.

Derald D. Woods (1):
  ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig

 configs/at91sam9n12ek_mmc_defconfig          |  1 +
 configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
 configs/at91sam9n12ek_spiflash_defconfig     |  1 +
 configs/at91sam9x5ek_dataflash_defconfig     |  1 +
 configs/at91sam9x5ek_mmc_defconfig           |  1 +
 configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
 configs/at91sam9x5ek_spiflash_defconfig      |  1 +
 configs/sama5d2_ptc_ek_mmc_defconfig         |  1 +
 configs/sama5d2_ptc_ek_nandflash_defconfig   |  1 +
 configs/sama5d3_xplained_mmc_defconfig       |  1 +
 configs/sama5d3_xplained_nandflash_defconfig |  3 ++
 configs/sama5d3xek_mmc_defconfig             |  1 +
 configs/sama5d3xek_nandflash_defconfig       |  3 ++
 configs/sama5d3xek_spiflash_defconfig        |  1 +
 configs/sama5d4_xplained_mmc_defconfig       |  1 +
 configs/sama5d4_xplained_nandflash_defconfig |  3 ++
 configs/sama5d4_xplained_spiflash_defconfig  |  1 +
 configs/sama5d4ek_mmc_defconfig              |  1 +
 configs/sama5d4ek_nandflash_defconfig        |  3 ++
 configs/sama5d4ek_spiflash_defconfig         |  1 +
 configs/wb45n_defconfig                      |  3 ++
 configs/wb50n_defconfig                      |  3 ++
 doc/README.atmel_pmecc                       | 13 +++----
 drivers/mtd/nand/raw/Kconfig                 | 39 ++++++++++++++++++++
 include/configs/at91sam9n12ek.h              |  7 ----
 include/configs/at91sam9x5ek.h               |  7 ----
 include/configs/sama5d2_ptc_ek.h             | 15 ++++++--
 include/configs/sama5d3_xplained.h           |  7 ----
 include/configs/sama5d3xek.h                 |  7 ----
 include/configs/sama5d4_xplained.h           |  6 ---
 include/configs/sama5d4ek.h                  |  6 ---
 include/configs/wb45n.h                      |  7 ----
 include/configs/wb50n.h                      |  6 ---
 scripts/config_whitelist.txt                 |  5 ---
 34 files changed, 95 insertions(+), 68 deletions(-)

---
v2:
- Dropped SYS_NAND_ECC_BASE patch due to multiple config failures
- Added sama5d2_ptc_ek board which also defines ATMEL_NAND_HW_PMECC

-- 
2.20.1

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH v3 1/1] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-20  3:37                   ` [U-Boot] [PATCH v2 0/1] " Derald D. Woods
@ 2019-01-20  3:37                     ` Derald D. Woods
  2019-01-20 12:57                       ` Tom Rini
  0 siblings, 1 reply; 32+ messages in thread
From: Derald D. Woods @ 2019-01-20  3:37 UTC (permalink / raw)
  To: u-boot

This commit converts the following items to Kconfig:

CONFIG_ATMEL_NAND_HWECC
CONFIG_ATMEL_NAND_HW_PMECC
CONFIG_PMECC_CAP
CONFIG_PMECC_SECTOR_SIZE
CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER

Config files not explicitly containing the name *nandflash* will have
PMECC disabled. PMECC support requires that a header be applied to
"boot.bin". The generated PMECC "boot.bin" is intended for NAND media.

[PMECC References]
https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap

[Mailing List Thread]
https://lists.denx.de/pipermail/u-boot/2018-December/350666.html

Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
Reported-by: Daniel Evans <photonthunder@gmail.com>
Cc: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
---
 configs/at91sam9n12ek_mmc_defconfig          |  1 +
 configs/at91sam9n12ek_nandflash_defconfig    |  3 ++
 configs/at91sam9n12ek_spiflash_defconfig     |  1 +
 configs/at91sam9x5ek_dataflash_defconfig     |  1 +
 configs/at91sam9x5ek_mmc_defconfig           |  1 +
 configs/at91sam9x5ek_nandflash_defconfig     |  3 ++
 configs/at91sam9x5ek_spiflash_defconfig      |  1 +
 configs/sama5d2_ptc_ek_mmc_defconfig         |  1 +
 configs/sama5d2_ptc_ek_nandflash_defconfig   |  1 +
 configs/sama5d3_xplained_mmc_defconfig       |  1 +
 configs/sama5d3_xplained_nandflash_defconfig |  3 ++
 configs/sama5d3xek_mmc_defconfig             |  1 +
 configs/sama5d3xek_nandflash_defconfig       |  3 ++
 configs/sama5d3xek_spiflash_defconfig        |  1 +
 configs/sama5d4_xplained_mmc_defconfig       |  1 +
 configs/sama5d4_xplained_nandflash_defconfig |  3 ++
 configs/sama5d4_xplained_spiflash_defconfig  |  1 +
 configs/sama5d4ek_mmc_defconfig              |  1 +
 configs/sama5d4ek_nandflash_defconfig        |  3 ++
 configs/sama5d4ek_spiflash_defconfig         |  1 +
 configs/wb45n_defconfig                      |  3 ++
 configs/wb50n_defconfig                      |  3 ++
 doc/README.atmel_pmecc                       | 13 +++----
 drivers/mtd/nand/raw/Kconfig                 | 39 ++++++++++++++++++++
 include/configs/at91sam9n12ek.h              |  7 ----
 include/configs/at91sam9x5ek.h               |  7 ----
 include/configs/sama5d2_ptc_ek.h             | 15 ++++++--
 include/configs/sama5d3_xplained.h           |  7 ----
 include/configs/sama5d3xek.h                 |  7 ----
 include/configs/sama5d4_xplained.h           |  6 ---
 include/configs/sama5d4ek.h                  |  6 ---
 include/configs/wb45n.h                      |  7 ----
 include/configs/wb50n.h                      |  6 ---
 scripts/config_whitelist.txt                 |  5 ---
 34 files changed, 95 insertions(+), 68 deletions(-)

---
v3:
- Added sama5d2_ptc_ek board which also defines ATMEL_NAND_HW_PMECC

v2:
- Make ATMEL_NAND_HW_PMECC dependent on ATMEL_NAND_HWECC
- Make SPL_GENERATE_ATMEL_PMECC_HEADER dependent on NAND_BOOT
- Remove PMECC from non-NAND_BOOT configs

diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
index 6b2cfe9c42..7b46eb498d 100644
--- a/configs/at91sam9n12ek_mmc_defconfig
+++ b/configs/at91sam9n12ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
index 354c24ff16..4e34a517fd 100644
--- a/configs/at91sam9n12ek_nandflash_defconfig
+++ b/configs/at91sam9n12ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
index 63889355bf..7ba1d167e7 100644
--- a/configs/at91sam9n12ek_spiflash_defconfig
+++ b/configs/at91sam9n12ek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9N12EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
index dc13509715..1aa6ce7185 100644
--- a/configs/at91sam9x5ek_dataflash_defconfig
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index ff86f93e61..75f7fbd199 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
index b2b3ddb6d9..dd6bdee7f9 100644
--- a/configs/at91sam9x5ek_nandflash_defconfig
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+CONFIG_PMECC_CAP=2
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
index d0eebcdc75..94b813fe2c 100644
--- a/configs/at91sam9x5ek_spiflash_defconfig
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_AT91SAM9X5EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xfffff200
diff --git a/configs/sama5d2_ptc_ek_mmc_defconfig b/configs/sama5d2_ptc_ek_mmc_defconfig
index 4a78b2da3d..71910d9fd6 100644
--- a/configs/sama5d2_ptc_ek_mmc_defconfig
+++ b/configs/sama5d2_ptc_ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D2_PTC_EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xf801c000
diff --git a/configs/sama5d2_ptc_ek_nandflash_defconfig b/configs/sama5d2_ptc_ek_nandflash_defconfig
index dd6068dd46..64b73aaed3 100644
--- a/configs/sama5d2_ptc_ek_nandflash_defconfig
+++ b/configs/sama5d2_ptc_ek_nandflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D2_PTC_EK=y
+CONFIG_ATMEL_NAND_HW_PMECC=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_BASE=0xf801c000
diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
index eab38ec366..51d5aeaf0e 100644
--- a/configs/sama5d3_xplained_mmc_defconfig
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
index ff7d2bffdd..ce1f28607e 100644
--- a/configs/sama5d3_xplained_nandflash_defconfig
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3_XPLAINED=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
index 6faea0ec3f..49d4334213 100644
--- a/configs/sama5d3xek_mmc_defconfig
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
index e641279ee1..b0d56e0e3e 100644
--- a/configs/sama5d3xek_nandflash_defconfig
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index 37f603d528..b0f07fd72d 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D3XEK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index bfcea3f519..35b8302b60 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 2c1b7f17c0..93714ed0c7 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index a89dd11a8c..325817f14e 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4_XPLAINED=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
index 45e6539913..bd238f7f14 100644
--- a/configs/sama5d4ek_mmc_defconfig
+++ b/configs/sama5d4ek_mmc_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
index 1497110452..3816bfb273 100644
--- a/configs/sama5d4ek_nandflash_defconfig
+++ b/configs/sama5d4ek_nandflash_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index dad32b5711..888552a265 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x26f00000
 CONFIG_TARGET_SAMA5D4EK=y
+# CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER is not set
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/wb45n_defconfig b/configs/wb45n_defconfig
index 9d881e5d41..15fc17ac00 100644
--- a/configs/wb45n_defconfig
+++ b/configs/wb45n_defconfig
@@ -3,6 +3,9 @@ CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x23f00000
 CONFIG_TARGET_WB45N=y
+CONFIG_PMECC_CAP=4
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/wb50n_defconfig b/configs/wb50n_defconfig
index c74eba1012..a7e9a53448 100644
--- a/configs/wb50n_defconfig
+++ b/configs/wb50n_defconfig
@@ -2,6 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_SYS_TEXT_BASE=0x23f00000
 CONFIG_TARGET_WB50N=y
+CONFIG_PMECC_CAP=8
+CONFIG_PMECC_SECTOR_SIZE=512
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/doc/README.atmel_pmecc b/doc/README.atmel_pmecc
index 274d860f06..c86d085779 100644
--- a/doc/README.atmel_pmecc
+++ b/doc/README.atmel_pmecc
@@ -20,13 +20,12 @@ To use PMECC in this driver, the user needs to set:
 	2. The PMECC sector size: CONFIG_PMECC_SECTOR_SIZE.
 	   It only can be 512 or 1024.
 
-Take AT91SAM9X5EK as an example, the board definition file likes:
+Take 'configs/at91sam9x5ek_nandflash_defconfig' as an example, the board
+configuration file has the following entries:
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC		1
-#define CONFIG_ATMEL_NAND_HW_PMECC	1
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
+	CONFIG_PMECC_CAP=2
+	CONFIG_PMECC_SECTOR_SIZE=512
+	CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER=y
 
 How to enable PMECC header for direct programmable boot.bin
 -----------------------------------------------------------
@@ -40,7 +39,7 @@ sama5d3 SoC spec (as of 03. April 2014) defines how this PMECC header has to
 look like. In order to do so we have a new image type added to mkimage to
 generate this PMECC header and integrated this into the build process of SPL.
 
-To enable the generation of atmel PMECC header for SPL one need to define
+To enable the generation of atmel PMECC header for SPL one needs to define
 CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are taken from
 board configuration and compiled into the host tools atmel_pmecc_params. This
 tool will be called in build process to parametrize mkimage for atmelimage
diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index ffc6cc98aa..b55c5d2b28 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -18,10 +18,49 @@ config SYS_NAND_DRIVER_ECC_LAYOUT
 config NAND_ATMEL
 	bool "Support Atmel NAND controller"
 	imply SYS_NAND_USE_FLASH_BBT
+	select SYS_NAND_DRIVER_ECC_LAYOUT
 	help
 	  Enable this driver for NAND flash platforms using an Atmel NAND
 	  controller.
 
+if NAND_ATMEL
+
+config ATMEL_NAND_HWECC
+	bool "Atmel Hardware ECC"
+	default n
+
+config ATMEL_NAND_HW_PMECC
+	bool "Atmel Programmable Multibit ECC (PMECC)"
+	depends on NAND_BOOT
+	select ATMEL_NAND_HWECC
+	default n
+	help
+	  The Programmable Multibit ECC (PMECC) controller is a programmable
+	  binary BCH(Bose, Chaudhuri and Hocquenghem) encoder and decoder.
+
+config PMECC_CAP
+	int "PMECC Correctable ECC Bits"
+	depends on ATMEL_NAND_HW_PMECC
+	default 2
+	help
+	  Correctable ECC bits, can be 2, 4, 8, 12, and 24.
+
+config PMECC_SECTOR_SIZE
+	int "PMECC Sector Size"
+	depends on ATMEL_NAND_HW_PMECC
+	default 512
+	help
+	  Sector size, in bytes, can be 512 or 1024.
+
+config SPL_GENERATE_ATMEL_PMECC_HEADER
+	bool "Atmel PMECC Header Generation"
+	select ATMEL_NAND_HW_PMECC
+	default y
+	help
+	  Generate Programmable Multibit ECC (PMECC) header for SPL image.
+
+endif
+
 config NAND_DAVINCI
 	bool "Support TI Davinci NAND controller"
 	help
diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h
index 6cd267eee6..777a99b730 100644
--- a/include/configs/at91sam9n12ek.h
+++ b/include/configs/at91sam9n12ek.h
@@ -59,12 +59,6 @@
 #define CONFIG_SYS_NAND_READY_PIN	GPIO_PIN_PD(5)
 #endif
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
-
 #define CONFIG_EXTRA_ENV_SETTINGS                                       \
 	"console=console=ttyS0,115200\0"                                \
 	"mtdparts="CONFIG_MTDPARTS_DEFAULT"\0"					\
@@ -177,6 +171,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/at91sam9x5ek.h b/include/configs/at91sam9x5ek.h
index 63305a7cdd..6adb965c3c 100644
--- a/include/configs/at91sam9x5ek.h
+++ b/include/configs/at91sam9x5ek.h
@@ -55,12 +55,6 @@
 #define CONFIG_SYS_NAND_READY_PIN	AT91_PIN_PD5
 #endif
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC		1
-#define CONFIG_ATMEL_NAND_HW_PMECC	1
-#define CONFIG_PMECC_CAP		2
-#define CONFIG_PMECC_SECTOR_SIZE	512
-
 /* USB */
 #ifdef CONFIG_CMD_USB
 #ifndef CONFIG_USB_EHCI_HCD
@@ -151,6 +145,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d2_ptc_ek.h b/include/configs/sama5d2_ptc_ek.h
index 87a0a74b31..a3fecb3bca 100644
--- a/include/configs/sama5d2_ptc_ek.h
+++ b/include/configs/sama5d2_ptc_ek.h
@@ -33,9 +33,18 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	BIT(22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
+#ifdef CONFIG_NAND_BOOT
+#define CONFIG_SPL_NAND_DRIVERS
+#define CONFIG_SPL_NAND_BASE
+#endif
+#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+#define CONFIG_SYS_NAND_PAGE_SIZE	0x800
+#define CONFIG_SYS_NAND_PAGE_COUNT	64
+#define CONFIG_SYS_NAND_OOBSIZE		64
+#define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
+
 #endif /* __CONFIG_H */
diff --git a/include/configs/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
index d0d8087ca3..8a9a19d38e 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -43,14 +43,8 @@
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 #endif
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		4
-#define CONFIG_PMECC_SECTOR_SIZE	512
 
 /* USB */
-
 #ifdef CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL
 #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
@@ -88,6 +82,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
index 4d3c3b8314..ca1c2b0861 100644
--- a/include/configs/sama5d3xek.h
+++ b/include/configs/sama5d3xek.h
@@ -62,14 +62,8 @@
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
 #endif
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP		4
-#define CONFIG_PMECC_SECTOR_SIZE	512
 
 /* USB */
-
 #ifdef CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL_CLK_SEL_UPLL
 #define CONFIG_USB_OHCI_NEW
@@ -109,6 +103,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		64
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h
index 7f8ac178f3..bbb16993ec 100644
--- a/include/configs/sama5d4_xplained.h
+++ b/include/configs/sama5d4_xplained.h
@@ -37,9 +37,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
 /* SPL */
@@ -64,8 +61,6 @@
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
 #endif
-#define CONFIG_PMECC_CAP		8
-#define CONFIG_PMECC_SECTOR_SIZE	512
 #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
@@ -73,6 +68,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		224
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
index aa8573d8ba..d58041650c 100644
--- a/include/configs/sama5d4ek.h
+++ b/include/configs/sama5d4ek.h
@@ -37,9 +37,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
 #endif
 
 /* SPL */
@@ -63,8 +60,6 @@
 #define CONFIG_SPL_NAND_DRIVERS
 #define CONFIG_SPL_NAND_BASE
 #endif
-#define CONFIG_PMECC_CAP		8
-#define CONFIG_PMECC_SECTOR_SIZE	512
 #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x40000
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_SIZE	0x1000
@@ -72,6 +67,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE		224
 #define CONFIG_SYS_NAND_BLOCK_SIZE	0x40000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/include/configs/wb45n.h b/include/configs/wb45n.h
index b516b66c35..add4019b31 100644
--- a/include/configs/wb45n.h
+++ b/include/configs/wb45n.h
@@ -48,12 +48,6 @@
 #define CONFIG_SYS_NAND_ENABLE_PIN  AT91_PIN_PD4
 #define CONFIG_SYS_NAND_READY_PIN   AT91_PIN_PD5
 
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC     1
-#define CONFIG_ATMEL_NAND_HW_PMECC  1
-#define CONFIG_PMECC_CAP            4
-#define CONFIG_PMECC_SECTOR_SIZE    512
-
 #define CONFIG_RBTREE
 #define CONFIG_LZO
 
@@ -141,6 +135,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE     64
 #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif				/* __CONFIG_H__ */
diff --git a/include/configs/wb50n.h b/include/configs/wb50n.h
index 40ca9d602b..2684b6c16c 100644
--- a/include/configs/wb50n.h
+++ b/include/configs/wb50n.h
@@ -57,11 +57,6 @@
 /* our CLE is AD22 */
 #define CONFIG_SYS_NAND_MASK_CLE    (1 << 22)
 #define CONFIG_SYS_NAND_ONFI_DETECTION
-/* PMECC & PMERRLOC */
-#define CONFIG_ATMEL_NAND_HWECC
-#define CONFIG_ATMEL_NAND_HW_PMECC
-#define CONFIG_PMECC_CAP            8
-#define CONFIG_PMECC_SECTOR_SIZE    512
 
 /* Ethernet Hardware */
 #define CONFIG_MACB
@@ -118,6 +113,5 @@
 #define CONFIG_SYS_NAND_OOBSIZE     64
 #define CONFIG_SYS_NAND_BLOCK_SIZE  0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS   0x0
-#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #endif
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index e2c2889acf..e6ac098e27 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -96,8 +96,6 @@ CONFIG_ATMEL_LCD_BGR555
 CONFIG_ATMEL_LCD_RGB565
 CONFIG_ATMEL_LEGACY
 CONFIG_ATMEL_MCI_8BIT
-CONFIG_ATMEL_NAND_HWECC
-CONFIG_ATMEL_NAND_HW_PMECC
 CONFIG_ATMEL_SPI0
 CONFIG_AT_TRANS
 CONFIG_AUTO_ZRELADDR
@@ -1502,8 +1500,6 @@ CONFIG_PLATINUM_PROJECT
 CONFIG_PM
 CONFIG_PMC_BR_PRELIM
 CONFIG_PMC_OR_PRELIM
-CONFIG_PMECC_CAP
-CONFIG_PMECC_SECTOR_SIZE
 CONFIG_PME_PLAT_CLK_DIV
 CONFIG_PMU
 CONFIG_PMW_BASE
@@ -1868,7 +1864,6 @@ CONFIG_SPL_FS_LOAD_ARGS_NAME
 CONFIG_SPL_FS_LOAD_KERNEL_NAME
 CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
 CONFIG_SPL_GD_ADDR
-CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 CONFIG_SPL_INIT_MINIMAL
 CONFIG_SPL_JR0_LIODN_NS
 CONFIG_SPL_JR0_LIODN_S
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH v3 1/1] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-20  3:37                     ` [U-Boot] [PATCH v3 1/1] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
@ 2019-01-20 12:57                       ` Tom Rini
  2019-01-20 14:25                         ` Derald Woods
  0 siblings, 1 reply; 32+ messages in thread
From: Tom Rini @ 2019-01-20 12:57 UTC (permalink / raw)
  To: u-boot

On Sat, Jan 19, 2019 at 09:37:14PM -0600, Derald D. Woods wrote:

> This commit converts the following items to Kconfig:
> 
> CONFIG_ATMEL_NAND_HWECC
> CONFIG_ATMEL_NAND_HW_PMECC
> CONFIG_PMECC_CAP
> CONFIG_PMECC_SECTOR_SIZE
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
> Config files not explicitly containing the name *nandflash* will have
> PMECC disabled. PMECC support requires that a header be applied to
> "boot.bin". The generated PMECC "boot.bin" is intended for NAND media.
> 
> [PMECC References]
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> 
> [Mailing List Thread]
> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> 
> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
> Reported-by: Daniel Evans <photonthunder@gmail.com>
> Cc: Eugen Hristev <eugen.hristev@microchip.com>
> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>

So, this too has a bunch of problems:
pm9g45 at91sam9261ek_dataflash_cs3 at91sam9261ek_dataflash_cs0
at91sam9xeek_dataflash_cs1 at91sam9260ek_dataflash_cs0
at91sam9260ek_dataflash_cs1 at91sam9260ek_nandflash
at91sam9263ek_dataflash_cs0 ethernut5 at91sam9g20ek_dataflash_cs1
at91sam9g20ek_dataflash_cs0 wb50n at91sam9xeek_nandflash
at91sam9m10g45ek_nandflash snapper9g20 at91sam9rlek_mmc
at91sam9xeek_dataflash_cs0 at91sam9g10ek_nandflash
at91sam9g10ek_dataflash_cs3 at91sam9g10ek_dataflash_cs0
at91sam9g20ek_2mmc_nandflash at91sam9263ek_norflash_boot
at91sam9g20ek_nandflash snapper9260 at91sam9g20ek_2mmc
at91sam9263ek_norflash at91sam9261ek_nandflash meesc pm9261 pm9263
at91sam9m10g45ek_mmc gurnard wb45n usb_a9263_dataflash
at91sam9rlek_nandflash at91sam9263ek_dataflash at91sam9263ek_nandflash
at91sam9rlek_dataflash

v1 was actually pretty close to size neutral and nothing failed to
build.  I'm going to build that again and tweak it for neutrality.
Thanks again!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190120/0ec1393f/attachment.sig>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] [PATCH v3 1/1] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2019-01-20 12:57                       ` Tom Rini
@ 2019-01-20 14:25                         ` Derald Woods
  0 siblings, 0 replies; 32+ messages in thread
From: Derald Woods @ 2019-01-20 14:25 UTC (permalink / raw)
  To: u-boot

On Sun, Jan 20, 2019 at 6:57 AM Tom Rini <trini@konsulko.com> wrote:

> On Sat, Jan 19, 2019 at 09:37:14PM -0600, Derald D. Woods wrote:
>
> > This commit converts the following items to Kconfig:
> >
> > CONFIG_ATMEL_NAND_HWECC
> > CONFIG_ATMEL_NAND_HW_PMECC
> > CONFIG_PMECC_CAP
> > CONFIG_PMECC_SECTOR_SIZE
> > CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> >
> > Config files not explicitly containing the name *nandflash* will have
> > PMECC disabled. PMECC support requires that a header be applied to
> > "boot.bin". The generated PMECC "boot.bin" is intended for NAND media.
> >
> > [PMECC References]
> > https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> > https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> >
> > [Mailing List Thread]
> > https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> >
> > Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS
> assignment")
> > Reported-by: Daniel Evans <photonthunder@gmail.com>
> > Cc: Eugen Hristev <eugen.hristev@microchip.com>
> > Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
>
> So, this too has a bunch of problems:
> pm9g45 at91sam9261ek_dataflash_cs3 at91sam9261ek_dataflash_cs0
> at91sam9xeek_dataflash_cs1 at91sam9260ek_dataflash_cs0
> at91sam9260ek_dataflash_cs1 at91sam9260ek_nandflash
> at91sam9263ek_dataflash_cs0 ethernut5 at91sam9g20ek_dataflash_cs1
> at91sam9g20ek_dataflash_cs0 wb50n at91sam9xeek_nandflash
> at91sam9m10g45ek_nandflash snapper9g20 at91sam9rlek_mmc
> at91sam9xeek_dataflash_cs0 at91sam9g10ek_nandflash
> at91sam9g10ek_dataflash_cs3 at91sam9g10ek_dataflash_cs0
> at91sam9g20ek_2mmc_nandflash at91sam9263ek_norflash_boot
> at91sam9g20ek_nandflash snapper9260 at91sam9g20ek_2mmc
> at91sam9263ek_norflash at91sam9261ek_nandflash meesc pm9261 pm9263
> at91sam9m10g45ek_mmc gurnard wb45n usb_a9263_dataflash
> at91sam9rlek_nandflash at91sam9263ek_dataflash at91sam9263ek_nandflash
> at91sam9rlek_dataflash
>
> v1 was actually pretty close to size neutral and nothing failed to
> build.  I'm going to build that again and tweak it for neutrality.
> Thanks again!
>


Sounds good to me. Sometimes you have to stick with your first thoughts.
The simple change is usually the best case.

Derald



>
> --
> Tom
>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [U-Boot] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig
  2018-12-15  7:36               ` [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
                                   ` (2 preceding siblings ...)
  2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
@ 2019-01-21 16:58                 ` Tom Rini
  3 siblings, 0 replies; 32+ messages in thread
From: Tom Rini @ 2019-01-21 16:58 UTC (permalink / raw)
  To: u-boot

On Sat, Dec 15, 2018 at 01:36:46AM -0600, Derald D. Woods wrote:

> This commit converts the following items to Kconfig:
> 
> CONFIG_ATMEL_NAND_HWECC
> CONFIG_ATMEL_NAND_HW_PMECC
> CONFIG_PMECC_CAP
> CONFIG_PMECC_SECTOR_SIZE
> CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
> 
> [PMECC References]
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/PmeccConfigure
> https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap
> 
> [Mailing List Thread]
> https://lists.denx.de/pipermail/u-boot/2018-December/350666.html
> 
> Fixes: 5541543f ("configs: at91: Remove CONFIG_SYS_EXTRA_OPTIONS assignment")
> Reported-by: Daniel Evans <photonthunder@gmail.com>
> Cc: Eugen Hristev <eugen.hristev@microchip.com>
> Signed-off-by: Derald D. Woods <woods.technical@gmail.com>

Note that to make this more size neutral I had to tweak a few configs
and I hope I didn't inadvertently re-break some platforms.  However,
with them in Kconfig now a re-adjustment and removal of drivers that
shouldn't be there for a specific defconfig is easier, sorry about the
potential noise!

Also, I see but couldn't quite track down which option wasn't quite
right on sama5d2_ptc_ek_mmc and sama5d2_ptc_ek_nandflash as we're seeing
some size reduction in atmel_nand_chip_init() but non-obvious to me
which option is/isn't set and I re-checked the migration.

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190121/54e3c45b/attachment.sig>

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2019-01-21 16:58 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-05  0:15 [U-Boot] boot.bin on SD Card for SAMA5D3 Xplained Daniel Evans
2018-12-05 14:36 ` Eugen.Hristev at microchip.com
2018-12-05 18:08   ` Daniel Evans
2018-12-05 20:38   ` Robert Nelson
2018-12-06  8:02     ` Eugen.Hristev at microchip.com
2018-12-08  2:37       ` Derald D. Woods
2018-12-08 19:49 ` [U-Boot] [PATCH] ARM: at91: Fix 'boot.bin' generation when CONFIG_SD_BOOT is enabled Derald D. Woods
2018-12-10  8:32   ` Eugen.Hristev at microchip.com
2018-12-10 13:01     ` Derald D. Woods
2018-12-10 14:03       ` Eugen.Hristev at microchip.com
2018-12-10 14:54         ` Derald Woods
2018-12-10 15:14           ` Eugen.Hristev at microchip.com
2018-12-11  5:48             ` Derald D. Woods
2018-12-15  7:36               ` [U-Boot] [PATCH] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
2018-12-28  0:04                 ` Derald Woods
2019-01-07  9:40                 ` Eugen.Hristev at microchip.com
2019-01-10  1:00                   ` Derald Woods
2019-01-11 11:27                     ` Eugen.Hristev at microchip.com
2019-01-11 16:51                       ` Derald Woods
2019-01-11 16:53                         ` Derald Woods
2019-01-18  8:37                           ` Eugen.Hristev at microchip.com
2019-01-19  3:26                             ` Derald D. Woods
2019-01-19 20:02                 ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Derald D. Woods
2019-01-19 20:02                   ` [U-Boot] [PATCH 1/2] nand: atmel: Replace SYS_NAND_ECC_BASE with ATMEL_BASE_ECC Derald D. Woods
2019-01-19 20:02                   ` [U-Boot] [PATCH 2/2] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
2019-01-19 23:29                   ` [U-Boot] [PATCH 0/2] ARM: at91: NAND PMECC Kconfig conversion Tom Rini
2019-01-20  0:50                     ` Derald Woods
2019-01-20  3:37                   ` [U-Boot] [PATCH v2 0/1] " Derald D. Woods
2019-01-20  3:37                     ` [U-Boot] [PATCH v3 1/1] ARM: at91: Convert SPL_GENERATE_ATMEL_PMECC_HEADER to Kconfig Derald D. Woods
2019-01-20 12:57                       ` Tom Rini
2019-01-20 14:25                         ` Derald Woods
2019-01-21 16:58                 ` [U-Boot] " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.