--- /home/moto/SRCs/bootloaders/u-boot-2008.10/common/main.c	2012-01-04 02:05:57.000000000 +0900
+++ ./common/main.c	2012-01-19 11:39:37.000000000 +0900
@@ -27,7 +27,7 @@
 
 /* #define	DEBUG	*/
 
-#define CUSTOMER_SPECIFIC (0)
+#define CUSTOMER_SPECIFIC (1)
 
 
 #include <common.h>
@@ -107,6 +107,8 @@
 #define CORE1_STATUS int
 #define CORE2_STATUS int
 
+extern void VerupDoneLow(void);
+
 
 /***************************************************************************
  * Watch for 'delay' seconds for autoboot stop or autoboot delay string.
@@ -338,8 +340,10 @@
 int mGpioLed2 = -1;//12 ;
 int mGpioLedActive2 = 0;
 
-int mGpioSwitch = -1;//9 ;
-int mGpioSwitchActive = 0;
+int mGpioVerupStat = 5;
+int mGpioVerupStatActive = 0;
+int mGpioVerupDone = 3;
+int mGpioVerupDoneActive = 0;
 
 void HAL_PMU_ENABLE_GPIO_CLOCK(void)
 { 
@@ -359,11 +363,16 @@
 		GPIOA_DIRECTION_REG = GPIOA_DIRECTION_REG | ( 1 << mGpioLed2  ) ; 
 	}
 
-	if ( -1 != mGpioSwitch)
+	if ( mGpioVerupStat != -1 )
 	{
-		GPIOA_DIRECTION_REG = GPIOA_DIRECTION_REG & ( ~ ( 1 << mGpioSwitch  ) ) ;
+		GPIOA_DIRECTION_REG = GPIOA_DIRECTION_REG & ( ~ ( 1 << mGpioVerupStat  ) ) ;
 	    //Programm GPIO-PULL-UP/DN Control register - configure for Pull-Up else user push button will not work.
-	    IO_WRITE(0x76000024, (IO_READ(0x76000024) & ( ~ ( 0x3 << (mGpioSwitch*2) ) ) ) | ( 0x2 << (mGpioSwitch*2)  ) );
+//	    IO_WRITE(0x76000024, (IO_READ(0x76000024) & ( ~ ( 0x3 << (mGpioVerupStat*2) ) ) ) | ( 0x2 << (mGpioVerupStat*2)  ) );
+	}
+    if ( mGpioVerupDone != -1 )
+	{
+		VerupDoneLow();
+		GPIOA_DIRECTION_REG = GPIOA_DIRECTION_REG | ( 1 << mGpioVerupDone  ) ; 
 	}
 }
 void LedOn1(void)
@@ -430,13 +439,39 @@
 }
 int ReadSwitch(void)
 {
-	if ( -1 == mGpioSwitch ) return 1;
+	if ( -1 == mGpioVerupStat ) return 1;
 	//printf("DBG:GPIO_VALUE=%08x\n", GPIOA_DATA_INPUT_REG );
-	if (1 == mGpioSwitchActive )
+	if ( 1 == mGpioVerupStatActive )
+	{
+		 return ((GPIOA_DATA_INPUT_REG & (1 <<mGpioVerupStat) ) == 0 ) ? 0 : 1;		/* GPIO5 */
+	}
+	return ((GPIOA_DATA_INPUT_REG & (1 <<mGpioVerupStat) ) == 0 ) ? 1 : 0 ;		/* GPIO5 */
+}
+void VerupDoneHigh(void)
+{   
+	if (mGpioVerupDone == -1) return;
+
+	if ( 0 == mGpioVerupDoneActive )
+	{
+		GPIOA_DATA_BIT_SET_REG = (1<<mGpioVerupDone);		/* GPIO3 */
+	}
+	else
+	{
+		GPIOA_DATA_BIT_CLEAR_REG = (1<<mGpioVerupDone);		/* GPIO3 */
+	}
+}
+void VerupDoneLow(void)
+{   
+	if (mGpioVerupDone == -1) return;
+
+	if ( 1 == mGpioVerupDoneActive )
 	{
-		 return ((GPIOA_DATA_INPUT_REG & (1 <<mGpioSwitch) ) == 0 ) ? 0 : 1; //GPIO9
+		GPIOA_DATA_BIT_SET_REG = (1<<mGpioVerupDone);		/* GPIO3 */
+	}
+	else
+	{
+		GPIOA_DATA_BIT_CLEAR_REG = (1<<mGpioVerupDone);		/* GPIO3 */
 	}
-	return ((GPIOA_DATA_INPUT_REG & (1 <<mGpioSwitch) ) == 0 ) ? 1 : 0 ; //GPIO9
 }
 //---------------------------------------------------------------------------------------
 
@@ -581,15 +616,6 @@
 		mGpioLedActive2 = (temp1 & 0x80 ) ? 1 : 0 ; //BIT D7- 0 - active low, 1 - active high
 		GPIOA_DIRECTION_REG = GPIOA_DIRECTION_REG  | ( 1 << mGpioLed2 ) ;	//0-input, 1-output		
 	}
-
-	s1 = getenv( "GPIO_USER_SW" );
-	if( s1 != NULL)
-	{
-		temp1 = (int)simple_strtol(s1, NULL, 16) ;
-		mGpioSwitch = temp1 & 0xf;				//BIT D4-D0 - GPIO PIN #. 0 - 15
-		mGpioSwitchActive = (temp1 & 0x80 ) ? 1 : 0 ; //BIT D7- 0 - active low, 1 - active high
-		GPIOA_DIRECTION_REG = GPIOA_DIRECTION_REG & ( ~ ( 1 << mGpioSwitch  ) ) ;//0-input, 1-output			
-	}
 	GpioInit();
 
 
