i2c: qup: add probe path for Centriq ACPI devices
authorAustin Christ <austinwc@codeaurora.org>
Thu, 10 May 2018 16:13:54 +0000 (10:13 -0600)
committerWolfram Sang <wsa@the-dreams.de>
Tue, 29 May 2018 17:51:17 +0000 (19:51 +0200)
Add support for Qualcomm Centriq devices that are qup-v2 compatible but
do not support DMA, so nodma needs to be set.

Signed-off-by: Austin Christ <austinwc@codeaurora.org>
Reviewed-by: Sricharan R <sricharan@codeaurora.org>
Reviewed-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-qup.c

index 904dfec..c024f85 100644 (file)
@@ -1648,6 +1648,14 @@ static void qup_i2c_disable_clocks(struct qup_i2c_dev *qup)
        clk_disable_unprepare(qup->pclk);
 }
 
+#if IS_ENABLED(CONFIG_ACPI)
+static const struct acpi_device_id qup_i2c_acpi_match[] = {
+       { "QCOM8010"},
+       { },
+};
+MODULE_DEVICE_TABLE(acpi, qup_i2c_acpi_match);
+#endif
+
 static int qup_i2c_probe(struct platform_device *pdev)
 {
        static const int blk_sizes[] = {4, 16, 32};
@@ -1682,7 +1690,10 @@ static int qup_i2c_probe(struct platform_device *pdev)
        } else {
                qup->adap.algo = &qup_i2c_algo_v2;
                is_qup_v1 = false;
-               ret = qup_i2c_req_dma(qup);
+               if (acpi_match_device(qup_i2c_acpi_match, qup->dev))
+                       goto nodma;
+               else
+                       ret = qup_i2c_req_dma(qup);
 
                if (ret == -EPROBE_DEFER)
                        goto fail_dma;
@@ -1959,14 +1970,6 @@ static const struct of_device_id qup_i2c_dt_match[] = {
 };
 MODULE_DEVICE_TABLE(of, qup_i2c_dt_match);
 
-#if IS_ENABLED(CONFIG_ACPI)
-static const struct acpi_device_id qup_i2c_acpi_match[] = {
-       { "QCOM8010"},
-       { },
-};
-MODULE_DEVICE_TABLE(acpi, qup_i2c_acpi_match);
-#endif
-
 static struct platform_driver qup_i2c_driver = {
        .probe  = qup_i2c_probe,
        .remove = qup_i2c_remove,