nand: add idb read function for drmboot.ko for read idb data.
authorZhaoyifeng <zyf@rock-chips.com>
Fri, 16 Jan 2015 01:30:07 +0000 (09:30 +0800)
committerZhaoyifeng <zyf@rock-chips.com>
Fri, 16 Jan 2015 01:30:07 +0000 (09:30 +0800)
arch/arm/mach-rockchip/rknandbase.c

index 24d43619aa6df7f4c0dfd8247fc0c0c227b844d1..887fe973f4cbcd856f0d063d53750b300c18af76 100755 (executable)
@@ -61,27 +61,31 @@ int rknand_get_part_info(char **s)
 }\r
 EXPORT_SYMBOL(rknand_get_part_info); \r
 \r
-static char sn_data[512];\r
-static char vendor0[512];\r
-\r
+static char nand_idb_data[2048];\r
 char GetSNSectorInfo(char * pbuf)\r
 {\r
-    memcpy(pbuf,sn_data,0x200);\r
+    memcpy(pbuf,&nand_idb_data[0x600],0x200);\r
     return 0;\r
 }\r
 \r
 char GetSNSectorInfoBeforeNandInit(char * pbuf)\r
 {\r
-    memcpy(pbuf,sn_data,0x200);\r
+    memcpy(pbuf,&nand_idb_data[0x600],0x200);\r
     return 0;\r
 } \r
 \r
 char GetVendor0InfoBeforeNandInit(char * pbuf)\r
 {\r
-    memcpy(pbuf,vendor0 + 8,504);\r
+    memcpy(pbuf,&nand_idb_data[0x400+8],504);\r
     return 0;\r
 }\r
 \r
+char* rknand_get_idb_data(void)\r
+{\r
+    return nand_idb_data;\r
+}\r
+EXPORT_SYMBOL(rknand_get_idb_data);\r
+\r
 int  GetParamterInfo(char * pbuf , int len)\r
 {\r
     int ret = -1;\r
@@ -141,7 +145,11 @@ EXPORT_SYMBOL(rk_nand_get_device);
 \r
 unsigned long rknand_dma_flush_dcache(unsigned long ptr,int size,int dir)\r
 {\r
+#ifdef CONFIG_ARM64\r
+       __flush_dcache_area((void *)ptr, size + 63);\r
+#else\r
      __cpuc_flush_dcache_area((void*)ptr, size + 63);\r
+#endif\r
     return ((unsigned long )virt_to_phys((void *)ptr));\r
 }\r
 EXPORT_SYMBOL(rknand_dma_flush_dcache);\r
@@ -164,10 +172,10 @@ int rknand_flash_cs_init(int id)
 }\r
 EXPORT_SYMBOL(rknand_flash_cs_init);\r
 \r
-int rknand_get_reg_addr(int *pNandc0,int *pNandc1,int *pSDMMC0,int *pSDMMC1,int *pSDMMC2)\r
+int rknand_get_reg_addr(unsigned long *pNandc0,unsigned long *pNandc1,unsigned long *pSDMMC0,unsigned long *pSDMMC1,unsigned long *pSDMMC2)\r
 {\r
-       *pNandc0 = (int)g_nandc_info[0].reg_base;\r
-       *pNandc1 = (int)g_nandc_info[1].reg_base;\r
+       *pNandc0 = (unsigned long)g_nandc_info[0].reg_base;\r
+       *pNandc1 = (unsigned long)g_nandc_info[1].reg_base;\r
        return 0;\r
 }\r
 EXPORT_SYMBOL(rknand_get_reg_addr);\r
@@ -223,8 +231,7 @@ static int rknand_probe(struct platform_device *pdev)
 #endif\r
     if(id == 0)\r
        {\r
-        memcpy(vendor0,membase+0x1400,0x200);\r
-        memcpy(sn_data,membase+0x1600,0x200);\r
+        memcpy(nand_idb_data,membase+0x1000,0x800);\r
        }\r
        else if(id >= 2)\r
        {\r