From patchwork Mon Feb 20 20:16:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 730181 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vRvzy71lYz9s7s for ; Tue, 21 Feb 2017 07:17:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752076AbdBTURC (ORCPT ); Mon, 20 Feb 2017 15:17:02 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33324 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751249AbdBTURC (ORCPT ); Mon, 20 Feb 2017 15:17:02 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 86A7D804EB; Mon, 20 Feb 2017 20:17:02 +0000 (UTC) Received: from shalem.localdomain.com (ovpn-117-9.ams2.redhat.com [10.36.117.9]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v1KKGx6j014649; Mon, 20 Feb 2017 15:17:01 -0500 From: Hans de Goede To: Thierry Reding Cc: Hans de Goede , linux-pwm@vger.kernel.org, Ilkka Koskinen Subject: [PATCH 1/3] pwm: lpss: Do not set / wait_for update_bit when not enabled Date: Mon, 20 Feb 2017 21:16:55 +0100 Message-Id: <20170220201657.24801-2-hdegoede@redhat.com> In-Reply-To: <20170220201657.24801-1-hdegoede@redhat.com> References: <20170220201657.24801-1-hdegoede@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 20 Feb 2017 20:17:02 +0000 (UTC) Sender: linux-pwm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pwm@vger.kernel.org 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 go on again after being turned off, because the enable path does: pwm_lpss_prepare(); ret = pwm_lpss_update(pwm); if (ret) return ret; pwm_lpss_write(pwm, pwm_lpss_read(pwm) | PWM_ENABLE); And the pwm_lpss_update() call fails, as the setting of the UPDATE bit never gets acked, because the ENABLE bit is not set. Subsequent calls then all fail because of the pwm_lpss_is_updating() check done by pwm_lpss_apply(). This commit fixes this by setting the enable bit before calling pwm_lpss_update(). Fixes: 10d56a4cb1c6 ("pwm: lpss: Avoid reconfiguring while UPDATE bit...") Cc: Ilkka Koskinen Signed-off-by: Hans de Goede --- drivers/pwm/pwm-lpss.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pwm/pwm-lpss.c b/drivers/pwm/pwm-lpss.c index 689d2c1..6c99abc 100644 --- a/drivers/pwm/pwm-lpss.c +++ b/drivers/pwm/pwm-lpss.c @@ -137,12 +137,12 @@ static int pwm_lpss_apply(struct pwm_chip *chip, struct pwm_device *pwm, return ret; } pwm_lpss_prepare(lpwm, pwm, state->duty_cycle, state->period); + pwm_lpss_write(pwm, pwm_lpss_read(pwm) | PWM_ENABLE); ret = pwm_lpss_update(pwm); if (ret) { pm_runtime_put(chip->dev); return ret; } - pwm_lpss_write(pwm, pwm_lpss_read(pwm) | PWM_ENABLE); } else { ret = pwm_lpss_is_updating(pwm); if (ret)