@@ -674,15 +700,15 @@
 	{
 		//CORE2
 		extern int UpgradeAllIfRequired(int* apUpgradewasPerformed);
-		char* s1;
+		char* s1="1";
 		int status=0;
 		int UpgradewasPerformed=0;
-		s1 = getenv( "UPDATES_CONTROLLED_BY_GPIO" );
+//		s1 = getenv( "UPDATES_CONTROLLED_BY_GPIO" );
 		if( s1 != NULL )
 		{
 			if ( 0 == strcmp("1", s1 ) )
 			{                   
-				if ( 0 == ReadSwitch()  )//if switch is not triggered skip upgrade.
+				if ( 1 == ReadSwitch()  )//if switch is not triggered skip upgrade.
 				{
 					//printf("DBG::skippiong upgrade\n");
 					goto skip_upgrade;
@@ -712,10 +738,7 @@
 go_for_upgrade:
                     //---------------------
                     #if (CUSTOMER_SPECIFIC)
-                    GpioSetOutputMode(2);
-                    GpioSetOutputMode(3);
-                    GpioSet(2,1); 
-                    GpioSet(3,1);
+						VerupDoneHigh();
                     #endif
                     //---------------------
 
@@ -725,7 +748,7 @@
                     #if (CUSTOMER_SPECIFIC)
                     if ( 0 == status )
                     {
-                        GpioSet(3,0);
+						VerupDoneLow();
                     }
                     #endif
                     //---------------------
@@ -752,10 +775,10 @@
 		}
         //----------------------------------------------------------------------
         s = getenv ("bootdelay2");
-		if ( s != NULL)
-		{
+//		if ( s != NULL)
+//		{
 			bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;
-		}
+//		}
         s = getenv ("bootcmd2");
         if (bootdelay >= 0 && s && !abortboot (bootdelay)) 
 		{
--- /home/moto/SRCs/bootloaders/u-boot-2008.10/board/cavium/cnw5xxx/lowlevel_init.S	2012-01-04 02:05:54.000000000 +0900
+++ ./board/cavium/cnw5xxx/lowlevel_init.S	2012-01-18 14:55:58.000000000 +0900
@@ -166,36 +166,36 @@
          *         001 150   ohm
          *         010 100   ohm
          *         011  75   ohm
-         *         100  60   ohm
+         *         100  60   ohm <- SHARP Board.
          *         101  50   ohm
          *         110  42.8 ohm
          *         111  37.5 ohm
          *
-         *    [12] 0   enable ODT
+         *    [12] 0   enable ODT <- SHARP Board.
          *         1   disable ODT
          *
          *  [11:9] ODT value
          *         001 150 ohm
-         *         010  75 ohm
+         *         010  75 ohm <- SHARP Board.
          *         011  50 ohm
          *         other values undefined
          */
-	ldr	r1, =0x0006E550
+	ldr	r1, =0x00068550			/* 0x0006E550 */
 	str	r1, [r0, #DMC_PHY_ZQ_CTRL_OFFSET]		/* 0x428 */
 
-	ldr	r1, =0x0006E551
+	ldr	r1, =0x00068551			/* 0x0006E551 */
 	str	r1, [r0, #DMC_PHY_ZQ_CTRL_OFFSET]		/* 0x428 */
 
-	ldr	r1, =0x0006E550
+	ldr	r1, =0x00068550			/* 0x0006E550 */
 	str	r1, [r0, #DMC_PHY_ZQ_CTRL_OFFSET]		/* 0x428 */
 
-	ldr	r1, =0x0006E552
+	ldr	r1, =0x00068552			/* 0x0006E552 */
 	str	r1, [r0, #DMC_PHY_ZQ_CTRL_OFFSET]		/* 0x428 */
 
-	ldr	r1, =0x0006E550
+	ldr	r1, =0x00068550			/* 0x0006E550 */
 	str	r1, [r0, #DMC_PHY_ZQ_CTRL_OFFSET]		/* 0x428 */
 
-	ldr	r1, =0x0007E550
+	ldr	r1, =0x00078550			/* 0x0007E550 */
 	str	r1, [r0, #DMC_PHY_ZQ_CTRL_OFFSET]		/* 0x428 */
 
 	/* Enable PHY FIFO Read */
@@ -394,15 +394,15 @@
          *
          * [6,2]   sets ODT value
          *         00 ODT disabled
-         *         01  75 ohm
+         *         01  75 ohm <- SHARP Board.
          *         10 150 ohm
          *         11  50 ohm
          *
          *   [1]   output driver strength
-         *         0 Full strength
+         *         0 Full strength <- SHARP Board.
          *         1 Reduced strength
          */
-	ldr	r1, =0x00090044
+	ldr	r1, =0x00090004			/* 0x00090044 */
 	str	r1, [r0, #DMC_DIRECT_CMD_OFFSET]
 
 	ldr	r1, =0x00080B62
@@ -420,10 +420,10 @@
 	ldr	r1, =0x00080A62
 	str	r1, [r0, #DMC_DIRECT_CMD_OFFSET]
 
-	ldr	r1, =0x000903C4
+	ldr	r1, =0x00090384			/* 0x000903C4 */
 	str	r1, [r0, #DMC_DIRECT_CMD_OFFSET]
 
-	ldr	r1, =0x00090044
+	ldr	r1, =0x00090004			/* 0x00090044 */
 	str	r1, [r0, #DMC_DIRECT_CMD_OFFSET]
 
 	/* auto refresh */
