return PTR_ERR(imxpriv->sata_ref_clk);
        }
 
-       imxpriv->ahb_clk = devm_clk_get(dev, "ahb");
-       if (IS_ERR(imxpriv->ahb_clk)) {
-               dev_err(dev, "can't get ahb clock.\n");
-               return PTR_ERR(imxpriv->ahb_clk);
-       }
-
        if (imxpriv->type == AHCI_IMX6Q || imxpriv->type == AHCI_IMX6QP) {
                u32 reg_value;
 
                goto disable_clk;
 
        /*
-        * Configure the HWINIT bits of the HOST_CAP and HOST_PORTS_IMPL,
-        * and IP vendor specific register IMX_TIMER1MS.
-        * Configure CAP_SSS (support stagered spin up).
-        * Implement the port0.
-        * Get the ahb clock rate, and configure the TIMER1MS register.
+        * Configure the HWINIT bits of the HOST_CAP and HOST_PORTS_IMPL.
+        * Set CAP_SSS (support stagered spin up) and Implement the port0.
         */
        reg_val = readl(hpriv->mmio + HOST_CAP);
        if (!(reg_val & HOST_CAP_SSS)) {
                writel(reg_val, hpriv->mmio + HOST_PORTS_IMPL);
        }
 
-       reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000;
-       writel(reg_val, hpriv->mmio + IMX_TIMER1MS);
+       if (imxpriv->type != AHCI_IMX8QM) {
+               /*
+                * Get AHB clock rate and configure the vendor specified
+                * TIMER1MS register on i.MX53, i.MX6Q and i.MX6QP only.
+                */
+               imxpriv->ahb_clk = devm_clk_get(dev, "ahb");
+               if (IS_ERR(imxpriv->ahb_clk)) {
+                       dev_err(dev, "Failed to get ahb clock\n");
+                       goto disable_sata;
+               }
+               reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000;
+               writel(reg_val, hpriv->mmio + IMX_TIMER1MS);
+       }
 
        ret = ahci_platform_init_host(pdev, hpriv, &ahci_imx_port_info,
                                      &ahci_platform_sht);