return 0;
 }
 
-/* TODO: implement the I2C deblocking function */
-int i2c_make_abort(void)
+/* I2C deblocking uses the algorithm defined in board/keymile/common/common.c
+ * 2 dedicated QRIO GPIOs externally pull the SCL and SDA lines
+ * For I2C only the low state is activly driven and high state is pulled-up
+ * by a resistor. Therefore the deblock GPIOs are used
+ *  -> as an active output to drive a low state
+ *  -> as an open-drain input to have a pulled-up high state
+ */
+
+/* QRIO GPIOs used for deblocking */
+#define DEBLOCK_PORT1  GPIO_A
+#define DEBLOCK_SCL1   20
+#define DEBLOCK_SDA1   21
+
+/* By default deblock GPIOs are floating */
+static void i2c_deblock_gpio_cfg(void)
+{
+       /* set I2C bus 1 deblocking GPIOs input, but 0 value for open drain */
+       qrio_gpio_direction_input(DEBLOCK_PORT1, DEBLOCK_SCL1);
+       qrio_gpio_direction_input(DEBLOCK_PORT1, DEBLOCK_SDA1);
+
+       qrio_set_gpio(DEBLOCK_PORT1, DEBLOCK_SCL1, 0);
+       qrio_set_gpio(DEBLOCK_PORT1, DEBLOCK_SDA1, 0);
+}
+
+void set_sda(int state)
+{
+       qrio_set_opendrain_gpio(DEBLOCK_PORT1, DEBLOCK_SDA1, state);
+}
+
+void set_scl(int state)
+{
+       qrio_set_opendrain_gpio(DEBLOCK_PORT1, DEBLOCK_SCL1, state);
+}
+
+int get_sda(void)
+{
+       return qrio_get_gpio(DEBLOCK_PORT1, DEBLOCK_SDA1);
+}
+
+int get_scl(void)
 {
-       return 1;
+       return qrio_get_gpio(DEBLOCK_PORT1, DEBLOCK_SCL1);
 }
 
+
 #define ZL30158_RST    8
 #define ZL30343_RST    9
 
        return 66666666;
 }
 
+int misc_init_f(void)
+{
+       /* configure QRIO pis for i2c deblocking */
+       i2c_deblock_gpio_cfg();
+
+       return 0;
+}
+
 #define NUM_SRDS_BANKS 2
 #define PHY_RST                15
 
 
 
 #define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
+#define CONFIG_MISC_INIT_F
 #define CONFIG_MISC_INIT_R
 #define CONFIG_LAST_STAGE_INIT
 
 #define CONFIG_FIT_VERBOSE     /* enable fit_format_{error,warning}() */
 
 /* I2C */
+
 #define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_INIT_BOARD
+#define CONFIG_SYS_I2C_SPEED           100000 /* deblocking */
 #define CONFIG_SYS_NUM_I2C_BUSES       3
 #define CONFIG_SYS_I2C_MAX_HOPS                1
 #define CONFIG_SYS_I2C_FSL             /* Use FSL I2C driver */
                                        {0, {{I2C_MUX_PCA9547, 0x70, 1 } } }, \
                                        {0, {{I2C_MUX_PCA9547, 0x70, 2 } } }, \
                                }
+#ifndef __ASSEMBLY__
+void set_sda(int state);
+void set_scl(int state);
+int get_sda(void);
+int get_scl(void);
+#endif
 
 #define CONFIG_KM_IVM_BUS              1       /* I2C1 (Mux-Port 1)*/