]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
i2c: stu300: use xfer_atomic callback to bail out early
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 3 Apr 2019 12:40:17 +0000 (14:40 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Tue, 16 Apr 2019 11:08:16 +0000 (13:08 +0200)
Use the new callback to reject atomic transfers.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-stu300.c

index 5503fa171df0dbd3ef73d0e63852d8931f4d47a3..743c161b22c50eb67dacab12d3d519e5059da416 100644 (file)
@@ -328,12 +328,6 @@ static int stu300_start_and_await_event(struct stu300_dev *dev,
 {
        int ret;
 
-       if (unlikely(irqs_disabled())) {
-               /* TODO: implement polling for this case if need be. */
-               WARN(1, "irqs are disabled, cannot poll for event\n");
-               return -EIO;
-       }
-
        /* Lock command issue, fill in an event we wait for */
        spin_lock_irq(&dev->cmd_issue_lock);
        init_completion(&dev->cmd_complete);
@@ -380,13 +374,6 @@ static int stu300_await_event(struct stu300_dev *dev,
 {
        int ret;
 
-       if (unlikely(irqs_disabled())) {
-               /* TODO: implement polling for this case if need be. */
-               dev_err(&dev->pdev->dev, "irqs are disabled on this "
-                       "system!\n");
-               return -EIO;
-       }
-
        /* Is it already here? */
        spin_lock_irq(&dev->cmd_issue_lock);
        dev->cmd_err = STU300_ERROR_NONE;
@@ -846,6 +833,13 @@ static int stu300_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
        return num;
 }
 
+static int stu300_xfer_todo(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
+{
+       /* TODO: implement polling for this case if need be. */
+       WARN(1, "%s: atomic transfers not implemented\n", dev_name(&adap->dev));
+       return -EOPNOTSUPP;
+}
+
 static u32 stu300_func(struct i2c_adapter *adap)
 {
        /* This is the simplest thing you can think of... */
@@ -853,8 +847,9 @@ static u32 stu300_func(struct i2c_adapter *adap)
 }
 
 static const struct i2c_algorithm stu300_algo = {
-       .master_xfer    = stu300_xfer,
-       .functionality  = stu300_func,
+       .master_xfer = stu300_xfer,
+       .master_xfer_atomic = stu300_xfer_todo,
+       .functionality = stu300_func,
 };
 
 static const struct i2c_adapter_quirks stu300_quirks = {