From: pawel.moll@arm.com (Pawel Moll)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/12] misc: vexpress-syscfg: Add udelay-based delay
Date: Tue, 11 Feb 2014 17:10:25 +0000 [thread overview]
Message-ID: <1392138636-29240-2-git-send-email-pawel.moll@arm.com> (raw)
In-Reply-To: <1392138636-29240-1-git-send-email-pawel.moll@arm.com>
It is normally preferable to yield the task
waiting for syscfg operations (that can take
up to dozens of milliseconds), but when the
system is shutting down it may not be possible.
This patch adds a udelay-based version of the
code to be used in such circumstances.
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Pawel Moll <pawel.moll@arm.com>
---
drivers/misc/vexpress-syscfg.c | 40 ++++++++++++++++++++++++++++++++++++----
1 file changed, 36 insertions(+), 4 deletions(-)
diff --git a/drivers/misc/vexpress-syscfg.c b/drivers/misc/vexpress-syscfg.c
index 4d661ef..82f8229 100644
--- a/drivers/misc/vexpress-syscfg.c
+++ b/drivers/misc/vexpress-syscfg.c
@@ -53,6 +53,37 @@ struct vexpress_syscfg_func {
};
+static int vexpress_syscfg_delay_schedule(unsigned int us)
+{
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(usecs_to_jiffies(us));
+ if (signal_pending(current))
+ return -EINTR;
+
+ return 0;
+}
+
+static int vexpress_syscfg_delay_loop(unsigned int us)
+{
+ udelay(us);
+
+ return 0;
+}
+
+static int (*vexpress_syscfg_delay)(unsigned int us) =
+ vexpress_syscfg_delay_schedule;
+
+static void vexpress_syscfg_shutdown(void)
+{
+ /* Can't relay on the scheduler when the system is going down */
+ vexpress_syscfg_delay = vexpress_syscfg_delay_loop;
+}
+
+static struct syscore_ops vexpress_syscfg_syscore_ops = {
+ .shutdown = vexpress_syscfg_shutdown,
+};
+
+
static int vexpress_syscfg_exec(struct vexpress_syscfg_func *func,
int index, bool write, u32 *data)
{
@@ -87,10 +118,9 @@ static int vexpress_syscfg_exec(struct vexpress_syscfg_func *func,
tries = 100;
timeout = 100;
do {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(usecs_to_jiffies(timeout));
- if (signal_pending(current))
- return -EINTR;
+ int err = vexpress_syscfg_delay(timeout);
+ if (err)
+ return err;
status = readl(syscfg->base + SYS_CFGSTAT);
if (status & SYS_CFGSTAT_ERR)
@@ -299,6 +329,8 @@ int vexpress_syscfg_probe(struct platform_device *pdev)
if (!pdev->dev.of_node)
vexpress_syscfg_bridge = bridge;
+ register_syscore_ops(&vexpress_syscfg_syscore_ops);
+
return 0;
}
--
1.8.3.2
next prev parent reply other threads:[~2014-02-11 17:10 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-11 17:10 [PATCH 00/12] Versatile Express updates Pawel Moll
2014-02-11 17:10 ` Pawel Moll [this message]
2014-02-15 19:19 ` [PATCH 01/12] misc: vexpress-syscfg: Add udelay-based delay Greg Kroah-Hartman
2014-02-11 17:10 ` [PATCH 02/12] power/reset: vexpress: Use udelay instead of timers Pawel Moll
2014-02-11 20:59 ` Arnd Bergmann
2014-02-12 11:56 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 03/12] clk: versatile: Split config options for sp810 and vexpress_osc Pawel Moll
2014-02-11 17:10 ` [PATCH 04/12] clocksource: Sched clock source for Versatile Express Pawel Moll
2014-04-16 13:56 ` Rob Herring
2014-04-16 14:22 ` Pawel Moll
2014-04-16 14:45 ` Rob Herring
2014-04-16 15:05 ` Pawel Moll
2014-05-02 22:14 ` Linus Walleij
2014-05-07 9:57 ` Pawel Moll
2014-05-13 8:47 ` Linus Walleij
2014-02-11 17:10 ` [PATCH 05/12] GPIO: gpio-generic: Add label to platform data Pawel Moll
2014-02-11 17:17 ` Lee Jones
2014-02-11 17:20 ` Pawel Moll
2014-02-11 17:29 ` Pawel Moll
2014-02-11 17:46 ` Lee Jones
2014-02-11 17:10 ` [PATCH 06/12] mfd: vexpress-sysreg: Add labels to gpio banks Pawel Moll
2014-02-11 17:19 ` Lee Jones
2014-02-13 13:08 ` Linus Walleij
2014-02-13 13:11 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 07/12] mfd: syscon: Consider platform data a regmap config name Pawel Moll
2014-02-11 17:24 ` Lee Jones
2014-02-12 7:09 ` Alexander Shiyan
2014-02-12 8:26 ` Lee Jones
2014-02-12 11:06 ` Pawel Moll
2014-02-12 11:18 ` Lee Jones
2014-02-12 11:27 ` Alexander Shiyan
2014-02-12 11:43 ` Pawel Moll
2014-02-11 17:10 ` [PATCH 08/12] mfd: vexpress-sysreg: Add syscon labels as platform data Pawel Moll
2014-02-11 17:29 ` Lee Jones
2014-02-11 17:32 ` Pawel Moll
2014-02-11 17:48 ` Lee Jones
2014-02-11 17:52 ` [PATCH v2 1/2] mfd: syscon: Add platform data with a regmap config name Pawel Moll
2014-02-11 17:52 ` [PATCH v2 2/2] mfd: vexpress-sysreg: Add syscon labels as platform data Pawel Moll
2014-02-12 11:20 ` Lee Jones
2014-02-11 17:55 ` [PATCH v2 1/2] mfd: syscon: Add platform data with a regmap config name Pawel Moll
2014-02-12 11:19 ` Lee Jones
2014-02-11 17:10 ` [PATCH 09/12] hwmon: vexpress: Use devm helper for hwmon device registration Pawel Moll
2014-02-11 20:57 ` Arnd Bergmann
2014-02-11 17:10 ` [PATCH 10/12] ARM: vexpress: remove redundant vexpress_dt_cpus_num to get cpu count Pawel Moll
2014-02-11 17:10 ` [PATCH 11/12] ARM: vexpress: Simplify SMP operations for DT-powered system Pawel Moll
2014-02-11 17:10 ` [PATCH 12/12] ARM: vexpress: move HBI check to sysreg driver Pawel Moll
2014-02-11 19:28 ` [PATCH 00/12] Versatile Express updates Arnd Bergmann
2014-02-12 12:30 ` Pawel Moll
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1392138636-29240-2-git-send-email-pawel.moll@arm.com \
--to=pawel.moll@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).