diff --git a/board/atheros/common/ath_flash.c b/board/atheros/common/ath_flash.c
index e89c89b..be88edf 100755
--- a/board/atheros/common/ath_flash.c
+++ b/board/atheros/common/ath_flash.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013 Qualcomm Atheros, Inc.
- * 
+ *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.
@@ -89,9 +89,9 @@
 #else
 	ath_reg_wr_nf(ATH_SPI_CLOCK, 0x43);
 #endif
-#endif 
+#endif
 
-#if  defined(CONFIG_MACH_QCA953x) /* Added for HB-SMIC */  
+#if  defined(CONFIG_MACH_QCA953x) /* Added for HB-SMIC */
 #ifdef ATH_SST_FLASH
 	ath_reg_wr_nf(ATH_SPI_CLOCK, 0x4);
 	ath_spi_flash_unblock();
@@ -99,7 +99,7 @@
 #else
 	ath_reg_wr_nf(ATH_SPI_CLOCK, 0x44);
 #endif
-#endif 
+#endif
 	ath_reg_rmw_set(ATH_SPI_FS, 1);
 	ath_spi_read_id();
 	ath_reg_rmw_clear(ATH_SPI_FS, 1);
@@ -214,6 +214,32 @@
 	return(ath_write_buff(info, source, addr - CFG_FLASH_BASE, len));
 }
 
+int
+read_buff(flash_info_t *info, uchar *buf, ulong from, ulong len)
+{
+  ulong i = 0;
+  if (len == 0)
+  {
+    return ERR_OK;
+  }
+  if (from + len > info->size)
+  {
+    printf("ERROR: from: ( %ld ) len: ( %ld ) flash_size: ( %ld )\n", from, len, info->size);
+    return ERR_INVAL;
+  }
+  ath_spi_write_enable();
+  ath_spi_bit_banger(ATH_SPI_CMD_READ);
+  ath_spi_send_addr((uint32_t) from);
+  for (i = 0; i < len; ++i)
+  {
+    ath_spi_delay_8();
+    buf[i] = (uchar) ath_reg_rd(ATH_SPI_RD_STATUS);
+  }
+  ath_spi_go();
+  ath_spi_done();
+  return ERR_OK;
+}
+
 #if ENABLE_EXT_ADDR_SUPPORT
 int
 read_buff_ext(flash_info_t *info, uchar *buf, ulong offset, ulong len)
diff --git a/include/flash.h b/include/flash.h
index 4978f7d..79031a4 100755
--- a/include/flash.h
+++ b/include/flash.h
@@ -89,6 +89,7 @@
 extern int flash_write (char *, ulong, ulong);
 extern flash_info_t *addr2info (ulong);
 extern int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt);
+extern int read_buff (flash_info_t *info, uchar *src, ulong from, ulong len);
 #if ENABLE_EXT_ADDR_SUPPORT
 extern int write_buff_ext (flash_info_t *info, uchar *src, ulong offset, ulong cnt);
 extern int read_buff_ext (flash_info_t *info, uchar *buf, ulong offset, ulong cnt);
@@ -422,7 +423,7 @@
 #define FLASH_MT28S4M16LC 0x00E1	/* Micron MT28S4M16LC			*/
 #define FLASH_S29GL064M 0x00F0		/* Spansion S29GL064M-R6		*/
 
-#define FLASH_M25P64    0x00F2      
+#define FLASH_M25P64    0x00F2
 
 #define FLASH_UNKNOWN	0xFFFF		/* unknown flash type			*/
 
