diff --git a/cpu/74xx_7xx/cpu.c b/cpu/74xx_7xx/cpu.c
index c3aadca..fc3b092 100644
--- a/cpu/74xx_7xx/cpu.c
+++ b/cpu/74xx_7xx/cpu.c
@@ -303,7 +303,7 @@
 
 #ifdef CONFIG_OF_FLAT_TREE
 void
-ft_cpu_setup(void *blob, bd_t *bd)
+ft_cpu_setup (void *blob, bd_t *bd)
 {
 	u32 *p;
 	ulong clock;
@@ -311,18 +311,18 @@
 		
 	clock = bd->bi_busfreq;
 	
-	p = ft_get_prop(blob, "/cpus/" OF_CPU "/bus-frequency", &len);
+	p = ft_get_prop (blob, "/cpus/" OF_CPU "/bus-frequency", &len);
 	if (p != NULL)
-		*p = cpu_to_be32(clock);
+		*p = cpu_to_be32 (clock);
 
 #if defined(CONFIG_TSI108_ETH)
-	p = ft_get_prop(blob, "/" OF_TSI "/ethernet@6200/address", &len);
-		memcpy(p, bd->bi_enetaddr, 6);
+	p = ft_get_prop (blob, "/" OF_TSI "/ethernet@6200/address", &len);
+		memcpy (p, bd->bi_enetaddr, 6);
 #endif
- 
+
 #if defined(CONFIG_HAS_ETH1)
-	p = ft_get_prop(blob, "/" OF_TSI "/ethernet@6600/address", &len);
-		memcpy(p, bd->bi_enet1addr, 6);
+	p = ft_get_prop (blob, "/" OF_TSI "/ethernet@6600/address", &len);
+		memcpy (p, bd->bi_enet1addr, 6);
 #endif
 }
 #endif
diff --git a/cpu/74xx_7xx/speed.c b/cpu/74xx_7xx/speed.c
index d520794..af4aca5 100644
--- a/cpu/74xx_7xx/speed.c
+++ b/cpu/74xx_7xx/speed.c
@@ -31,7 +31,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-extern unsigned long get_board_bus_clk(void);
+extern unsigned long get_board_bus_clk (void);
 
 static const int hid1_multipliers_x_10[] = {
 	25,	/* 0000 - 2.5x */
@@ -53,38 +53,38 @@
 };
 
 static const int hid1_7447A_multipliers_x_10[] = {
-	115,    /* 00000 - 11.5x  */
-	170,    /* 00001 - 17x    */
-	75,     /* 00010 -  7.5x  */
-	150,    /* 00011 - 15x    */
-	70,     /* 00100 -  7x    */
-	180,    /* 00101 - 18x    */
-	10,     /* 00110 - bypass */
-	200,    /* 00111 - 20x    */
-	20,     /* 01000 -  2x    */
-	210,    /* 01001 - 21x    */
-	65,     /* 01010 -  6.5x  */
-	130,    /* 01011 - 13x    */
-	85,     /* 01100 -  8.5x  */
-	240,    /* 01101 - 13x    */
-	95,     /* 01110 -  9.5x  */
-	90,     /* 01111 -  9x    */
-	30,     /* 10000 -  3x    */
-	105,    /* 10001 - 10.5x  */
-	55,     /* 10010 -  5.5x  */
-	110,    /* 10011 - 11x    */
-	40,     /* 10100 -  4x    */
-	100,    /* 10101 - 10x    */
-	50,     /* 10110 -  5x    */
-	120,    /* 10111 - 12x    */
-	80,     /* 11000 -  8x    */
-	140,    /* 11001 - 14x    */
-	60,     /* 11010 -  6x    */
-	160,    /* 11011 - 16x    */
-	135,    /* 11100 - 13.5x  */
-	280,    /* 11101 - 28x    */
-	0,      /* 11110 - off    */
-	125     /* 11111 - 12.5x  */
+	115,	/* 00000 - 11.5x  */
+	170,	/* 00001 - 17x    */
+	75,	/* 00010 -  7.5x  */
+	150,	/* 00011 - 15x    */
+	70,	/* 00100 -  7x    */
+	180,	/* 00101 - 18x    */
+	10,	/* 00110 - bypass */
+	200,	/* 00111 - 20x    */
+	20,	/* 01000 -  2x    */
+	210,	/* 01001 - 21x    */
+	65,	/* 01010 -  6.5x  */
+	130,	/* 01011 - 13x    */
+	85,	/* 01100 -  8.5x  */
+	240,	/* 01101 - 13x    */
+	95,	/* 01110 -  9.5x  */
+	90,	/* 01111 -  9x    */
+	30,	/* 10000 -  3x    */
+	105,	/* 10001 - 10.5x  */
+	55,	/* 10010 -  5.5x  */
+	110,	/* 10011 - 11x    */
+	40,	/* 10100 -  4x    */
+	100,	/* 10101 - 10x    */
+	50,	/* 10110 -  5x    */
+	120,	/* 10111 - 12x    */
+	80,	/* 11000 -  8x    */
+	140,	/* 11001 - 14x    */
+	60,	/* 11010 -  6x    */
+	160,	/* 11011 - 16x    */
+	135,	/* 11100 - 13.5x  */
+	280,	/* 11101 - 28x    */
+	0,	/* 11110 - off    */
+	125	/* 11111 - 12.5x  */
 };
 
 static const int hid1_fx_multipliers_x_10[] = {
@@ -127,16 +127,17 @@
 	ulong clock = 0;
 
 #ifdef CFG_CONFIG_BUS_CLK
-	gd->bus_clk = get_board_bus_clk();
+	gd->bus_clk = get_board_bus_clk ();	/* bus clock is configurable */
 #else
-	gd->bus_clk = CFG_BUS_CLK;
+	gd->bus_clk = CFG_BUS_CLK;	/* bus clock is a fixed frequency */
 #endif
 
 	/* calculate the clock frequency based upon the CPU type */
 	switch (get_cpu_type()) {
 	case CPU_7447A:
 	case CPU_7448:
-		clock = (gd->bus_clk / 10) * hid1_7447A_multipliers_x_10[(get_hid1 () >> 12) & 0x1F];
+		clock = (gd->bus_clk / 10) *
+			hid1_7447A_multipliers_x_10[(get_hid1 () >> 12) & 0x1F];
 		break;
 		
 	case CPU_7455:
@@ -146,12 +147,14 @@
 		 * Make sure division is done before multiplication to prevent 32-bit
 		 * arithmetic overflows which will cause a negative number
 		 */
-		clock = (gd->bus_clk / 10) * hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF];
+		clock = (gd->bus_clk / 10) *
+			hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF];
 		break;
 
 	case CPU_750GX:
 	case CPU_750FX:
-		clock = gd->bus_clk * hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10;
+		clock = gd->bus_clk *
+			hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10;
 		break;
 
 	case CPU_7450:
@@ -168,7 +171,8 @@
 		 * Make sure division is done before multiplication to prevent 32-bit
 		 * arithmetic overflows which will cause a negative number
 		 */
-		clock = (gd->bus_clk / 10) * hid1_multipliers_x_10[get_hid1 () >> 28];
+		clock = (gd->bus_clk / 10) *
+			hid1_multipliers_x_10[get_hid1 () >> 28];
 		break;
 
 	case CPU_UNKNOWN:
