Overview
========

The overall usage pattern for ECC diagnostic commands is the following:

  * (injecting errors is initially disabled)

  * define inject mask (which tells the DDR controller what type of errors
    we'll be injecting: single/multiple bit etc.)

  * enable injecting errors - from now on the controller injects errors as
    indicated in the inject mask

IMPORTANT NOTICE: enabling injecting multiple-bit errors is potentially
dangerous as such errors are NOT corrected by the controller. Therefore caution
should be taken when enabling the injection of multiple-bit errors: it is only
safe when used on a carefully selected memory area and used under control of
the 'ecc test' command (see example 'Injecting Multiple-Bit Errors' below). In
particular, when you simply set the multiple-bit errors in inject mask and
enable injection, U-Boot is very likely to hang quickly as the errors will be
injected when it accesses its code, data etc.


Use cases for DDR 'ecc' command:
================================

Before executing particular tests reset target board or clear status registers:

=> ecc captureclear
=> ecc errdetectclr all
=> ecc sbecnt 0


Injecting Single-Bit Errors
---------------------------

1. Set 1 bit in Data Path Error Inject Mask

=> ecc injectdatahi 1

2. Run test over some memory region

=> ecc test 200000 10

3. Check ECC status

=> ecc status
...
Memory Data Path Error Injection Mask High/Low: 00000001 00000000
...
Memory Single-Bit Error Management (0..255):
  Single-Bit Error Threshold: 255
  Single Bit Error Counter: 16
...
Memory Error Detect:
  Multiple Memory Errors: 0
  Multiple-Bit Error: 0
  Single-Bit Error: 0
...

16 errors were generated, Single-Bit Error flag was not set as Single Bit Error
Counter did not reach  Single-Bit Error Threshold.

4. Make sure used memory region got re-initialized with 0xcafecafe pattern

=> md 200000
00200000: cafecafe cafecafe cafecafe cafecafe    ................
00200010: cafecafe cafecafe cafecafe cafecafe    ................
00200020: cafecafe cafecafe cafecafe cafecafe    ................
00200030: cafecafe cafecafe cafecafe cafecafe    ................
00200040: cafecafe cafecafe cafecafe cafecafe    ................
00200050: cafecafe cafecafe cafecafe cafecafe    ................
00200060: cafecafe cafecafe cafecafe cafecafe    ................
00200070: cafecafe cafecafe cafecafe cafecafe    ................
00200080: deadbeef deadbeef deadbeef deadbeef    ................
00200090: deadbeef deadbeef deadbeef deadbeef    ................


Injecting Multiple-Bit Errors
-----------------------------

1. Set more than 1 bit in Data Path Error Inject Mask

=> ecc injectdatahi 5

2. Run test over some memory region

=> ecc test 200000 10

3. Check ECC status

=> ecc status
...
Memory Data Path Error Injection Mask High/Low: 00000005 00000000
...
Memory Error Detect:
  Multiple Memory Errors: 1
  Multiple-Bit Error: 1
  Single-Bit Error: 0
...

Observe that both Multiple Memory Errors and Multiple-Bit Error flags are set.

4. Make sure used memory region got re-initialized with 0xcafecafe pattern

=> md 200000
00200000: cafecafe cafecafe cafecafe cafecafe    ................
00200010: cafecafe cafecafe cafecafe cafecafe    ................
00200020: cafecafe cafecafe cafecafe cafecafe    ................
00200030: cafecafe cafecafe cafecafe cafecafe    ................
00200040: cafecafe cafecafe cafecafe cafecafe    ................
00200050: cafecafe cafecafe cafecafe cafecafe    ................
00200060: cafecafe cafecafe cafecafe cafecafe    ................
00200070: cafecafe cafecafe cafecafe cafecafe    ................
00200080: deadbeef deadbeef deadbeef deadbeef    ................
00200090: deadbeef deadbeef deadbeef deadbeef    ................


Test Single-Bit Error Counter and Threshold
-------------------------------------------

1. Set 1 bit in Data Path Error Inject Mask

=> ecc injectdatahi 1

2. Enable error injection

=> ecc inject en

3. Let u-boot run for a with Single-Bit error injection enabled

4. Disable error injection

=> ecc inject dis

4. Check status

=> ecc status

...
Memory Single-Bit Error Management (0..255):
  Single-Bit Error Threshold: 255
  Single Bit Error Counter: 60

Memory Error Detect:
  Multiple Memory Errors: 1
  Multiple-Bit Error: 0
  Single-Bit Error: 1
...

Observe that Single-Bit Error is 'on' which means that Single-Bit Error Counter
reached Single-Bit Error Threshold. Multiple Memory Errors bit is also 'on', that
is Counter reached Threshold more than one time (it wraps back after reaching
Threshold).


