bool "KM_KIRKWOOD Board"
        select BOARD_LATE_INIT
        imply CMD_CRAMFS
+       imply CMD_DIAG
        imply FS_CRAMFS
 
 config TARGET_NET2BIG_V2
 
 config TARGET_KM8360
        bool "Support km8360"
        imply CMD_CRAMFS
+       imply CMD_DIAG
        imply FS_CRAMFS
 
 config TARGET_SUVD3
 
          for some PowerPC processors. For details please see the
          docuemntation in doc/README.beddbug
 
+config CMD_DIAG
+       bool "diag - Board diagnostics"
+       help
+         This command provides access to board diagnostic tests. These are
+         called Power-on Self Tests (POST). The command allows listing of
+         available tests and running either all the tests, or specific tests
+         identified by name.
+
 endmenu
 
 config CMD_UBI
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 # CONFIG_CMD_NFS is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIMER=y
+CONFIG_CMD_DIAG=y
 CONFIG_DM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_DM_SERIAL=y
 
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_SNTP=y
 CONFIG_CMD_BSP=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
+CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 
 CONFIG_CMD_BSP=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI_PNP is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
 # CONFIG_MMC is not set
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_ASKENV=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
-CONFIG_CMD_UBI=y
 CONFIG_CMD_FS_GENERIC=y
-CONFIG_CMD_PART=y
+CONFIG_CMD_DIAG=y
+CONFIG_CMD_UBI=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
 CONFIG_SYS_NAND_U_BOOT_OFFS=0x28000
 CONFIG_SPI_FLASH=y
 
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_DIAG=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_LED_STATUS=y
 CONFIG_LED_STATUS0=y
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 CONFIG_OF_EMBED=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 CONFIG_OF_EMBED=y
 CONFIG_NETCONSOLE=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_ASKENV=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_DIAG=y
 CONFIG_DM=y
 # CONFIG_DM_WARN is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_DOS_PARTITION=y
 CONFIG_ISO_PARTITION=y
 
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_DIAG=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
 # CONFIG_MMC is not set
 
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_DIAG=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
 
  */
 
 #define CONFIG_CMD_DATE                /* support for RTC, date/time...*/
-#define CONFIG_CMD_DIAG                /* Diagnostics                  */
 #define CONFIG_CMD_DISPLAY     /* Display support              */
 #define CONFIG_CMD_DTT         /* Digital Therm and Thermostat */
 #define CONFIG_CMD_EEPROM      /* EEPROM read/write support    */
 
     #define CONFIG_CFG_FAT
 #endif
 
-#ifdef CONFIG_POST
-    #define CONFIG_CMD_DIAG
-#endif
-
 #define        CONFIG_TIMESTAMP                /* display image timestamps */
 
 #if (CONFIG_SYS_TEXT_BASE != 0xFFF00000)
 
  */
 #if defined(CONFIG_440)
 #endif
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_EEPROM
 #define CONFIG_CMD_IRQ
 #define CONFIG_CMD_REGINFO
 
                "erase 0xfff00000 0xffffffff; "                 \
                "cp.b 0x20000 0xfff00000 ${filesize}\0"
 
-#define CONFIG_CMD_DIAG
-
 /* undef to save memory        */
 #undef CONFIG_SYS_LONGHELP
 
 
  * U-Boot commands
  */
 #define CONFIG_CMD_ENV
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 
 #ifndef CONFIG_DRIVER_TI_EMAC
 
  * Supported commands
  */
 #define CONFIG_CMD_DATE
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_JFFS2
 #define CONFIG_CMD_REGINFO
 
 
  * U-Boot commands
  */
 #define CONFIG_CMD_ENV
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 
 #ifdef CONFIG_CMD_BDI
 
  * Command line configuration.
  */
 #define CONFIG_CMD_DATE
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_EEPROM
 #define CONFIG_CMD_IDE
 #define CONFIG_CMD_IRQ
 
  * Commands additional to the ones defined in amcc-common.h
  */
 #define CONFIG_CMD_DTT
-#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
 #undef CONFIG_CMD_IRQ
 
 
  * Commands additional to the ones defined in amcc-common.h
  */
 #define CONFIG_CMD_DTT
