else
                ret = 0;
 
-       reset_control_assert(priv->rcdev);
+       if (priv->version != BRCM_SATA_BCM7216)
+               reset_control_assert(priv->rcdev);
 
        return ret;
 }
        struct brcm_ahci_priv *priv = hpriv->plat_data;
        int ret = 0;
 
-       ret = reset_control_deassert(priv->rcdev);
+       if (priv->version == BRCM_SATA_BCM7216)
+               ret = reset_control_reset(priv->rcdev);
+       else
+               ret = reset_control_deassert(priv->rcdev);
        if (ret)
                return ret;
 
                break;
        }
 
-       ret = reset_control_deassert(priv->rcdev);
+       if (priv->version == BRCM_SATA_BCM7216)
+               ret = reset_control_reset(priv->rcdev);
+       else
+               ret = reset_control_deassert(priv->rcdev);
        if (ret)
                return ret;
 
 out_disable_clks:
        ahci_platform_disable_clks(hpriv);
 out_reset:
-       reset_control_assert(priv->rcdev);
+       if (priv->version != BRCM_SATA_BCM7216)
+               reset_control_assert(priv->rcdev);
        return ret;
 }