[coreboot] New patch to review for coreboot: ccf74f6 ASRock E350M1: Unify `dimmSpd.c` with the one from Persimmon

Paul Menzel (paulepanter@users.sourceforge.net) gerrit at coreboot.org
Thu Feb 21 12:09:46 CET 2013


Paul Menzel (paulepanter at users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2469

-gerrit

commit ccf74f677f47a1d3924080904659ee961fc86427
Author: Paul Menzel <paulepanter at users.sourceforge.net>
Date:   Wed Feb 20 12:42:46 2013 +0100

    ASRock E350M1: Unify `dimmSpd.c` with the one from Persimmon
    
    The whitespace cleanup in the following commit was not done
    the ASRock E350M1.
    
        commit 36abff1dc8e74beafa47ad83de17416681970916
        Author: Marc Jones <marcj303 at gmail.com>
        Date:   Mon Nov 7 23:26:14 2011 -0700
    
            Cleanup Persimmon mainboard whitespace.
    
            Reviewed-on: http://review.coreboot.org/427
    
    Do this now for `dimmSpd.c`.
    
        $ diff --suppress-common-lines -U0 src/mainboard/asrock/e350m1/dimmSpd.c src/mainboard/amd/persimmon/dimmSpd.c | grep ^- | wc -l
        106
        $ diff -u -w src/mainboard/asrock/e350m1/dimmSpd.c src/mainboard/amd/persimmon/dimmSpd.c
        --- src/mainboard/asrock/e350m1/dimmSpd.c	2013-02-20 12:05:15.096240632 +0100
        +++ src/mainboard/amd/persimmon/dimmSpd.c	2013-02-20 12:05:15.084240614 +0100
        @@ -35,7 +35,7 @@
            {
            // socket 0
               {
        -         {0xA0, 0xA4},  // channel 0 dimms
        +		{0xA0, 0xA2},	// channel 0 dimms
                  {0x00, 0x00},  // channel 1 dimms
               },
            // socket 1
        @@ -65,8 +65,7 @@
    
            // time limit to avoid hanging for unexpected error status (should never happen)
            limit = __rdtsc () + 2000000000 / 10;
        -   for (;;)
        -      {
        +	for (;;) {
               status = __inbyte (iobase);
               if (__rdtsc () > limit) break;
               if ((status & 2) == 0) continue;               // SMBusInterrupt not set, keep waiting
        @@ -95,8 +94,7 @@
    
            // time limit to avoid hanging for unexpected error status
            limit = __rdtsc () + 2000000000 / 10;
        -   for (;;)
        -      {
        +	for (;;) {
               status = __inbyte (iobase);
               if (__rdtsc () > limit) break;
               if ((status & 2) == 0) continue;               // SMBusInterrupt not set, keep waiting
        @@ -127,8 +125,7 @@
            if (error) return error;
    
            /* read the remaining bytes using auto-increment for speed */
        -   for (index = 1; index < count; index++)
        -      {
        +	for (index = 1; index < count; index++) {
               error = readSmbusByte (iobase, SmbusSlaveAddress, &buffer [index]);
               if (error) return error;
               }
    
    After:
    
        $ diff -u -w src/mainboard/asrock/e350m1/dimmSpd.c src/mainboard/amd/persimmon/dimmSpd.c
        --- src/mainboard/asrock/e350m1/dimmSpd.c	2013-02-20 14:04:44.002009899 +0100
        +++ src/mainboard/amd/persimmon/dimmSpd.c	2013-02-20 13:56:49.633790834 +0100
        @@ -35,7 +35,7 @@
        {
         	// socket 0
         	{
        -		{0xA0, 0xA4},	// channel 0 dimms
        +		{0xA0, 0xA2},	// channel 0 dimms
         		{0x00, 0x00},	// channel 1 dimms
         	},
         	// socket 1
    
    Change-Id: Iecb146895a266fd62995ddb7ac716343d7bde26d
    Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>
---
 src/mainboard/asrock/e350m1/dimmSpd.c | 207 +++++++++++++++++-----------------
 1 file changed, 102 insertions(+), 105 deletions(-)

diff --git a/src/mainboard/asrock/e350m1/dimmSpd.c b/src/mainboard/asrock/e350m1/dimmSpd.c
index 62aedd2..7883a4a 100644
--- a/src/mainboard/asrock/e350m1/dimmSpd.c
+++ b/src/mainboard/asrock/e350m1/dimmSpd.c
@@ -14,7 +14,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include "Porting.h"
@@ -31,19 +31,19 @@ AGESA_STATUS AmdMemoryReadSPD (UINT32 unused1, UINT32 unused2, AGESA_READ_SPD_PA
 * SPD address table - porting required
 */
 
-static const UINT8 spdAddressLookup [2] [2] [4] =  // socket, channel, dimm
-   {
-   // socket 0
-      {
-         {0xA0, 0xA4},  // channel 0 dimms
-         {0x00, 0x00},  // channel 1 dimms
-      },
-   // socket 1
-      {
-         {0x00, 0x00},  // channel 0 dimms
-         {0x00, 0x00},  // channel 1 dimms
-      },
-   };
+static const UINT8 spdAddressLookup [2] [2] [4] =	// socket, channel, dimm
+{
+	// socket 0
+	{
+		{0xA0, 0xA4},	// channel 0 dimms
+		{0x00, 0x00},	// channel 1 dimms
+	},
+	// socket 1
+	{
+		{0x00, 0x00},	// channel 0 dimms
+		{0x00, 0x00},	// channel 1 dimms
+	},
+};
 
 /*-----------------------------------------------------------------------------
  *
@@ -51,117 +51,114 @@ static const UINT8 spdAddressLookup [2] [2] [4] =  // socket, channel, dimm
  */
 
 static int readSmbusByteData (int iobase, int address, char *buffer, int offset)
-   {
-   unsigned int status;
-   UINT64 limit;
-
-   address |= 1; // set read bit
-
-   __outbyte (iobase + 0, 0xFF);                // clear error status
-   __outbyte (iobase + 1, 0x1F);                // clear error status
-   __outbyte (iobase + 3, offset);              // offset in eeprom
-   __outbyte (iobase + 4, address);             // slave address and read bit
-   __outbyte (iobase + 2, 0x48);                // read byte command
-
-   // time limit to avoid hanging for unexpected error status (should never happen)
-   limit = __rdtsc () + 2000000000 / 10;
-   for (;;)
-      {
-      status = __inbyte (iobase);
-      if (__rdtsc () > limit) break;
-      if ((status & 2) == 0) continue;               // SMBusInterrupt not set, keep waiting
-      if ((status & 1) == 1) continue;               // HostBusy set, keep waiting
-      break;
-      }
-
-   buffer [0] = __inbyte (iobase + 5);
-   if (status == 2) status = 0;                      // check for done with no errors
-   return status;
-   }
+{
+	unsigned int status;
+	UINT64 limit;
+
+	address |= 1; // set read bit
+
+	__outbyte (iobase + 0, 0xFF);				// clear error status
+	__outbyte (iobase + 1, 0x1F);				// clear error status
+	__outbyte (iobase + 3, offset);				// offset in eeprom
+	__outbyte (iobase + 4, address);			// slave address and read bit
+	__outbyte (iobase + 2, 0x48);				// read byte command
+
+	// time limit to avoid hanging for unexpected error status (should never happen)
+	limit = __rdtsc () + 2000000000 / 10;
+	for (;;) {
+		status = __inbyte (iobase);
+		if (__rdtsc () > limit) break;
+		if ((status & 2) == 0) continue;		// SMBusInterrupt not set, keep waiting
+		if ((status & 1) == 1) continue;		// HostBusy set, keep waiting
+		break;
+	}
+
+	buffer [0] = __inbyte (iobase + 5);
+	if (status == 2) status = 0;				// check for done with no errors
+	return status;
+}
 
 /*-----------------------------------------------------------------------------
  *
  * readSmbusByte - read a single SPD byte from the default offset
- *                 this function is faster function readSmbusByteData
+ *				 this function is faster function readSmbusByteData
  */
 
 static int readSmbusByte (int iobase, int address, char *buffer)
-   {
-   unsigned int status;
-   UINT64 limit;
-
-   __outbyte (iobase + 0, 0xFF);                // clear error status
-   __outbyte (iobase + 2, 0x44);                // read command
-
-   // time limit to avoid hanging for unexpected error status
-   limit = __rdtsc () + 2000000000 / 10;
-   for (;;)
-      {
-      status = __inbyte (iobase);
-      if (__rdtsc () > limit) break;
-      if ((status & 2) == 0) continue;               // SMBusInterrupt not set, keep waiting
-      if ((status & 1) == 1) continue;               // HostBusy set, keep waiting
-      break;
-      }
-
-   buffer [0] = __inbyte (iobase + 5);
-   if (status == 2) status = 0;                      // check for done with no errors
-   return status;
-   }
+{
+	unsigned int status;
+	UINT64 limit;
+
+	__outbyte (iobase + 0, 0xFF);				// clear error status
+	__outbyte (iobase + 2, 0x44);				// read command
+
+	// time limit to avoid hanging for unexpected error status
+	limit = __rdtsc () + 2000000000 / 10;
+	for (;;) {
+		status = __inbyte (iobase);
+		if (__rdtsc () > limit) break;
+		if ((status & 2) == 0) continue;		// SMBusInterrupt not set, keep waiting
+		if ((status & 1) == 1) continue;		// HostBusy set, keep waiting
+		break;
+	}
+
+	buffer [0] = __inbyte (iobase + 5);
+	if (status == 2) status = 0;				// check for done with no errors
+	return status;
+}
 
 /*---------------------------------------------------------------------------
  *
  * readspd - Read one or more SPD bytes from a DIMM.
- *           Start with offset zero and read sequentially.
- *           Optimization relies on autoincrement to avoid
- *           sending offset for every byte.
- *          Reads 128 bytes in 7-8 ms at 400 KHz.
+ *			Start with offset zero and read sequentially.
+ *			Optimization relies on autoincrement to avoid
+ *			sending offset for every byte.
+ *			Reads 128 bytes in 7-8 ms at 400 KHz.
  */
 
 static int readspd (int iobase, int SmbusSlaveAddress, char *buffer, int count)
-   {
-   int index, error;
+{
+	int index, error;
 
-   /* read the first byte using offset zero */
-   error = readSmbusByteData (iobase, SmbusSlaveAddress, buffer, 0);
-   if (error) return error;
+	/* read the first byte using offset zero */
+	error = readSmbusByteData (iobase, SmbusSlaveAddress, buffer, 0);
+	if (error) return error;
 
-   /* read the remaining bytes using auto-increment for speed */
-   for (index = 1; index < count; index++)
-      {
-      error = readSmbusByte (iobase, SmbusSlaveAddress, &buffer [index]);
-      if (error) return error;
-      }
+	/* read the remaining bytes using auto-increment for speed */
+	for (index = 1; index < count; index++) {
+		error = readSmbusByte (iobase, SmbusSlaveAddress, &buffer [index]);
+		if (error) return error;
+	}
 
-   return 0;
-   }
+	return 0;
+}
 
 static void writePmReg (int reg, int data)
-   {
-   __outbyte (0xCD6, reg);
-   __outbyte (0xCD7, data);
-   }
+	{
+	__outbyte (0xCD6, reg);
+	__outbyte (0xCD7, data);
+	}
 
 static void setupFch (int ioBase)
-   {
-   writePmReg (0x2D, ioBase >> 8);
-   writePmReg (0x2C, ioBase | 1);
-   writePmReg (0x29, 0x80);
-   writePmReg (0x28, 0x61);
-   __outbyte (ioBase + 0x0E, 66000000 / 400000 / 4); // set SMBus clock to 400 KHz
-   }
+{
+	writePmReg (0x2D, ioBase >> 8);
+	writePmReg (0x2C, ioBase | 1);
+	writePmReg (0x29, 0x80);
+	writePmReg (0x28, 0x61);
+	__outbyte (ioBase + 0x0E, 66000000 / 400000 / 4); // set SMBus clock to 400 KHz
+}
 
 AGESA_STATUS AmdMemoryReadSPD (UINT32 unused1, UINT32 unused2, AGESA_READ_SPD_PARAMS *info)
-   {
-   int spdAddress, ioBase;
-
-   if (info->SocketId     >= DIMENSION (spdAddressLookup      )) return AGESA_ERROR;
-   if (info->MemChannelId >= DIMENSION (spdAddressLookup[0]   )) return AGESA_ERROR;
-   if (info->DimmId       >= DIMENSION (spdAddressLookup[0][0])) return AGESA_ERROR;
-
-   spdAddress = spdAddressLookup [info->SocketId] [info->MemChannelId] [info->DimmId];
-   if (spdAddress == 0) return AGESA_ERROR;
-   ioBase = SMBUS0_BASE_ADDRESS;
-   setupFch (ioBase);
-   return readspd (ioBase, spdAddress, (void *) info->Buffer, 128);
-   }
+{
+	int spdAddress, ioBase;
+
+	if (info->SocketId	 >= DIMENSION (spdAddressLookup		)) return AGESA_ERROR;
+	if (info->MemChannelId >= DIMENSION (spdAddressLookup[0]	)) return AGESA_ERROR;
+	if (info->DimmId		>= DIMENSION (spdAddressLookup[0][0])) return AGESA_ERROR;
+
+	spdAddress = spdAddressLookup [info->SocketId] [info->MemChannelId] [info->DimmId];
+	if (spdAddress == 0) return AGESA_ERROR;
+	ioBase = SMBUS0_BASE_ADDRESS;
+	setupFch (ioBase);
+	return readspd (ioBase, spdAddress, (void *) info->Buffer, 128);
+}



More information about the coreboot mailing list