summaryrefslogtreecommitdiffstats
path: root/drivers/pwm/pwm-lpss.h
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-04-06 14:54:01 +0300
committerThierry Reding <thierry.reding@gmail.com>2017-04-06 14:48:14 +0200
commitb997e3edca4fb4ab7732ab7240c545da0c360a44 (patch)
treeecc0265bac077021ebaab896c6dca688911c2ec3 /drivers/pwm/pwm-lpss.h
parent3c1460e934f371bf91963b49a2cf173ee73c2cae (diff)
downloadlinux-b997e3edca4fb4ab7732ab7240c545da0c360a44.tar.gz
linux-b997e3edca4fb4ab7732ab7240c545da0c360a44.tar.bz2
linux-b997e3edca4fb4ab7732ab7240c545da0c360a44.zip
pwm: lpss: Set enable-bit before waiting for update-bit to go low
At least on cherrytrail, the update bit will never go low when the enabled bit is not set. This causes the backlight on my cube iwork8 air tablet to never turn on again after being turned off because in the pwm_lpss_apply enable path pwm_lpss_update will fail causing an error exit and the enable-bit to never get set. Any following pwm_lpss_apply calls will fail the pwm_lpss_is_updating check. Since the docs say that the update bit should be set before the enable-bit, split pwm_lpss_update into setting the update-bit and pwm_lpss_wait_for_update, and move the pwm_lpss_wait_for_update call in the enable path to after setting the enable-bit. Fixes: 10d56a4 ("pwm: lpss: Avoid reconfiguring while UPDATE bit...") Cc: Ilkka Koskinen <ilkka.koskinen@intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Tested-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Diffstat (limited to 'drivers/pwm/pwm-lpss.h')
-rw-r--r--drivers/pwm/pwm-lpss.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/pwm/pwm-lpss.h b/drivers/pwm/pwm-lpss.h
index c94cd7c2695d..98306bb02cfe 100644
--- a/drivers/pwm/pwm-lpss.h
+++ b/drivers/pwm/pwm-lpss.h
@@ -22,6 +22,7 @@ struct pwm_lpss_boardinfo {
unsigned long clk_rate;
unsigned int npwm;
unsigned long base_unit_bits;
+ bool bypass;
};
struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r,