From: Dave Hansen <dave@sr71.net>
To: Jesper Juhl <jesper.juhl@gmail.com>
Cc: Alejandro Bonilla <abonilla@linuxwireless.org>,
Vojtech Pavlik <vojtech@suse.cz>, Pavel Machek <pavel@suse.cz>,
Paul Sladen <thinkpad@paul.sladen.org>,
linux-thinkpad@linux-thinkpad.org,
Eric Piel <Eric.Piel@tremplin-utc.net>,
borislav@users.sourceforge.net,
Yani Ioannou <yani.ioannou@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
hdaps-devel@lists.sourceforge.net
Subject: Re: [Hdaps-devel] Re: [ltp] IBM HDAPS Someone interested? (Accelerometer)
Date: Sun, 03 Jul 2005 12:41:02 -0700 [thread overview]
Message-ID: <1120419662.4351.20.camel@localhost> (raw)
In-Reply-To: <42C82BBB.9090008@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 564 bytes --]
On Sun, 2005-07-03 at 20:17 +0200, Jesper Juhl wrote:
> while (1) {
....
> } else if (time_before(jiffies, wait_until)) {
> set_current_state(TASK_INTERRUPTIBLE);
> schedule_timeout(HZ);
> } else {
Please don't do the manual task state setting. It's preferable to just
use msleep_interruptable(). jiffies and HZ can change with each kernel
configuration, and are not dependable.
I've attached an untested patch that cleans up the init function a bit
(I think).
-- Dave
[-- Attachment #2: init-function-cleanup.patch --]
[-- Type: text/x-patch, Size: 2042 bytes --]
--- accelerometer.c-0.1.orig 2005-07-03 12:28:28.000000000 -0700
+++ accelerometer.c 2005-07-03 12:33:39.000000000 -0700
@@ -158,45 +158,49 @@
}
/* initialize the accelerometer, wait up to `timeout' seconds for success */
-int accelerometer_init(unsigned int timeout)
+int accelerometer_init(unsigned int timeout_secs)
{
- unsigned long wait_until = jiffies + timeout * HZ;
+ unsigned long total_wait_msecs = timeout_secs * 1000;
+ unsinged msec_per_wait = 10;
+ unsigned long msecs_waited = 0;
+ int ret = -EIO;
outb(0x13, 0x1610);
outb(0x01, 0x161f);
if (!wait_latch(0x00, 0x161f))
- return -EIO;
+ return ret;
if (!wait_latch(0x03, 0x1611))
- return -EIO;
+ return ret;
outb(0x17, 0x1610);
outb(0x81, 0x1611);
outb(0x01, 0x161f);
if (!wait_latch(0x00, 0x161f))
- return -EIO;
+ return ret;
if (!wait_latch(0x00, 0x1611))
- return -EIO;
+ return ret;
if (!wait_latch(0x60, 0x1612))
- return -EIO;
+ return ret;
if (!wait_latch(0x00, 0x1613))
- return -EIO;
+ return ret;
outb(0x14, 0x1610);
outb(0x01, 0x1611);
outb(0x01, 0x161f);
if (!wait_latch(0x00, 0x161f))
- return -EIO;
+ return ret;
outb(0x10, 0x1610);
outb(0xc8, 0x1611);
outb(0x00, 0x1612);
outb(0x02, 0x1613);
outb(0x01, 0x161f);
if (!wait_latch(0x00, 0x161f))
- return -EIO;
+ return ret;
if (!request_refresh(REFRESH_SYNC))
- return -EIO;
+ return ret;
if (!wait_latch(0x00, 0x1611))
- return -EIO;
+ return ret;
- while (1) {
+ ret = -ENXIO;
+ while (msecs_waited <= total_wait_msecs) {
if (wait_latch(0x02, 0x1611)) {
struct hdaps_accel_data data;
/*
@@ -204,15 +208,13 @@
* return success.
*/
accelerometer_read(&data);
- return 0;
- } else if (time_before(jiffies, wait_until)) {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ);
- } else {
- /* we timed out, return failure */
- return -ENXIO;
+ ret = 0;
+ break;
}
+ msleep(msecs_per_wait);
+ msecs_waited += msecs_per_wait;
}
+ return ret;
}
static int ibm_hdaps_init(void)
next prev parent reply other threads:[~2005-07-03 19:42 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <42B6F6F6.2040704@zipman.it>
2005-06-20 17:28 ` [ltp] Re: IBM HDAPS Someone interested? Alejandro Bonilla
2005-06-20 19:51 ` Yani Ioannou
2005-06-20 20:11 ` Yani Ioannou
2005-06-20 20:25 ` Alejandro Bonilla
2005-06-20 20:34 ` Yani Ioannou
2005-06-20 20:48 ` Alejandro Bonilla
2005-06-20 21:35 ` Lee Revell
2005-06-20 21:57 ` Alejandro Bonilla
2005-06-20 23:35 ` Lee Revell
2005-06-22 10:49 ` Pavel Machek
2005-06-22 12:50 ` Alejandro Bonilla
2005-06-23 7:13 ` Vojtech Pavlik
2005-06-23 10:06 ` Eric Piel
2005-06-23 12:53 ` Alejandro Bonilla
2005-06-23 13:18 ` Vojtech Pavlik
2005-06-23 20:22 ` Eric Piel
2005-06-23 20:42 ` Lee Revell
2005-06-25 6:17 ` [ltp] IBM HDAPS Someone interested? (Accelerometer) Paul Sladen
2005-06-25 11:31 ` Vojtech Pavlik
2005-06-25 14:47 ` Pavel Machek
2005-06-25 15:00 ` Vojtech Pavlik
2005-06-25 18:14 ` Alejandro Bonilla
2005-06-25 20:14 ` Vojtech Pavlik
2005-06-27 12:33 ` Lenz Grimmer
2005-06-27 13:10 ` Alejandro Bonilla
2005-06-27 21:02 ` Lee Revell
2005-06-28 3:22 ` Alejandro Bonilla
2005-06-28 5:40 ` Lee Revell
2005-06-28 15:40 ` Vojtech Pavlik
2005-06-25 18:13 ` Alejandro Bonilla
2005-06-25 20:09 ` Vojtech Pavlik
2005-06-25 22:41 ` Alejandro Bonilla
2005-06-27 3:35 ` [Hdaps-devel] " Shawn Starr
2005-07-03 8:37 ` Alejandro Bonilla
2005-07-03 10:16 ` Vojtech Pavlik
2005-07-03 11:07 ` Jesper Juhl
2005-07-03 18:17 ` Jesper Juhl
2005-07-03 19:21 ` [Hdaps-devel] " Dave Hansen
2005-07-03 18:29 ` Alejandro Bonilla
2005-07-03 19:37 ` Dave Hansen
2005-07-03 19:42 ` Jesper Juhl
2005-07-03 18:52 ` Alejandro Bonilla
2005-07-03 19:42 ` Henrik Brix Andersen
2005-07-03 20:03 ` Jesper Juhl
2005-07-03 20:53 ` Tomasz Torcz
2005-07-03 19:41 ` Dave Hansen [this message]
2005-07-11 9:42 ` [ltp] IBM HDAPS Someone interested? (Userspace accelerometer viewer) Paul Sladen
2005-07-11 14:26 ` Alan Cox
2005-07-11 16:53 ` [Hdaps-devel] " Dave Hansen
2005-07-11 17:31 ` Paul RIVIER
2005-07-11 20:09 ` [Hdaps-devel] " Daniel Willmann
2005-07-12 15:55 ` Dave Hansen
2005-07-11 15:13 ` Pavel Machek
2005-07-12 9:41 ` Matthew Garrett
2005-07-11 16:21 ` [Hdaps-devel] " Dave Hansen
2005-07-13 16:27 ` Alejandro Bonilla
2005-06-25 17:42 ` [ltp] IBM HDAPS Someone interested? (Accelerometer) Alejandro Bonilla
2005-06-27 10:36 ` P
2005-06-23 15:33 ` [ltp] Re: IBM HDAPS Someone interested? Jan Knutar
2005-06-23 17:08 ` Lee Revell
2005-06-23 20:47 ` Andrew Haninger
2005-06-24 9:16 ` P
2005-06-24 12:56 ` Alejandro Bonilla
2005-06-24 17:20 ` Alejandro Bonilla
2005-06-20 20:53 ` Vojtech Pavlik
[not found] ` <005b01c575bd_724fac60_600cc60a@amer.sykes.com>
2005-06-20 20:25 ` Pavel Machek
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=1120419662.4351.20.camel@localhost \
--to=dave@sr71.net \
--cc=Eric.Piel@tremplin-utc.net \
--cc=abonilla@linuxwireless.org \
--cc=borislav@users.sourceforge.net \
--cc=hdaps-devel@lists.sourceforge.net \
--cc=jesper.juhl@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-thinkpad@linux-thinkpad.org \
--cc=pavel@suse.cz \
--cc=thinkpad@paul.sladen.org \
--cc=vojtech@suse.cz \
--cc=yani.ioannou@gmail.com \
/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