From: "Éric Piel" <eric.piel@tremplin-utc.net>
To: Samu Onkalo <samu.p.onkalo@nokia.com>
Cc: daniel@caiaq.de, pavel@ucw.cz, linux-kernel@vger.kernel.org,
lm-sensors@lm-sensors.org
Subject: Re: [lm-sensors] [PATCH v2 05/10] LIS3LV02D: Proper power on
Date: Sun, 15 Nov 2009 15:54:06 +0000 [thread overview]
Message-ID: <4B00241E.5080003@tremplin-utc.net> (raw)
In-Reply-To: <1257856872-11612-6-git-send-email-samu.p.onkalo@nokia.com>
Op 10-11-09 13:41, Samu Onkalo schreef:
> Lis3 accelerometer sensors have quite long power on delay (up to 125
> ms). This patch adds necessary delay to power on sequence for currently
> supported lis3 chips.
>
> Signed-off-by: Samu Onkalo <samu.p.onkalo@nokia.com>
Acked-by: Éric Piel <eric.piel@tremplin-utc.net>
> ---
> drivers/hwmon/lis3lv02d.c | 41 +++++++++++++++++++++++++++--------------
> drivers/hwmon/lis3lv02d.h | 1 +
> 2 files changed, 28 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
> index b12ee35..39b9ac8 100644
> --- a/drivers/hwmon/lis3lv02d.c
> +++ b/drivers/hwmon/lis3lv02d.c
> @@ -50,6 +50,9 @@
> * joystick.
> */
>
> +#define LIS3_PWRON_DELAY_WAI_12B (5000)
> +#define LIS3_PWRON_DELAY_WAI_8B (3000)
> +
> struct lis3lv02d lis3_dev = {
> .misc_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lis3_dev.misc_wait),
> };
> @@ -112,6 +115,24 @@ static void lis3lv02d_get_xyz(struct lis3lv02d *lis3, int *x, int *y, int *z)
> *z = lis3lv02d_get_axis(lis3->ac.z, position);
> }
>
> +/* conversion btw sampling rate and the register values */
> +static int lis3_12_rates[4] = {40, 160, 640, 2560};
> +static int lis3_8_rates[2] = {100, 400};
> +
> +static int lis3lv02d_get_odr(void)
> +{
> + u8 ctrl;
> + int val;
> +
> + lis3_dev.read(&lis3_dev, CTRL_REG1, &ctrl);
> +
> + if (lis3_dev.whoami = WAI_12B)
> + val = lis3_12_rates[(ctrl & (CTRL1_DF0 | CTRL1_DF1)) >> 4];
> + else
> + val = lis3_8_rates[(ctrl & CTRL1_DR) >> 7];
> + return val;
> +}
> +
> void lis3lv02d_poweroff(struct lis3lv02d *lis3)
> {
> /* disable X,Y,Z axis and power down */
> @@ -125,6 +146,9 @@ void lis3lv02d_poweron(struct lis3lv02d *lis3)
>
> lis3->init(lis3);
>
> + /* LIS3 power on delay is quite long */
> + msleep(lis3->pwron_delay / lis3lv02d_get_odr());
> +
> /*
> * Common configuration
> * BDU: (12 bits sensors only) LSB and MSB values are not updated until
> @@ -364,23 +388,10 @@ static ssize_t lis3lv02d_calibrate_store(struct device *dev,
> return count;
> }
>
> -/* conversion btw sampling rate and the register values */
> -static int lis3_12_rates[4] = {40, 160, 640, 2560};
> -static int lis3_8_rates[2] = {100, 400};
> static ssize_t lis3lv02d_rate_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> - u8 ctrl;
> - int val;
> -
> - lis3_dev.read(&lis3_dev, CTRL_REG1, &ctrl);
> -
> - if (lis3_dev.whoami = WAI_12B)
> - val = lis3_12_rates[(ctrl & (CTRL1_DF0 | CTRL1_DF1)) >> 4];
> - else
> - val = lis3_8_rates[(ctrl & CTRL1_DR) >> 7];
> -
> - return sprintf(buf, "%d\n", val);
> + return sprintf(buf, "%d\n", lis3lv02d_get_odr());
> }
>
> static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL);
> @@ -430,11 +441,13 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
> printk(KERN_INFO DRIVER_NAME ": 12 bits sensor found\n");
> dev->read_data = lis3lv02d_read_12;
> dev->mdps_max_val = 2048;
> + dev->pwron_delay = LIS3_PWRON_DELAY_WAI_12B;
> break;
> case WAI_8B:
> printk(KERN_INFO DRIVER_NAME ": 8 bits sensor found\n");
> dev->read_data = lis3lv02d_read_8;
> dev->mdps_max_val = 128;
> + dev->pwron_delay = LIS3_PWRON_DELAY_WAI_8B;
> break;
> default:
> printk(KERN_ERR DRIVER_NAME
> diff --git a/drivers/hwmon/lis3lv02d.h b/drivers/hwmon/lis3lv02d.h
> index c6ae507..c57f21f 100644
> --- a/drivers/hwmon/lis3lv02d.h
> +++ b/drivers/hwmon/lis3lv02d.h
> @@ -202,6 +202,7 @@ struct lis3lv02d {
> u8 whoami; /* indicates measurement precision */
> s16 (*read_data) (struct lis3lv02d *lis3, int reg);
> int mdps_max_val;
> + int pwron_delay;
>
> struct input_polled_dev *idev; /* input device */
> struct platform_device *pdev; /* platform device */
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
WARNING: multiple messages have this Message-ID (diff)
From: "Éric Piel" <eric.piel@tremplin-utc.net>
To: Samu Onkalo <samu.p.onkalo@nokia.com>
Cc: daniel@caiaq.de, pavel@ucw.cz, linux-kernel@vger.kernel.org,
lm-sensors@lm-sensors.org
Subject: Re: [PATCH v2 05/10] LIS3LV02D: Proper power on sequence
Date: Sun, 15 Nov 2009 16:54:06 +0100 [thread overview]
Message-ID: <4B00241E.5080003@tremplin-utc.net> (raw)
In-Reply-To: <1257856872-11612-6-git-send-email-samu.p.onkalo@nokia.com>
Op 10-11-09 13:41, Samu Onkalo schreef:
> Lis3 accelerometer sensors have quite long power on delay (up to 125
> ms). This patch adds necessary delay to power on sequence for currently
> supported lis3 chips.
>
> Signed-off-by: Samu Onkalo <samu.p.onkalo@nokia.com>
Acked-by: Éric Piel <eric.piel@tremplin-utc.net>
> ---
> drivers/hwmon/lis3lv02d.c | 41 +++++++++++++++++++++++++++--------------
> drivers/hwmon/lis3lv02d.h | 1 +
> 2 files changed, 28 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
> index b12ee35..39b9ac8 100644
> --- a/drivers/hwmon/lis3lv02d.c
> +++ b/drivers/hwmon/lis3lv02d.c
> @@ -50,6 +50,9 @@
> * joystick.
> */
>
> +#define LIS3_PWRON_DELAY_WAI_12B (5000)
> +#define LIS3_PWRON_DELAY_WAI_8B (3000)
> +
> struct lis3lv02d lis3_dev = {
> .misc_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lis3_dev.misc_wait),
> };
> @@ -112,6 +115,24 @@ static void lis3lv02d_get_xyz(struct lis3lv02d *lis3, int *x, int *y, int *z)
> *z = lis3lv02d_get_axis(lis3->ac.z, position);
> }
>
> +/* conversion btw sampling rate and the register values */
> +static int lis3_12_rates[4] = {40, 160, 640, 2560};
> +static int lis3_8_rates[2] = {100, 400};
> +
> +static int lis3lv02d_get_odr(void)
> +{
> + u8 ctrl;
> + int val;
> +
> + lis3_dev.read(&lis3_dev, CTRL_REG1, &ctrl);
> +
> + if (lis3_dev.whoami == WAI_12B)
> + val = lis3_12_rates[(ctrl & (CTRL1_DF0 | CTRL1_DF1)) >> 4];
> + else
> + val = lis3_8_rates[(ctrl & CTRL1_DR) >> 7];
> + return val;
> +}
> +
> void lis3lv02d_poweroff(struct lis3lv02d *lis3)
> {
> /* disable X,Y,Z axis and power down */
> @@ -125,6 +146,9 @@ void lis3lv02d_poweron(struct lis3lv02d *lis3)
>
> lis3->init(lis3);
>
> + /* LIS3 power on delay is quite long */
> + msleep(lis3->pwron_delay / lis3lv02d_get_odr());
> +
> /*
> * Common configuration
> * BDU: (12 bits sensors only) LSB and MSB values are not updated until
> @@ -364,23 +388,10 @@ static ssize_t lis3lv02d_calibrate_store(struct device *dev,
> return count;
> }
>
> -/* conversion btw sampling rate and the register values */
> -static int lis3_12_rates[4] = {40, 160, 640, 2560};
> -static int lis3_8_rates[2] = {100, 400};
> static ssize_t lis3lv02d_rate_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> - u8 ctrl;
> - int val;
> -
> - lis3_dev.read(&lis3_dev, CTRL_REG1, &ctrl);
> -
> - if (lis3_dev.whoami == WAI_12B)
> - val = lis3_12_rates[(ctrl & (CTRL1_DF0 | CTRL1_DF1)) >> 4];
> - else
> - val = lis3_8_rates[(ctrl & CTRL1_DR) >> 7];
> -
> - return sprintf(buf, "%d\n", val);
> + return sprintf(buf, "%d\n", lis3lv02d_get_odr());
> }
>
> static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL);
> @@ -430,11 +441,13 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
> printk(KERN_INFO DRIVER_NAME ": 12 bits sensor found\n");
> dev->read_data = lis3lv02d_read_12;
> dev->mdps_max_val = 2048;
> + dev->pwron_delay = LIS3_PWRON_DELAY_WAI_12B;
> break;
> case WAI_8B:
> printk(KERN_INFO DRIVER_NAME ": 8 bits sensor found\n");
> dev->read_data = lis3lv02d_read_8;
> dev->mdps_max_val = 128;
> + dev->pwron_delay = LIS3_PWRON_DELAY_WAI_8B;
> break;
> default:
> printk(KERN_ERR DRIVER_NAME
> diff --git a/drivers/hwmon/lis3lv02d.h b/drivers/hwmon/lis3lv02d.h
> index c6ae507..c57f21f 100644
> --- a/drivers/hwmon/lis3lv02d.h
> +++ b/drivers/hwmon/lis3lv02d.h
> @@ -202,6 +202,7 @@ struct lis3lv02d {
> u8 whoami; /* indicates measurement precision */
> s16 (*read_data) (struct lis3lv02d *lis3, int reg);
> int mdps_max_val;
> + int pwron_delay;
>
> struct input_polled_dev *idev; /* input device */
> struct platform_device *pdev; /* platform device */
next prev parent reply other threads:[~2009-11-15 15:54 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-10 12:41 [lm-sensors] [PATCH v2 00/10] LIS3: Feature updates and corrections Samu Onkalo
2009-11-10 12:41 ` Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 01/10] LIS3LV02D: Send sync event Samu Onkalo
2009-11-10 12:41 ` Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 02/10] LIS3LV02D: Correct memory leak in Samu Onkalo
2009-11-10 12:41 ` [PATCH v2 02/10] LIS3LV02D: Correct memory leak in module unload Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 03/10] lis3: Update documentation and Samu Onkalo
2009-11-10 12:41 ` [PATCH v2 03/10] lis3: Update documentation and comments Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 04/10] lis3: fix show rate for 8 bits chips Samu Onkalo
2009-11-10 12:41 ` Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 05/10] LIS3LV02D: Proper power on sequence Samu Onkalo
2009-11-10 12:41 ` Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 06/10] LIS3LV02D: Selftest support Samu Onkalo
2009-11-10 12:41 ` Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 07/10] LIS3LV02D: Remove calibaration Samu Onkalo
2009-11-10 12:41 ` [PATCH v2 07/10] LIS3LV02D: Remove calibaration functionality Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 08/10] lis3: Sysfs entry for setting chip Samu Onkalo
2009-11-10 12:41 ` [PATCH v2 08/10] lis3: Sysfs entry for setting chip measurement rate Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 09/10] lis3: Scale output values to mg Samu Onkalo
2009-11-10 12:41 ` Samu Onkalo
2009-11-10 12:41 ` [lm-sensors] [PATCH v2 10/10] LIS3: Update documentation to match Samu Onkalo
2009-11-10 12:41 ` [PATCH v2 10/10] LIS3: Update documentation to match latest changes Samu Onkalo
2009-11-15 15:43 ` [lm-sensors] [PATCH v2 10/10] LIS3: Update documentation to Éric Piel
2009-11-15 15:43 ` [PATCH v2 10/10] LIS3: Update documentation to match latest changes Éric Piel
2009-11-15 15:32 ` [lm-sensors] [PATCH v2 09/10] lis3: Scale output values to mg Éric Piel
2009-11-15 15:32 ` Éric Piel
2009-11-15 18:04 ` [lm-sensors] " Pavel Machek
2009-11-15 18:04 ` Pavel Machek
2009-11-15 15:20 ` [lm-sensors] [PATCH v2 08/10] lis3: Sysfs entry for setting Éric Piel
2009-11-15 15:20 ` [PATCH v2 08/10] lis3: Sysfs entry for setting chip measurement rate Éric Piel
2009-11-15 15:54 ` [lm-sensors] [PATCH v2 07/10] LIS3LV02D: Remove calibaration Éric Piel
2009-11-15 15:54 ` [PATCH v2 07/10] LIS3LV02D: Remove calibaration functionality Éric Piel
2009-11-15 15:08 ` [lm-sensors] [PATCH v2 06/10] LIS3LV02D: Selftest support Éric Piel
2009-11-15 15:08 ` Éric Piel
2009-11-15 15:54 ` Éric Piel [this message]
2009-11-15 15:54 ` [PATCH v2 05/10] LIS3LV02D: Proper power on sequence Éric Piel
2009-11-15 15:53 ` [lm-sensors] [PATCH v2 04/10] lis3: fix show rate for 8 bits Éric Piel
2009-11-15 15:53 ` [PATCH v2 04/10] lis3: fix show rate for 8 bits chips Éric Piel
2009-11-15 15:49 ` [lm-sensors] [PATCH v2 02/10] LIS3LV02D: Correct memory leak in Éric Piel
2009-11-15 15:49 ` [PATCH v2 02/10] LIS3LV02D: Correct memory leak in module unload Éric Piel
2009-11-15 15:49 ` [lm-sensors] [PATCH v2 01/10] LIS3LV02D: Send sync event Éric Piel
2009-11-15 15:49 ` Éric Piel
2009-11-15 16:01 ` [lm-sensors] [PATCH v2 00/10] LIS3: Feature updates and Éric Piel
2009-11-15 16:01 ` [PATCH v2 00/10] LIS3: Feature updates and corrections Éric Piel
2009-11-16 20:03 ` [lm-sensors] [PATCH v2 00/10] LIS3: Feature updates and Andrew Morton
2009-11-16 20:03 ` [PATCH v2 00/10] LIS3: Feature updates and corrections Andrew Morton
2009-11-16 20:37 ` [lm-sensors] [PATCH v2 00/10] LIS3: Feature updates and Éric Piel
2009-11-16 20:37 ` [PATCH v2 00/10] LIS3: Feature updates and corrections Éric Piel
2009-11-17 6:04 ` [lm-sensors] [PATCH v2 00/10] LIS3: Feature updates and samu.p.onkalo
2009-11-17 6:04 ` [PATCH v2 00/10] LIS3: Feature updates and corrections samu.p.onkalo
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=4B00241E.5080003@tremplin-utc.net \
--to=eric.piel@tremplin-utc.net \
--cc=daniel@caiaq.de \
--cc=linux-kernel@vger.kernel.org \
--cc=lm-sensors@lm-sensors.org \
--cc=pavel@ucw.cz \
--cc=samu.p.onkalo@nokia.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 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.