* [PATCH] i2c: rk3x: support master_xfer_atomic
@ 2020-06-23 12:06 John Keeping
2020-07-03 10:08 ` Heiko Stuebner
2020-07-04 6:46 ` Wolfram Sang
0 siblings, 2 replies; 6+ messages in thread
From: John Keeping @ 2020-06-23 12:06 UTC (permalink / raw)
To: Heiko Stuebner
Cc: John Keeping, linux-arm-kernel, linux-rockchip, linux-i2c, linux-kernel
Enable i2c transactions in irq disabled contexts like poweroff where the
PMIC is connected via i2c.
Signed-off-by: John Keeping <john@metanate.com>
---
drivers/i2c/busses/i2c-rk3x.c | 39 +++++++++++++++++++++++++++++++----
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
index 15324bfbc6cb..8e3cc85d1921 100644
--- a/drivers/i2c/busses/i2c-rk3x.c
+++ b/drivers/i2c/busses/i2c-rk3x.c
@@ -10,6 +10,7 @@
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
+#include <linux/iopoll.h>
#include <linux/errno.h>
#include <linux/err.h>
#include <linux/platform_device.h>
@@ -1040,8 +1041,21 @@ static int rk3x_i2c_setup(struct rk3x_i2c *i2c, struct i2c_msg *msgs, int num)
return ret;
}
-static int rk3x_i2c_xfer(struct i2c_adapter *adap,
- struct i2c_msg *msgs, int num)
+static int rk3x_i2c_wait_xfer_poll(struct rk3x_i2c *i2c)
+{
+ ktime_t timeout = ktime_add_ms(ktime_get(), WAIT_TIMEOUT);
+
+ while (READ_ONCE(i2c->busy) &&
+ ktime_compare(ktime_get(), timeout) < 0) {
+ udelay(5);
+ rk3x_i2c_irq(0, i2c);
+ }
+
+ return !i2c->busy;
+}
+
+static int rk3x_i2c_xfer_common(struct i2c_adapter *adap,
+ struct i2c_msg *msgs, int num, bool polling)
{
struct rk3x_i2c *i2c = (struct rk3x_i2c *)adap->algo_data;
unsigned long timeout, flags;
@@ -1075,8 +1089,12 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
rk3x_i2c_start(i2c);
- timeout = wait_event_timeout(i2c->wait, !i2c->busy,
- msecs_to_jiffies(WAIT_TIMEOUT));
+ if (!polling) {
+ timeout = wait_event_timeout(i2c->wait, !i2c->busy,
+ msecs_to_jiffies(WAIT_TIMEOUT));
+ } else {
+ timeout = rk3x_i2c_wait_xfer_poll(i2c);
+ }
spin_lock_irqsave(&i2c->lock, flags);
@@ -1110,6 +1128,18 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
return ret < 0 ? ret : num;
}
+static int rk3x_i2c_xfer(struct i2c_adapter *adap,
+ struct i2c_msg *msgs, int num)
+{
+ return rk3x_i2c_xfer_common(adap, msgs, num, false);
+}
+
+static int rk3x_i2c_xfer_polling(struct i2c_adapter *adap,
+ struct i2c_msg *msgs, int num)
+{
+ return rk3x_i2c_xfer_common(adap, msgs, num, true);
+}
+
static __maybe_unused int rk3x_i2c_resume(struct device *dev)
{
struct rk3x_i2c *i2c = dev_get_drvdata(dev);
@@ -1126,6 +1156,7 @@ static u32 rk3x_i2c_func(struct i2c_adapter *adap)
static const struct i2c_algorithm rk3x_i2c_algorithm = {
.master_xfer = rk3x_i2c_xfer,
+ .master_xfer_atomic = rk3x_i2c_xfer_polling,
.functionality = rk3x_i2c_func,
};
--
2.27.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] i2c: rk3x: support master_xfer_atomic
2020-06-23 12:06 [PATCH] i2c: rk3x: support master_xfer_atomic John Keeping
@ 2020-07-03 10:08 ` Heiko Stuebner
2020-07-04 6:46 ` Wolfram Sang
1 sibling, 0 replies; 6+ messages in thread
From: Heiko Stuebner @ 2020-07-03 10:08 UTC (permalink / raw)
To: John Keeping; +Cc: linux-arm-kernel, linux-rockchip, linux-i2c, linux-kernel
Am Dienstag, 23. Juni 2020, 14:06:46 CEST schrieb John Keeping:
> Enable i2c transactions in irq disabled contexts like poweroff where the
> PMIC is connected via i2c.
>
> Signed-off-by: John Keeping <john@metanate.com>
on a rk3288:
Tested-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> ---
> drivers/i2c/busses/i2c-rk3x.c | 39 +++++++++++++++++++++++++++++++----
> 1 file changed, 35 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
> index 15324bfbc6cb..8e3cc85d1921 100644
> --- a/drivers/i2c/busses/i2c-rk3x.c
> +++ b/drivers/i2c/busses/i2c-rk3x.c
> @@ -10,6 +10,7 @@
> #include <linux/module.h>
> #include <linux/i2c.h>
> #include <linux/interrupt.h>
> +#include <linux/iopoll.h>
> #include <linux/errno.h>
> #include <linux/err.h>
> #include <linux/platform_device.h>
> @@ -1040,8 +1041,21 @@ static int rk3x_i2c_setup(struct rk3x_i2c *i2c, struct i2c_msg *msgs, int num)
> return ret;
> }
>
> -static int rk3x_i2c_xfer(struct i2c_adapter *adap,
> - struct i2c_msg *msgs, int num)
> +static int rk3x_i2c_wait_xfer_poll(struct rk3x_i2c *i2c)
> +{
> + ktime_t timeout = ktime_add_ms(ktime_get(), WAIT_TIMEOUT);
> +
> + while (READ_ONCE(i2c->busy) &&
> + ktime_compare(ktime_get(), timeout) < 0) {
> + udelay(5);
> + rk3x_i2c_irq(0, i2c);
> + }
> +
> + return !i2c->busy;
> +}
> +
> +static int rk3x_i2c_xfer_common(struct i2c_adapter *adap,
> + struct i2c_msg *msgs, int num, bool polling)
> {
> struct rk3x_i2c *i2c = (struct rk3x_i2c *)adap->algo_data;
> unsigned long timeout, flags;
> @@ -1075,8 +1089,12 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
>
> rk3x_i2c_start(i2c);
>
> - timeout = wait_event_timeout(i2c->wait, !i2c->busy,
> - msecs_to_jiffies(WAIT_TIMEOUT));
> + if (!polling) {
> + timeout = wait_event_timeout(i2c->wait, !i2c->busy,
> + msecs_to_jiffies(WAIT_TIMEOUT));
> + } else {
> + timeout = rk3x_i2c_wait_xfer_poll(i2c);
> + }
>
> spin_lock_irqsave(&i2c->lock, flags);
>
> @@ -1110,6 +1128,18 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
> return ret < 0 ? ret : num;
> }
>
> +static int rk3x_i2c_xfer(struct i2c_adapter *adap,
> + struct i2c_msg *msgs, int num)
> +{
> + return rk3x_i2c_xfer_common(adap, msgs, num, false);
> +}
> +
> +static int rk3x_i2c_xfer_polling(struct i2c_adapter *adap,
> + struct i2c_msg *msgs, int num)
> +{
> + return rk3x_i2c_xfer_common(adap, msgs, num, true);
> +}
> +
> static __maybe_unused int rk3x_i2c_resume(struct device *dev)
> {
> struct rk3x_i2c *i2c = dev_get_drvdata(dev);
> @@ -1126,6 +1156,7 @@ static u32 rk3x_i2c_func(struct i2c_adapter *adap)
>
> static const struct i2c_algorithm rk3x_i2c_algorithm = {
> .master_xfer = rk3x_i2c_xfer,
> + .master_xfer_atomic = rk3x_i2c_xfer_polling,
> .functionality = rk3x_i2c_func,
> };
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] i2c: rk3x: support master_xfer_atomic
@ 2020-07-03 10:08 ` Heiko Stuebner
0 siblings, 0 replies; 6+ messages in thread
From: Heiko Stuebner @ 2020-07-03 10:08 UTC (permalink / raw)
To: John Keeping; +Cc: linux-rockchip, linux-i2c, linux-arm-kernel, linux-kernel
Am Dienstag, 23. Juni 2020, 14:06:46 CEST schrieb John Keeping:
> Enable i2c transactions in irq disabled contexts like poweroff where the
> PMIC is connected via i2c.
>
> Signed-off-by: John Keeping <john@metanate.com>
on a rk3288:
Tested-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> ---
> drivers/i2c/busses/i2c-rk3x.c | 39 +++++++++++++++++++++++++++++++----
> 1 file changed, 35 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
> index 15324bfbc6cb..8e3cc85d1921 100644
> --- a/drivers/i2c/busses/i2c-rk3x.c
> +++ b/drivers/i2c/busses/i2c-rk3x.c
> @@ -10,6 +10,7 @@
> #include <linux/module.h>
> #include <linux/i2c.h>
> #include <linux/interrupt.h>
> +#include <linux/iopoll.h>
> #include <linux/errno.h>
> #include <linux/err.h>
> #include <linux/platform_device.h>
> @@ -1040,8 +1041,21 @@ static int rk3x_i2c_setup(struct rk3x_i2c *i2c, struct i2c_msg *msgs, int num)
> return ret;
> }
>
> -static int rk3x_i2c_xfer(struct i2c_adapter *adap,
> - struct i2c_msg *msgs, int num)
> +static int rk3x_i2c_wait_xfer_poll(struct rk3x_i2c *i2c)
> +{
> + ktime_t timeout = ktime_add_ms(ktime_get(), WAIT_TIMEOUT);
> +
> + while (READ_ONCE(i2c->busy) &&
> + ktime_compare(ktime_get(), timeout) < 0) {
> + udelay(5);
> + rk3x_i2c_irq(0, i2c);
> + }
> +
> + return !i2c->busy;
> +}
> +
> +static int rk3x_i2c_xfer_common(struct i2c_adapter *adap,
> + struct i2c_msg *msgs, int num, bool polling)
> {
> struct rk3x_i2c *i2c = (struct rk3x_i2c *)adap->algo_data;
> unsigned long timeout, flags;
> @@ -1075,8 +1089,12 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
>
> rk3x_i2c_start(i2c);
>
> - timeout = wait_event_timeout(i2c->wait, !i2c->busy,
> - msecs_to_jiffies(WAIT_TIMEOUT));
> + if (!polling) {
> + timeout = wait_event_timeout(i2c->wait, !i2c->busy,
> + msecs_to_jiffies(WAIT_TIMEOUT));
> + } else {
> + timeout = rk3x_i2c_wait_xfer_poll(i2c);
> + }
>
> spin_lock_irqsave(&i2c->lock, flags);
>
> @@ -1110,6 +1128,18 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
> return ret < 0 ? ret : num;
> }
>
> +static int rk3x_i2c_xfer(struct i2c_adapter *adap,
> + struct i2c_msg *msgs, int num)
> +{
> + return rk3x_i2c_xfer_common(adap, msgs, num, false);
> +}
> +
> +static int rk3x_i2c_xfer_polling(struct i2c_adapter *adap,
> + struct i2c_msg *msgs, int num)
> +{
> + return rk3x_i2c_xfer_common(adap, msgs, num, true);
> +}
> +
> static __maybe_unused int rk3x_i2c_resume(struct device *dev)
> {
> struct rk3x_i2c *i2c = dev_get_drvdata(dev);
> @@ -1126,6 +1156,7 @@ static u32 rk3x_i2c_func(struct i2c_adapter *adap)
>
> static const struct i2c_algorithm rk3x_i2c_algorithm = {
> .master_xfer = rk3x_i2c_xfer,
> + .master_xfer_atomic = rk3x_i2c_xfer_polling,
> .functionality = rk3x_i2c_func,
> };
>
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] i2c: rk3x: support master_xfer_atomic
2020-06-23 12:06 [PATCH] i2c: rk3x: support master_xfer_atomic John Keeping
@ 2020-07-04 6:46 ` Wolfram Sang
2020-07-04 6:46 ` Wolfram Sang
1 sibling, 0 replies; 6+ messages in thread
From: Wolfram Sang @ 2020-07-04 6:46 UTC (permalink / raw)
To: John Keeping
Cc: Heiko Stuebner, linux-arm-kernel, linux-rockchip, linux-i2c,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 258 bytes --]
On Tue, Jun 23, 2020 at 01:06:46PM +0100, John Keeping wrote:
> Enable i2c transactions in irq disabled contexts like poweroff where the
> PMIC is connected via i2c.
>
> Signed-off-by: John Keeping <john@metanate.com>
Applied to for-next, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] i2c: rk3x: support master_xfer_atomic
@ 2020-07-04 6:46 ` Wolfram Sang
0 siblings, 0 replies; 6+ messages in thread
From: Wolfram Sang @ 2020-07-04 6:46 UTC (permalink / raw)
To: John Keeping
Cc: linux-rockchip, linux-kernel, Heiko Stuebner, linux-arm-kernel,
linux-i2c
[-- Attachment #1.1: Type: text/plain, Size: 258 bytes --]
On Tue, Jun 23, 2020 at 01:06:46PM +0100, John Keeping wrote:
> Enable i2c transactions in irq disabled contexts like poweroff where the
> PMIC is connected via i2c.
>
> Signed-off-by: John Keeping <john@metanate.com>
Applied to for-next, thanks!
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] i2c: rk3x: support master_xfer_atomic
@ 2020-06-25 21:21 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-06-25 21:21 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7126 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20200623120646.2175569-1-john@metanate.com>
References: <20200623120646.2175569-1-john@metanate.com>
TO: John Keeping <john@metanate.com>
TO: Heiko Stuebner <heiko@sntech.de>
CC: John Keeping <john@metanate.com>
CC: linux-arm-kernel(a)lists.infradead.org
CC: linux-rockchip(a)lists.infradead.org
CC: linux-i2c(a)vger.kernel.org
CC: linux-kernel(a)vger.kernel.org
Hi John,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on rockchip/for-next]
[also build test WARNING on v5.8-rc2 next-20200625]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/John-Keeping/i2c-rk3x-support-master_xfer_atomic/20200623-200927
base: https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git for-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: h8300-randconfig-m031-20200624 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/i2c/busses/i2c-rk3x.c:1126 rk3x_i2c_xfer_common() error: double unlocked 'i2c->lock' (orig line 1088)
# https://github.com/0day-ci/linux/commit/9cfdefd04c1b90377752bfa631593aba181b4c46
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 9cfdefd04c1b90377752bfa631593aba181b4c46
vim +1126 drivers/i2c/busses/i2c-rk3x.c
9cfdefd04c1b90 John Keeping 2020-06-23 1056
9cfdefd04c1b90 John Keeping 2020-06-23 1057 static int rk3x_i2c_xfer_common(struct i2c_adapter *adap,
9cfdefd04c1b90 John Keeping 2020-06-23 1058 struct i2c_msg *msgs, int num, bool polling)
c41aa3ce938b68 Max Schwarz 2014-06-11 1059 {
c41aa3ce938b68 Max Schwarz 2014-06-11 1060 struct rk3x_i2c *i2c = (struct rk3x_i2c *)adap->algo_data;
c41aa3ce938b68 Max Schwarz 2014-06-11 1061 unsigned long timeout, flags;
7e086c3fc2df09 David Wu 2016-05-16 1062 u32 val;
c41aa3ce938b68 Max Schwarz 2014-06-11 1063 int ret = 0;
c41aa3ce938b68 Max Schwarz 2014-06-11 1064 int i;
c41aa3ce938b68 Max Schwarz 2014-06-11 1065
c41aa3ce938b68 Max Schwarz 2014-06-11 1066 spin_lock_irqsave(&i2c->lock, flags);
c41aa3ce938b68 Max Schwarz 2014-06-11 1067
c41aa3ce938b68 Max Schwarz 2014-06-11 1068 clk_enable(i2c->clk);
7e086c3fc2df09 David Wu 2016-05-16 1069 clk_enable(i2c->pclk);
c41aa3ce938b68 Max Schwarz 2014-06-11 1070
c41aa3ce938b68 Max Schwarz 2014-06-11 1071 i2c->is_last_msg = false;
c41aa3ce938b68 Max Schwarz 2014-06-11 1072
c41aa3ce938b68 Max Schwarz 2014-06-11 1073 /*
c41aa3ce938b68 Max Schwarz 2014-06-11 1074 * Process msgs. We can handle more than one message at once (see
c41aa3ce938b68 Max Schwarz 2014-06-11 1075 * rk3x_i2c_setup()).
c41aa3ce938b68 Max Schwarz 2014-06-11 1076 */
c41aa3ce938b68 Max Schwarz 2014-06-11 1077 for (i = 0; i < num; i += ret) {
c41aa3ce938b68 Max Schwarz 2014-06-11 1078 ret = rk3x_i2c_setup(i2c, msgs + i, num - i);
c41aa3ce938b68 Max Schwarz 2014-06-11 1079
c41aa3ce938b68 Max Schwarz 2014-06-11 1080 if (ret < 0) {
c41aa3ce938b68 Max Schwarz 2014-06-11 1081 dev_err(i2c->dev, "rk3x_i2c_setup() failed\n");
c41aa3ce938b68 Max Schwarz 2014-06-11 1082 break;
c41aa3ce938b68 Max Schwarz 2014-06-11 1083 }
c41aa3ce938b68 Max Schwarz 2014-06-11 1084
c41aa3ce938b68 Max Schwarz 2014-06-11 1085 if (i + ret >= num)
c41aa3ce938b68 Max Schwarz 2014-06-11 1086 i2c->is_last_msg = true;
c41aa3ce938b68 Max Schwarz 2014-06-11 1087
c41aa3ce938b68 Max Schwarz 2014-06-11 @1088 spin_unlock_irqrestore(&i2c->lock, flags);
c41aa3ce938b68 Max Schwarz 2014-06-11 1089
c41aa3ce938b68 Max Schwarz 2014-06-11 1090 rk3x_i2c_start(i2c);
c41aa3ce938b68 Max Schwarz 2014-06-11 1091
9cfdefd04c1b90 John Keeping 2020-06-23 1092 if (!polling) {
c41aa3ce938b68 Max Schwarz 2014-06-11 1093 timeout = wait_event_timeout(i2c->wait, !i2c->busy,
c41aa3ce938b68 Max Schwarz 2014-06-11 1094 msecs_to_jiffies(WAIT_TIMEOUT));
9cfdefd04c1b90 John Keeping 2020-06-23 1095 } else {
9cfdefd04c1b90 John Keeping 2020-06-23 1096 timeout = rk3x_i2c_wait_xfer_poll(i2c);
9cfdefd04c1b90 John Keeping 2020-06-23 1097 }
c41aa3ce938b68 Max Schwarz 2014-06-11 1098
c41aa3ce938b68 Max Schwarz 2014-06-11 1099 spin_lock_irqsave(&i2c->lock, flags);
c41aa3ce938b68 Max Schwarz 2014-06-11 1100
c41aa3ce938b68 Max Schwarz 2014-06-11 1101 if (timeout == 0) {
c41aa3ce938b68 Max Schwarz 2014-06-11 1102 dev_err(i2c->dev, "timeout, ipd: 0x%02x, state: %d\n",
c41aa3ce938b68 Max Schwarz 2014-06-11 1103 i2c_readl(i2c, REG_IPD), i2c->state);
c41aa3ce938b68 Max Schwarz 2014-06-11 1104
c41aa3ce938b68 Max Schwarz 2014-06-11 1105 /* Force a STOP condition without interrupt */
c41aa3ce938b68 Max Schwarz 2014-06-11 1106 i2c_writel(i2c, 0, REG_IEN);
7e086c3fc2df09 David Wu 2016-05-16 1107 val = i2c_readl(i2c, REG_CON) & REG_CON_TUNING_MASK;
7e086c3fc2df09 David Wu 2016-05-16 1108 val |= REG_CON_EN | REG_CON_STOP;
7e086c3fc2df09 David Wu 2016-05-16 1109 i2c_writel(i2c, val, REG_CON);
c41aa3ce938b68 Max Schwarz 2014-06-11 1110
c41aa3ce938b68 Max Schwarz 2014-06-11 1111 i2c->state = STATE_IDLE;
c41aa3ce938b68 Max Schwarz 2014-06-11 1112
c41aa3ce938b68 Max Schwarz 2014-06-11 1113 ret = -ETIMEDOUT;
c41aa3ce938b68 Max Schwarz 2014-06-11 1114 break;
c41aa3ce938b68 Max Schwarz 2014-06-11 1115 }
c41aa3ce938b68 Max Schwarz 2014-06-11 1116
c41aa3ce938b68 Max Schwarz 2014-06-11 1117 if (i2c->error) {
c41aa3ce938b68 Max Schwarz 2014-06-11 1118 ret = i2c->error;
c41aa3ce938b68 Max Schwarz 2014-06-11 1119 break;
c41aa3ce938b68 Max Schwarz 2014-06-11 1120 }
c41aa3ce938b68 Max Schwarz 2014-06-11 1121 }
c41aa3ce938b68 Max Schwarz 2014-06-11 1122
7e086c3fc2df09 David Wu 2016-05-16 1123 clk_disable(i2c->pclk);
c41aa3ce938b68 Max Schwarz 2014-06-11 1124 clk_disable(i2c->clk);
7e086c3fc2df09 David Wu 2016-05-16 1125
c41aa3ce938b68 Max Schwarz 2014-06-11 @1126 spin_unlock_irqrestore(&i2c->lock, flags);
c41aa3ce938b68 Max Schwarz 2014-06-11 1127
c6cbfb91b87822 Dmitry Torokhov 2015-04-20 1128 return ret < 0 ? ret : num;
c41aa3ce938b68 Max Schwarz 2014-06-11 1129 }
c41aa3ce938b68 Max Schwarz 2014-06-11 1130
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29729 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-07-04 6:48 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-23 12:06 [PATCH] i2c: rk3x: support master_xfer_atomic John Keeping
2020-07-03 10:08 ` Heiko Stuebner
2020-07-03 10:08 ` Heiko Stuebner
2020-07-04 6:46 ` Wolfram Sang
2020-07-04 6:46 ` Wolfram Sang
2020-06-25 21:21 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.