[Feature][T106]ZXW P56U09 code

Only Configure: Yes
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: No
Doc Update: No

Change-Id: I3cbd8b420271eb20c2b40ebe5c78f83059cd42f3
diff --git a/boot/common/src/uboot/test/test_nand.c b/boot/common/src/uboot/test/test_nand.c
new file mode 100644
index 0000000..4858820
--- /dev/null
+++ b/boot/common/src/uboot/test/test_nand.c
@@ -0,0 +1,96 @@
+#include <common.h>

+#include <command.h>

+#include <net.h>

+#include <jffs2/load_kernel.h>

+#include <common.h>

+#include <asm/arch/hardware.h>

+#include <asm/arch/uart.h>

+#include <asm/arch/cpu.h>

+#include <asm/arch/lsp_crpm.h>

+#include "errno.h"

+#include <drvs_gpio.h>

+

+

+#if CONFIG_HARDWARE_TEST

+

+/* ================================================================================

+ *  do_test_nand  :  

+ *                  ³É¹¦: GPIO17 GPIO16 ¶¼ÁÁ

+ *                  ʧ°Ü: GPIO17          ÁÁ

+ */

+int do_test_nand(void) 

+{

+	uint32_t is_ok = 0;

+	static uint32_t nand_led_state = 0;

+	static uint32_t test_cnt=0;

+

+	test_cnt++;

+	

+    memcpy((uint8_t *)0x21000000, (uint8_t *)0x82000000, 0x4000);   //SYS_IRAM2_BASE

+

+    run_command("nand erase 0x300000 0x20000", 0);

+    run_command("nand write 0x21000000 0x300000 0x4000", 0);

+    run_command("nand read 0x22000000 0x300000 0x4000", 0);

+    is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x22000000, 0x4000);

+    if( is_ok != 0 )

+        goto error;

+    printf("test round:%d\n",test_cnt);

+

+    run_command("nand erase 0x500000 0x20000", 0);

+    run_command("nand write 0x21000000 0x500000 0x4000", 0);

+    run_command("nand read 0x23000000 0x500000 0x4000", 0);

+    is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x23000000, 0x4000);

+    if( is_ok != 0 )

+        goto error;

+	printf("test round:%d\n",test_cnt);

+

+    run_command("nand erase 0x5000000 0x20000", 0);

+    run_command("nand write 0x21000000 0x5000000 0x4000", 0);

+    run_command("nand read 0x24000000 0x5000000 0x4000", 0);

+    is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x24000000, 0x4000);

+    if( is_ok != 0 )

+        goto error;

+    printf("test round:%d\n",test_cnt);

+

+    run_command("nand erase 0xf000000 0x20000", 0);

+    run_command("nand write 0x21000000 0xf000000 0x4000", 0);

+    run_command("nand read 0x25000000 0xf000000 0x4000", 0);

+    is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x25000000, 0x4000);

+   if( is_ok != 0 )

+        goto error;

+     printf("test round:%d\n",test_cnt);

+

+    if( nand_led_state ==0 )

+    {

+		zDrvGpio_SetOutputValue(GPIO33,GPIO_HIGH);

+        nand_led_state = 1;

+    }

+    else

+    {

+		zDrvGpio_SetOutputValue(GPIO33,GPIO_LOW);

+        nand_led_state = 0;

+    }

+

+    udelay(500000);

+    

+    return 0;

+

+    error:

+		zDrvGpio_SetOutputValue(GPIO75,GPIO_HIGH);

+		while(1);

+     printf("nand test failed !");

+        run_command("nand erase 0x300000 0x20000", 0);

+        run_command("nand erase 0x500000 0x20000", 0);

+        run_command("nand erase 0x5000000 0x20000", 0);

+        run_command("nand erase 0xf000000 0x20000", 0);

+        return -1;

+    

+}

+

+U_BOOT_CMD(

+	test_nand, CONFIG_SYS_MAXARGS, 0, do_test_nand,

+	"test_nand: test_nand ",

+	""

+);

+

+#endif