Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26fb3695 authored by Puneet Yatnal's avatar Puneet Yatnal Committed by Gerrit - the friendly Code Review server
Browse files

driver: iio: imu: Enable gpio to control the power on to asm330 sensor



Enable the gpio to control the power to asm330 sensor and
add 35ms delay so that sensor will get power on by that time.

Change-Id: I459128054ffc187fbcca1868c3d87267fd677dab
Signed-off-by: default avatarPuneet Yatnal <puneet@codeaurora.org>
parent e0e31983
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -237,6 +237,7 @@ struct st_asm330lhh_hw {

	const struct st_asm330lhh_transfer_function *tf;
	struct st_asm330lhh_transfer_buffer tb;
	int enable_gpio;
};

extern const struct dev_pm_ops st_asm330lhh_pm_ops;
+19 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/pm.h>
#include <linux/version.h>
#include <linux/of.h>
#include <linux/of_gpio.h>

#include <linux/platform_data/st_sensors_pdata.h>

@@ -68,6 +69,9 @@
#define ST_ASM330LHH_TEMP_FS_GAIN		(1000000 / ST_ASM330LHH_TEMP_GAIN)
#define ST_ASM330LHH_OFFSET			(6400)

/**Turn on of sensor in ms*/
#define ST_ASM330LHH_TURN_ON_TIME		35

struct st_asm330lhh_std_entry {
	u16 odr;
	u8 val;
@@ -1028,6 +1032,7 @@ int st_asm330lhh_probe(struct device *dev, int irq,
		       const struct st_asm330lhh_transfer_function *tf_ops)
{
	struct st_asm330lhh_hw *hw;
	struct device_node *np;
	int i, err;

	hw = devm_kzalloc(dev, sizeof(*hw), GFP_KERNEL);
@@ -1042,6 +1047,20 @@ int st_asm330lhh_probe(struct device *dev, int irq,
	hw->dev = dev;
	hw->irq = irq;
	hw->tf = tf_ops;
	np = hw->dev->of_node;

	hw->enable_gpio = of_get_named_gpio(np, "asm330-enable-gpio", 0);
	if (gpio_is_valid(hw->enable_gpio)) {
		err = gpio_request(hw->enable_gpio, "asm330_enable");
		if (err < 0) {
			dev_err(hw->dev,
					"failed to request gpio %d: %d\n",
					hw->enable_gpio, err);
			return err;
		}
		gpio_direction_output(hw->enable_gpio, 1);
		msleep(ST_ASM330LHH_TURN_ON_TIME);
	}

	dev_info(hw->dev, "Ver: %s\n", ST_ASM330LHH_VERSION);
	err = st_asm330lhh_check_whoami(hw);