if (!clk_freq || clk_freq > I2C_MAX_FAST_MODE_PLUS_FREQ) {
                dev_err(qup->dev, "clock frequency not supported %d\n",
                        clk_freq);
-               return -EINVAL;
+               ret = -EINVAL;
+               goto fail_dma;
        }
 
        qup->base = devm_platform_ioremap_resource(pdev, 0);
-       if (IS_ERR(qup->base))
-               return PTR_ERR(qup->base);
+       if (IS_ERR(qup->base)) {
+               ret = PTR_ERR(qup->base);
+               goto fail_dma;
+       }
 
        qup->irq = platform_get_irq(pdev, 0);
-       if (qup->irq < 0)
-               return qup->irq;
+       if (qup->irq < 0) {
+               ret = qup->irq;
+               goto fail_dma;
+       }
 
        if (has_acpi_companion(qup->dev)) {
                ret = device_property_read_u32(qup->dev,
                qup->clk = devm_clk_get(qup->dev, "core");
                if (IS_ERR(qup->clk)) {
                        dev_err(qup->dev, "Could not get core clock\n");
-                       return PTR_ERR(qup->clk);
+                       ret = PTR_ERR(qup->clk);
+                       goto fail_dma;
                }
 
                qup->pclk = devm_clk_get(qup->dev, "iface");
                if (IS_ERR(qup->pclk)) {
                        dev_err(qup->dev, "Could not get iface clock\n");
-                       return PTR_ERR(qup->pclk);
+                       ret = PTR_ERR(qup->pclk);
+                       goto fail_dma;
                }
                qup_i2c_enable_clocks(qup);
                src_clk_freq = clk_get_rate(qup->clk);