Tony Lindgren
2081572eb1
mfd: cpcap: Fix interrupt regression with regmap clear_ack
...
[ Upstream commit 14639a22de657eabbb776f503a816594393cc935 ]
With commit 3a6f0fb7b8 ("regmap: irq: Add support to clear ack
registers"), the cpcap interrupts are no longer getting acked properly
leading to a very unresponsive device with CPUs fully loaded spinning
in the threaded IRQ handlers.
To me it looks like the clear_ack commit above actually fixed a long
standing bug in regmap_irq_thread() where we unconditionally acked the
interrupts earlier without considering ack_invert. And the issue with
cpcap started happening as we now also consider ack_invert.
Tim Harvey <tharvey@gateworks.com > tried to fix this issue earlier with
"[PATCH v2] regmap: irq: fix ack-invert", but the reading of the ack
register was considered unnecessary for just ack_invert, and we did not
have clear_ack available yet. As the cpcap irqs worked both with and
without ack_invert earlier because of the unconditional ack, the
problem remained hidden until now.
Also, looks like the earlier v3.0.8 based Motorola Android Linux kernel
does clear_ack style read-clear-write with "ireg_val & ~mreg_val" instead
of just ack_invert style write. So let's switch cpcap to use clear_ack
to fix the issue.
Fixes: 3a6f0fb7b8 ("regmap: irq: Add support to clear ack registers")
Cc: Carl Philipp Klemm <philipp@uvos.xyz >
Cc: Laxminath Kasam <lkasam@codeaurora.org >
Cc: Merlijn Wajer <merlijn@wizzup.org >
Cc: Mark Brown <broonie@kernel.org >
Cc: Pavel Machek <pavel@ucw.cz >
Cc: Sebastian Reichel <sre@kernel.org >
Cc: Tim Harvey <tharvey@gateworks.com >
Signed-off-by: Tony Lindgren <tony@atomide.com >
Tested-by: Pavel Machek <pavel@ucw.cz >
Reviewed-By: Tim Harvey <tharvey@gateworks.com >
Signed-off-by: Lee Jones <lee.jones@linaro.org >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2020-12-30 11:53:16 +01:00
..
2019-06-19 17:09:55 +02:00
2019-08-12 08:51:45 +01:00
2015-08-11 15:08:48 +01:00
2019-08-12 08:51:50 +01:00
2019-06-19 17:09:55 +02:00
2020-03-30 07:35:28 +01:00
2020-07-06 08:31:55 +01:00
2020-07-06 08:32:01 +01:00
2020-01-24 07:33:57 +00:00
2020-07-06 08:31:55 +01:00
2019-05-30 11:29:22 -07:00
2019-05-30 11:29:22 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:25:18 -07:00
2019-05-30 11:29:52 -07:00
2020-07-06 08:32:00 +01:00
2020-06-18 11:23:15 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:04 +02:00
2019-05-30 11:26:35 -07:00
2019-08-14 09:07:20 +01:00
2019-02-07 10:44:09 +00:00
2019-06-19 17:09:07 +02:00
2020-01-07 10:08:58 +00:00
2020-07-06 08:31:59 +01:00
2020-08-13 07:49:52 +01:00
2019-06-19 17:09:55 +02:00
2020-01-24 07:33:57 +00:00
2019-08-12 08:51:58 +01:00
2019-01-09 16:55:09 +01:00
2019-01-03 08:32:42 +00:00
2020-07-06 08:32:00 +01:00
2020-01-24 07:33:58 +00:00
2019-06-19 17:09:55 +02:00
2019-07-02 12:11:31 +01:00
2019-07-02 12:11:31 +01:00
2019-07-02 12:11:31 +01:00
2019-07-02 12:11:31 +01:00
2019-11-11 08:45:03 +00:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-03-30 07:35:28 +01:00
2020-08-13 07:49:47 +01:00
2020-08-13 07:49:50 +01:00
2019-05-14 08:13:26 +01:00
2019-08-12 08:52:03 +01:00
2019-07-25 14:21:43 +01:00
2020-08-23 17:36:59 -05:00
2019-05-30 11:29:22 -07:00
2020-08-13 07:50:56 +01:00
2020-09-30 16:25:03 +01:00
2020-09-30 16:24:54 +01:00
2019-06-05 17:37:11 +02:00
2019-09-02 11:05:37 +01:00
2019-08-12 11:29:47 +01:00
2020-05-20 10:28:57 +01:00
2019-07-15 20:18:40 -07:00
2020-08-13 07:50:59 +01:00
2020-12-30 11:53:16 +01:00
2019-06-05 17:37:17 +02:00
2018-10-23 08:58:34 +01:00
2020-04-24 11:18:44 +01:00
2020-05-25 11:05:09 +02:00
2020-04-24 11:17:58 +01:00
2018-10-23 08:58:34 +01:00
2019-05-14 08:13:25 +01:00
2020-01-03 11:47:00 +01:00
2018-10-23 08:58:34 +01:00
2019-12-01 16:16:31 -08:00
2020-08-13 07:50:05 +01:00
2019-09-02 11:09:03 +01:00
2020-09-30 16:25:06 +01:00
2019-11-11 08:40:21 +00:00
2019-06-19 17:09:55 +02:00
2020-09-30 17:46:21 +01:00
2020-07-23 00:08:52 +02:00
2019-11-11 08:45:01 +00:00
2020-08-23 17:36:59 -05:00
2019-05-30 11:26:32 -07:00
2020-12-30 11:53:16 +01:00
2020-10-05 09:11:40 +01:00
2020-09-30 16:24:50 +01:00
2019-05-30 11:26:32 -07:00
2020-07-01 14:54:29 +01:00
2019-02-07 10:44:00 +00:00
2020-08-13 07:50:59 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-09-30 16:25:29 +01:00
2019-06-05 17:36:38 +02:00
2019-06-05 17:36:38 +02:00
2020-09-30 16:24:57 +01:00
2020-06-18 11:23:15 +01:00
2019-07-02 12:11:31 +01:00
2019-07-15 20:18:40 -07:00
2020-09-30 17:46:21 +01:00
2019-08-12 08:53:58 +01:00
2019-06-19 17:09:55 +02:00
2019-08-12 08:54:10 +01:00
2018-10-23 08:58:34 +01:00
2019-08-12 08:53:58 +01:00
2018-10-23 08:58:34 +01:00
2019-08-12 08:53:58 +01:00
2020-08-13 07:50:04 +01:00
2020-05-26 10:51:21 +01:00
2019-05-08 12:06:21 +01:00
2018-10-23 08:58:34 +01:00
2019-08-12 08:53:58 +01:00
2019-08-12 08:54:05 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:19 -07:00
2019-05-30 11:29:19 -07:00
2019-07-15 20:18:40 -07:00
2019-05-30 11:26:32 -07:00
2020-08-28 09:51:41 +01:00
2020-12-30 11:53:16 +01:00
2020-05-26 10:41:40 +01:00
2020-05-21 08:55:29 +01:00
2020-09-30 16:25:22 +01:00
2020-05-21 08:55:29 +01:00
2020-05-21 08:54:40 +01:00
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2020-08-13 07:50:59 +01:00
2013-04-09 09:46:23 +02:00
2019-08-12 08:54:16 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-08-12 11:29:47 +01:00
2020-03-30 07:34:57 +01:00
2019-11-11 08:45:02 +00:00
2020-08-23 17:36:59 -05:00
2019-05-30 11:29:52 -07:00
2019-05-30 11:29:52 -07:00
2019-05-24 17:36:45 +02:00
2017-07-18 08:27:18 +01:00
2020-03-30 07:35:28 +01:00
2020-09-30 16:24:48 +01:00
2020-01-24 07:22:31 +00:00
2020-01-24 07:21:48 +00:00
2020-01-24 07:22:43 +00:00
2019-06-05 17:37:18 +02:00
2019-05-14 08:13:25 +01:00
2019-05-14 08:13:25 +01:00
2020-07-06 08:32:04 +01:00
2020-07-06 08:32:03 +01:00
2019-06-05 17:36:37 +02:00
2020-09-17 15:57:26 +01:00
2020-07-01 10:40:11 +01:00
2020-09-30 16:25:19 +01:00
2020-09-30 16:25:07 +01:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:37:06 +02:00
2020-06-18 11:19:49 +01:00
2020-05-26 10:51:20 +01:00
2020-12-30 11:53:16 +01:00
2019-06-19 17:09:10 +02:00
2019-06-19 17:09:10 +02:00
2019-06-19 17:09:10 +02:00
2019-06-19 17:09:10 +02:00
2020-05-26 10:51:20 +01:00
2019-05-30 11:29:22 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:22 -07:00
2020-10-14 15:56:58 -07:00
2019-06-19 17:09:55 +02:00
2020-07-06 08:31:55 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-08-13 07:50:59 +01:00
2019-07-09 08:59:39 -07:00
2019-08-12 08:46:29 +01:00
2019-05-30 11:29:19 -07:00
2019-06-19 17:09:55 +02:00
2019-11-20 17:10:36 +00:00
2016-06-29 10:14:35 +01:00
2020-07-06 08:31:53 +01:00
2020-07-06 08:32:02 +01:00
2020-08-13 07:50:59 +01:00
2019-05-30 11:29:52 -07:00
2020-08-13 07:50:59 +01:00
2020-08-13 07:50:59 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-08-13 07:50:59 +01:00
2020-08-13 07:50:59 +01:00
2020-08-13 07:50:59 +01:00
2019-02-07 10:44:14 +00:00
2019-08-12 08:40:45 +01:00
2020-05-26 10:51:20 +01:00
2019-06-05 17:37:07 +02:00
2020-07-06 08:31:53 +01:00
2017-09-04 14:41:02 +01:00
2019-05-30 11:26:35 -07:00
2019-06-05 17:37:07 +02:00
2019-08-12 08:53:58 +01:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:29:19 -07:00
2019-05-30 11:29:19 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-05-13 12:42:46 -05:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:35 -07:00
2020-09-30 16:25:01 +01:00
2019-06-05 17:37:07 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-07-06 08:31:56 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-07-06 08:31:57 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-07-06 08:31:56 +01:00
2020-05-26 10:51:20 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-11-11 08:45:02 +00:00