diff --git a/board/atheros/board953x/flash.c b/board/atheros/board953x/flash.c
index db47a41..3b17afb 100755
--- a/board/atheros/board953x/flash.c
+++ b/board/atheros/board953x/flash.c
@@ -38,6 +38,8 @@
 	flash_info->flash_id = FLASH_M25P64;
 	flash_info->size = CFG_FLASH_SIZE; /* bytes */
 	flash_info->sector_count = flash_info->size / CFG_FLASH_SECTOR_SIZE;
+	flash_info->p1_size = flash_info->size >> 1;
+	flash_info->p1_sector_count = flash_info->sector_count >> 1;
 
 	for (i = 0; i < flash_info->sector_count; i++) {
 		flash_info->start[i] = CFG_FLASH_BASE +
diff --git a/common/flash.c b/common/flash.c
index a64bc98..b61f491 100755
--- a/common/flash.c
+++ b/common/flash.c
@@ -34,6 +34,26 @@
  * Functions
  */
 
+/*
+ * Get flash erase sector count.
+ */
+ushort
+get_sector_count(flash_info_t *info)
+{
+	if (info->p1_sector_count) {
+		return info->p1_sector_count;
+	}
+	return info->sector_count;
+}
+
+ulong
+get_size(flash_info_t *info) {
+	if (info->p1_size) {
+		return info->p1_size;
+	}
+	return info->size;
+}
+
 /*-----------------------------------------------------------------------
  * Set protection status for monitor sectors
  *
@@ -43,8 +63,8 @@
 void
 flash_protect (int flag, ulong from, ulong to, flash_info_t *info)
 {
-	ulong b_end = info->start[0] + info->size - 1;	/* bank end address */
-	short s_end = info->sector_count - 1;	/* index of last sector */
+	ulong b_end = info->start[0] + get_size(info) - 1;	/* bank end address */
+	short s_end = get_sector_count(info) - 1;	/* index of last sector */
 	int i;
 
 	debug ("flash_protect %s: from 0x%08lX to 0x%08lX\n",
@@ -53,7 +73,7 @@
 		from, to);
 
 	/* Do nothing if input data is bad. */
-	if (info->sector_count == 0 || info->size == 0 || to < from) {
+	if (get_sector_count(info) == 0 || get_size(info) == 0 || to < from) {
 		return;
 	}
 
@@ -65,7 +85,7 @@
 		return;
 	}
 
-	for (i=0; i<info->sector_count; ++i) {
+	for (i=0; i<get_sector_count(info); ++i) {
 		ulong end;		/* last address in current sect	*/
 
 		end = (i == s_end) ? b_end : info->start[i + 1] - 1;
@@ -109,10 +129,10 @@
 		    addr >= info->start[0] &&
 		    /* WARNING - The '- 1' is needed if the flash
 		     * is at the end of the address space, since
-		     * info->start[0] + info->size wraps back to 0.
+		     * info->start[0] + get_size(info) wraps back to 0.
 		     * Please don't change this unless you understand this.
 		     */
-		    addr <= info->start[0] + info->size - 1) {
+		    addr <= info->start[0] + get_size(info) - 1) {
 			return (info);
 		}
 	}
@@ -155,9 +175,9 @@
 	}
 
 	for (info = info_first; info <= info_last; ++info) {
-		ulong b_end = info->start[0] + info->size;	/* bank end addr */
-		short s_end = info->sector_count - 1;
-		for (i=0; i<info->sector_count; ++i) {
+		ulong b_end = info->start[0] + get_size(info);	/* bank end addr */
+		short s_end = get_sector_count(info) - 1;
+		for (i=0; i<get_sector_count(info); ++i) {
 			ulong e_addr = (i == s_end) ? b_end : info->start[i + 1];
 
 			if ((end >= info->start[i]) && (addr < e_addr) &&
@@ -171,7 +191,7 @@
 	for (info = info_first; info <= info_last && cnt>0; ++info) {
 		ulong len;
 
-		len = info->start[0] + info->size - addr;
+		len = info->start[0] + get_size(info) - addr;
 		if (len > cnt)
 			len = cnt;
 		if ((i = write_buff(info, (uchar *)src, addr, len)) != 0) {
diff --git a/include/flash.h b/include/flash.h
index 79031a4..c4b362e 100755
--- a/include/flash.h
+++ b/include/flash.h
@@ -49,6 +49,8 @@
 	ushort	interface;		/* used for x8/x16 adjustments		*/
 	ushort	legacy_unlock;		/* support Intel legacy (un)locking	*/
 #endif
+	ulong	p1_size;		/* Size of lower partition.		*/
+	ushort	p1_sector_count;	/* Erase units for lower partition.	*/
 } flash_info_t;
 
 /*
