pwm: lpss: Set enable-bit before waiting for update-bit to go low
authorHans de Goede <hdegoede@redhat.com>
Thu, 6 Apr 2017 11:54:01 +0000 (14:54 +0300)
committerThierry Reding <thierry.reding@gmail.com>
Thu, 6 Apr 2017 12:48:14 +0000 (14:48 +0200)
commitb997e3edca4fb4ab7732ab7240c545da0c360a44
treeecc0265bac077021ebaab896c6dca688911c2ec3
parent3c1460e934f371bf91963b49a2cf173ee73c2cae
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>
drivers/pwm/pwm-lpss-pci.c
drivers/pwm/pwm-lpss-platform.c
drivers/pwm/pwm-lpss.c
drivers/pwm/pwm-lpss.h