diff options
author | Rakesh Goyal <rgoyal@nvidia.com> | 2014-03-19 16:03:19 +0530 |
---|---|---|
committer | Bharat Nihalani <bnihalani@nvidia.com> | 2014-03-25 21:52:25 -0700 |
commit | 7375a9559f8d78806ca8ec28577828a646c46a4c (patch) | |
tree | 4c997562f9689e4c6810590e4efb18969193d7e2 /drivers/misc/gps | |
parent | 03ccbf46d4830ab38f470dd94bc9397f20147fe0 (diff) |
misc: gps: remove pre-check for power state
In some specific cases, power_on variable is not
getting updated before next call which cause
no actual toggling of force_on GPIO. Removing this
logic as GPIO driver takes care of current line state.
Bug 1483048
Change-Id: I7e9d5cabb905ba082eb8ee266af14ae99946c39f
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: http://git-master/r/384146
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/misc/gps')
-rw-r--r-- | drivers/misc/gps/gps.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/misc/gps/gps.c b/drivers/misc/gps/gps.c index cba5ffbca438..705692781cbf 100644 --- a/drivers/misc/gps/gps.c +++ b/drivers/misc/gps/gps.c @@ -59,8 +59,8 @@ struct mtk_gps_hardware{ - int (*ext_power_on)(int); - int (*ext_power_off)(int); + int (*ext_power_on)(); + int (*ext_power_off)(); int ext_force_on; }; @@ -219,12 +219,12 @@ static char *str_reason[] = {"none", "init", "monitor", "wakeup", "TTFF", "force /****************************************************************************** * Functions ******************************************************************************/ -static int mt3332_gps_ext_power_on(int force_on) +static int mt3332_gps_ext_power_on() { int ret = 0; if (gpio_is_valid(mt3332_gpios.force_on)) { - gpio_set_value(mt3332_gpios.force_on, force_on); + gpio_set_value(mt3332_gpios.force_on, 1); GPS_DBG("(enable gps)\n"); mdelay(10); } else { @@ -233,7 +233,7 @@ static int mt3332_gps_ext_power_on(int force_on) return ret; } -int mt3332_gps_ext_power_off(int force_on) +int mt3332_gps_ext_power_off() { int ret = 0; @@ -248,10 +248,8 @@ int mt3332_gps_ext_power_off(int force_on) } static inline void mt3332_gps_power(struct mtk_gps_hardware *hw, - unsigned int on, unsigned int force) + unsigned int on, unsigned int force) { - /*FIX ME: PM_api should provide a function to get current status*/ - static unsigned int power_on = 1; int err; GPS_DBG("Switching GPS device %s\n", on ? "on" : "off"); if (!hw) { @@ -259,11 +257,9 @@ static inline void mt3332_gps_power(struct mtk_gps_hardware *hw, return; } - if (power_on == on) { - GPS_DBG("ignore power control: %d\n", on); - } else if (on) { + if (on) { if (hw->ext_power_on) { - err = hw->ext_power_on(1); + err = hw->ext_power_on(); if (err) GPS_ERR("ext_power_on fail\n"); } @@ -272,14 +268,13 @@ static inline void mt3332_gps_power(struct mtk_gps_hardware *hw, } else { if (hw->ext_power_off) { - err = hw->ext_power_off(force); + err = hw->ext_power_off(); if (err) GPS_ERR("ext_power_off fail\n"); } mdelay(10); } - power_on = on; } |