{
        /* reset master mode */
        rcar_i2c_write(priv, ICMIER, 0);
-       rcar_i2c_write(priv, ICMCR, 0);
+       rcar_i2c_write(priv, ICMCR, MDBS);
        rcar_i2c_write(priv, ICMSR, 0);
-       rcar_i2c_write(priv, ICMAR, 0);
+       /* start clock */
+       rcar_i2c_write(priv, ICCCR, priv->icccr);
 }
 
 static int rcar_i2c_bus_barrier(struct rcar_i2c_priv *priv)
 
        pm_runtime_get_sync(dev);
 
-       /*-------------- spin lock -----------------*/
-       spin_lock_irqsave(&priv->lock, flags);
-
-       rcar_i2c_init(priv);
-       /* start clock */
-       rcar_i2c_write(priv, ICCCR, priv->icccr);
-
-       spin_unlock_irqrestore(&priv->lock, flags);
-       /*-------------- spin unlock -----------------*/
-
        ret = rcar_i2c_bus_barrier(priv);
        if (ret < 0)
                goto out;
        if (ret < 0)
                goto out_pm_put;
 
+       rcar_i2c_init(priv);
        pm_runtime_put(dev);
 
        irq = platform_get_irq(pdev, 0);