-#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
 #undef CONFIG_CMD_IRQ
 
 
  * U-Boot commands
  */
 #define CONFIG_CMD_ENV
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 
 #ifdef CONFIG_CMD_BDI
 
 /*
  * U-Boot commands
  */
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_JFFS2
 #define CONFIG_CMD_NAND
 
 
  * Commands additional to the ones defined in amcc-common.h
  */
 #define CONFIG_CMD_DTT
-#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
 #undef CONFIG_CMD_IRQ
 
 
  * U-Boot commands
  */
 #define CONFIG_CMD_ENV
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 
 #ifdef CONFIG_CMD_BDI
 
 #define CONFIG_MPC8309         1       /* MPC8309 CPU specific */
 
 #define CONFIG_KM_DEF_ARCH     "arch=ppc_82xx\0"
-#define CONFIG_CMD_DIAG                1
 
 /* include common defines/options for all 83xx Keymile boards */
 #include "km83xx-common.h"
 
 #define CONFIG_POST    (CONFIG_SYS_POST_MEM_REGIONS)
 #define CONFIG_POST_SKIP_ENV_FLAGS
 #define CONFIG_POST_EXTERNAL_WORD_FUNCS
-#define CONFIG_CMD_DIAG
 
 /* we do the whole PCIe FPGA config stuff here */
 
 
 #define CPM_POST_WORD_ADDR  CONFIG_SYS_MEMTEST_END
 #define CONFIG_TESTPIN_REG  gprt3      /* for kmcoge5ne */
 #define CONFIG_TESTPIN_MASK 0x20       /* for kmcoge5ne */
-#define CONFIG_CMD_DIAG        /* so that testpin is inquired for POST test */
 
 #else
 #define CONFIG_SYS_IBAT6L      (0)
 
 /*
  * U-Boot commands
  */
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 
 #ifdef CONFIG_CMD_BDI
 
  * Command line configuration.
  */
 #define CONFIG_CMD_DATE
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_EEPROM
 #define CONFIG_CMD_IRQ
 #define CONFIG_CMD_REGINFO
 
  * Commands additional to the ones defined in amcc-common.h
  */
 #define CONFIG_CMD_DTT
-#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
 #undef CONFIG_CMD_IRQ
 
 
 #ifdef CONFIG_PCI
 #define CONFIG_CMD_PCI
 #endif
-#ifdef CONFIG_POST
-#define CONFIG_CMD_DIAG
-#endif
 
 #if (CONFIG_SYS_TEXT_BASE == 0xFC000000) || (CONFIG_SYS_TEXT_BASE == 0xFF000000)
 /* Boot low with 16 or 32 MB Flash */
 
  * U-Boot commands
  */
 #define CONFIG_CMD_ENV
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 #ifdef CONFIG_CMD_BDI
 #define CONFIG_CLOCKS
 
 
 #define CONFIG_CMD_MTDPARTS
 
-#define CONFIG_CMD_DIAG /* monitor functions : Diagnostics */
-
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
 /* Size must be a multiple of Nand erase size (524288 b) */
 #define MTDPARTS_DEFAULT               "mtdparts=omap2-nand.0:512k(SPL)," \
 
  * Command line configuration.
  */
 #define CONFIG_CMD_IDE
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_IRQ
 #define CONFIG_CMD_JFFS2
 #define CONFIG_CMD_SDRAM
 
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128 * 1024)
 
 /*Cmd*/
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_IRQ
 #define CONFIG_CMD_REGINFO
 #undef CONFIG_CMD_JFFS2
 
 /* U-Boot commands */
 /*=================*/
 
-#define CONFIG_CMD_DIAG
 #define CONFIG_CMD_SAVES
 
 /*==============================*/
 
 CONFIG_CMDLINE_PS_SUPPORT
 CONFIG_CMDLINE_TAG
 CONFIG_CMD_DATE
-CONFIG_CMD_DIAG
 CONFIG_CMD_DISPLAY
 CONFIG_CMD_DS4510
 CONFIG_CMD_DS4510_INFO