/* Clock Reset Register */
        IMX_CLOCK_RESET                         = 0x7f3f,
        IMX_CLOCK_RESET_RESET                   = 1 << 0,
+       /* IMX8QM SATA specific control registers */
+       IMX8QM_SATA_AHCI_PTC                    = 0xc8,
+       IMX8QM_SATA_AHCI_PTC_RXWM_MASK          = GENMASK(6, 0),
+       IMX8QM_SATA_AHCI_PTC_RXWM               = 0x29,
 };
 
 enum ahci_imx_type {
        phy_power_off(imxpriv->cali_phy0);
        phy_exit(imxpriv->cali_phy0);
 
+       /* RxWaterMark setting */
+       val = readl(hpriv->mmio + IMX8QM_SATA_AHCI_PTC);
+       val &= ~IMX8QM_SATA_AHCI_PTC_RXWM_MASK;
+       val |= IMX8QM_SATA_AHCI_PTC_RXWM;
+       writel(val, hpriv->mmio + IMX8QM_SATA_AHCI_PTC);
+
        return 0;
 
 err_sata_phy_exit: