diff --git a/arch/powerpc/cpu/mpc85xx/speed.c b/arch/powerpc/cpu/mpc85xx/speed.c
index 07690f97b16a9ca9e2095233b65f60c4c23ff364..4b8d928956afdfe26cffba7fd4d9d02c6c0146bb 100644
--- a/arch/powerpc/cpu/mpc85xx/speed.c
+++ b/arch/powerpc/cpu/mpc85xx/speed.c
@@ -399,7 +399,8 @@ int get_clocks (void)
 	 * AN2919.
 	 */
 #if defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \
-	defined(CONFIG_MPC8560) || defined(CONFIG_MPC8555)
+	defined(CONFIG_MPC8560) || defined(CONFIG_MPC8555) || \
+	defined(CONFIG_P1022)
 	gd->arch.i2c1_clk = sys_info.freq_systembus;
 #elif defined(CONFIG_MPC8544)
 	/*
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
index 85ec74ba94adbfeedef1e339d10f06a3ded6d034..bc132673a51a73f8c8cac62440c35bdf685a104d 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
@@ -44,6 +44,11 @@ SECTIONS
 	}
 	_edata  =  .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+		KEEP(*(SORT(.u_boot_list*)));
+	}
+
 	. = .;
 	__start___ex_table = .;
 	__ex_table : { *(__ex_table) }
diff --git a/board/freescale/p1022ds/spl.c b/board/freescale/p1022ds/spl.c
index b9dbf81b3f89b0024a0c1c2bca0ee704bc456070..7f151e38cf911b05521f7a53cbf048ad5820cf51 100644
--- a/board/freescale/p1022ds/spl.c
+++ b/board/freescale/p1022ds/spl.c
@@ -102,7 +102,11 @@ void board_init_r(gd_t *gd, ulong dest_addr)
 	env_relocate();
 #endif
 
-	i2c_init(CONFIG_SYS_FSL_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#ifdef CONFIG_SYS_I2C
+	i2c_init_all();
+#else
+	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#endif
 
 	gd->ram_size = initdram(0);
 #ifdef CONFIG_SPL_NAND_BOOT