summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorJonathan Hunter <jonathanh@nvidia.com>2019-02-21 15:00:38 +0000
committerWolfram Sang <wsa@the-dreams.de>2019-02-23 11:08:44 +0100
commit89328b1b81858f724c6e3716eadf2a280f748ba0 (patch)
tree654bbe825331ddfa4760d7c0e06f0409d496d27a /drivers/i2c
parentbb6bdd51c838e8d046a84502f12619de4fd58d69 (diff)
downloadlwn-89328b1b81858f724c6e3716eadf2a280f748ba0.tar.gz
lwn-89328b1b81858f724c6e3716eadf2a280f748ba0.zip
i2c: tegra: Only display error messages if DMA setup fails
Commit 86c92b9965ff ("i2c: tegra: Add DMA support") added DMA support to the Tegra I2C driver for Tegra devices that support the APB DMA controller. One side-effect of this change is that even for Tegra devices that do not have an APB DMA controller and hence, cannot support DMA tranfers for I2C transactions, the following error messages are still displayed ... ERR KERN tegra-i2c 31c0000.i2c: cannot use DMA: -19 ERR KERN tegra-i2c 31c0000.i2c: falling back to PIO There is no point displaying the above messages for devices that do not have an APB DMA controller and so fix this by returning from the tegra_i2c_init_dma() function if 'has_apb_dma' is not true. Furthermore, if CONFIG_TEGRA20_APB_DMA is not set, then rather than printing an error message, print an debug message as for whatever reason this could be intentional. Fixes: 86c92b9965ff ("i2c: tegra: Add DMA support") Signed-off-by: Jonathan Hunter <jonathanh@nvidia.com> Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-tegra.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index 31ff67015255..ebaa78d17d6e 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -414,10 +414,12 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev)
dma_addr_t dma_phys;
int err;
- if (!IS_ENABLED(CONFIG_TEGRA20_APB_DMA) ||
- !i2c_dev->hw->has_apb_dma) {
- err = -ENODEV;
- goto err_out;
+ if (!i2c_dev->hw->has_apb_dma)
+ return 0;
+
+ if (!IS_ENABLED(CONFIG_TEGRA20_APB_DMA)) {
+ dev_dbg(i2c_dev->dev, "Support for APB DMA not enabled!\n");
+ return 0;
}
chan = dma_request_slave_channel_reason(i2c_dev->dev, "rx");