]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
i2c-eg20t: Merge two functions
authorTomoya MORINAGA <tomoya.rohm@gmail.com>
Thu, 19 Apr 2012 06:38:05 +0000 (15:38 +0900)
committerWolfram Sang <w.sang@pengutronix.de>
Sat, 12 May 2012 12:28:13 +0000 (14:28 +0200)
By previous patch, pch_i2c_wait_for_xfer_complete can be merged
to pch_i2c_wait_for_check_xfer.

Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
drivers/i2c/busses/i2c-eg20t.c

index 943084a3b690ff1361fe4ace4c5fec9b157c8f3a..9da12cecb3bb06531eb45ea8531b3b1cbc512651 100644 (file)
@@ -316,33 +316,6 @@ static void pch_i2c_start(struct i2c_algo_pch_data *adap)
        pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_START);
 }
 
-/**
- * pch_i2c_wait_for_xfer_complete() - initiates a wait for the tx complete event
- * @adap:      Pointer to struct i2c_algo_pch_data.
- */
-static s32 pch_i2c_wait_for_xfer_complete(struct i2c_algo_pch_data *adap)
-{
-       long ret;
-       ret = wait_event_timeout(pch_event,
-                       (adap->pch_event_flag != 0), msecs_to_jiffies(1000));
-
-       if (ret == 0) {
-               pch_err(adap, "timeout: %x\n", adap->pch_event_flag);
-               adap->pch_event_flag = 0;
-               return -ETIMEDOUT;
-       }
-
-       if (adap->pch_event_flag & I2C_ERROR_MASK) {
-               pch_err(adap, "error bits set: %x\n", adap->pch_event_flag);
-               adap->pch_event_flag = 0;
-               return -EIO;
-       }
-
-       adap->pch_event_flag = 0;
-
-       return 0;
-}
-
 /**
  * pch_i2c_getack() - to confirm ACK/NACK
  * @adap:      Pointer to struct i2c_algo_pch_data.
@@ -375,27 +348,33 @@ static void pch_i2c_stop(struct i2c_algo_pch_data *adap)
 
 static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap)
 {
-       int rtn;
-
-       rtn = pch_i2c_wait_for_xfer_complete(adap);
-       if (rtn == 0) {
-               if (pch_i2c_getack(adap)) {
-                       pch_dbg(adap, "Receive NACK for slave address"
-                               "setting\n");
-                       return -EIO;
-               }
-       } else if (rtn == -EIO) { /* Arbitration Lost */
+       long ret;
+
+       ret = wait_event_timeout(pch_event,
+                       (adap->pch_event_flag != 0), msecs_to_jiffies(1000));
+       if (!ret) {
+               pch_err(adap, "%s:wait-event timeout\n", __func__);
+               adap->pch_event_flag = 0;
+               pch_i2c_stop(adap);
+               pch_i2c_init(adap);
+               return -ETIMEDOUT;
+       }
+
+       if (adap->pch_event_flag & I2C_ERROR_MASK) {
                pch_err(adap, "Lost Arbitration\n");
+               adap->pch_event_flag = 0;
                pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMAL_BIT);
                pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMIF_BIT);
                pch_i2c_init(adap);
                return -EAGAIN;
-       } else { /* wait-event timeout */
-               pch_err(adap, "%s(L.%d):wait-event timeout\n",
-                       __func__, __LINE__);
-               pch_i2c_stop(adap);
-               pch_i2c_init(adap);
-               return -ETIME;
+       }
+
+       adap->pch_event_flag = 0;
+
+       if (pch_i2c_getack(adap)) {
+               pch_dbg(adap, "Receive NACK for slave address"
+                       "setting\n");
+               return -EIO;
        }
 
        return 0;