From 6ff3f35b0662ed83ac21b61f131de77175b95957 Mon Sep 17 00:00:00 2001 From: Shinya Kuribayashi Date: Mon, 16 Nov 2009 20:40:14 +0900 Subject: [PATCH] --- yaml --- r: 173867 b: refs/heads/master c: 6d1ea0f6afde6887d6dea2ace1714a23d9b5820d h: refs/heads/master i: 173865: 45d65d2bc08ea5d1d66a4040a7bb57c2263fc791 173863: 16fef1decdbb12fe6a27862b36b3952c5372a940 v: v3 --- [refs] | 2 +- trunk/drivers/i2c/busses/i2c-designware.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 72ceef398cde..015f1fb89f3f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a0e06ea64cd2b4b7eee9c196bf623d6c9e44df7c +refs/heads/master: 6d1ea0f6afde6887d6dea2ace1714a23d9b5820d diff --git a/trunk/drivers/i2c/busses/i2c-designware.c b/trunk/drivers/i2c/busses/i2c-designware.c index 4534d4554ff4..9e18ef97f156 100644 --- a/trunk/drivers/i2c/busses/i2c-designware.c +++ b/trunk/drivers/i2c/busses/i2c-designware.c @@ -496,13 +496,18 @@ static int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev) unsigned long abort_source = dev->abort_source; int i; + if (abort_source & DW_IC_TX_ABRT_NOACK) { + for_each_bit(i, &abort_source, ARRAY_SIZE(abort_sources)) + dev_dbg(dev->dev, + "%s: %s\n", __func__, abort_sources[i]); + return -EREMOTEIO; + } + for_each_bit(i, &abort_source, ARRAY_SIZE(abort_sources)) dev_err(dev->dev, "%s: %s\n", __func__, abort_sources[i]); if (abort_source & DW_IC_TX_ARB_LOST) return -EAGAIN; - else if (abort_source & DW_IC_TX_ABRT_NOACK) - return -EREMOTEIO; else if (abort_source & DW_IC_TX_ABRT_GCALL_READ) return -EINVAL; /* wrong msgs[] data */ else