All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] pwm: pwm-samsung: fix suspend/resume support
       [not found] <CGME20170403134731epcas1p411267df663cda69eb32f382011fdda08@epcas1p4.samsung.com>
@ 2017-04-03 13:47 ` Bartlomiej Zolnierkiewicz
       [not found]   ` <CGME20170403134735epcas5p252798426964621f81114614c525f38ba@epcas5p2.samsung.com>
                     ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-04-03 13:47 UTC (permalink / raw)
  To: Thierry Reding, Jean Delvare, Guenter Roeck, Kamil Debski
  Cc: Tomasz Figa, linux-pwm, linux-hwmon, linux-kernel,
	linux-samsung-soc, b.zolnierkie

Hi,

This patchset fixes suspend/resume support in pwm-samsung
driver (which has an effect of fixing suspend/resume support
for PWM client drivers such as pwm-fan one). Then it removes
no longer needed suspend/resume code from pwm-fan driver.

It was tested on Odroid-XU3 board (with few extra patches
adding SoC/board suspend/resume support which are not in
upstream yet).

The initial issue that has been observed on this configuration
was that after suspend/resume operation the fan was turned on
(while the thermal code had explicitly disabled the fan by
calling back into pwm-fan driver before the suspend/resume).

Fixing this in the pwm-fan driver itself is not feasible since
pwm_config()/pwm_disable() & co. API saves information about
current state and doesn't pass the relevant values to PWM core
if they are identical to the ones used previously (moreover PWM
core itself does the same before calling into the PWM hardware
driver).

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics


Bartlomiej Zolnierkiewicz (3):
  pwm: pwm-samsung: remove redundant checks from pwm_samsung_config()
  pwm: pwm-samsung: fix suspend/resume support
  hwmon: pwm-fan: remove no longer needed suspend/resume code

 drivers/hwmon/pwm-fan.c   | 32 ----------------------
 drivers/pwm/pwm-samsung.c | 70 +++++++++++++++++++++++------------------------
 2 files changed, 35 insertions(+), 67 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] pwm: pwm-samsung: remove redundant checks from pwm_samsung_config()
       [not found]   ` <CGME20170403134735epcas5p252798426964621f81114614c525f38ba@epcas5p2.samsung.com>
@ 2017-04-03 13:47     ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 7+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-04-03 13:47 UTC (permalink / raw)
  To: Thierry Reding, Jean Delvare, Guenter Roeck, Kamil Debski
  Cc: Tomasz Figa, linux-pwm, linux-hwmon, linux-kernel,
	linux-samsung-soc, b.zolnierkie

If the requested period_ns and duty_ns values are identical to
the last programmed ones pwm_samsung_config() returns early and
skips the hardware configuration. The same checks are now done
by the PWM core so the driver specific ones can be removed.

Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
---
 drivers/pwm/pwm-samsung.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/pwm/pwm-samsung.c b/drivers/pwm/pwm-samsung.c
index f113cda..9ea7638 100644
--- a/drivers/pwm/pwm-samsung.c
+++ b/drivers/pwm/pwm-samsung.c
@@ -312,9 +312,6 @@ static int pwm_samsung_config(struct pwm_chip *chip, struct pwm_device *pwm,
 	if (period_ns > NSEC_PER_SEC)
 		return -ERANGE;
 
-	if (period_ns == chan->period_ns && duty_ns == chan->duty_ns)
-		return 0;
-
 	tcnt = readl(our_chip->base + REG_TCNTB(pwm->hwpwm));
 	oldtcmp = readl(our_chip->base + REG_TCMPB(pwm->hwpwm));
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] pwm: pwm-samsung: fix suspend/resume support
       [not found]   ` <CGME20170403134738epcas1p43be0c60fa93d85364914fc6de0cee3e2@epcas1p4.samsung.com>
@ 2017-04-03 13:47     ` Bartlomiej Zolnierkiewicz
  2017-04-04  5:40         ` kbuild test robot
  0 siblings, 1 reply; 7+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-04-03 13:47 UTC (permalink / raw)
  To: Thierry Reding, Jean Delvare, Guenter Roeck, Kamil Debski
  Cc: Tomasz Figa, linux-pwm, linux-hwmon, linux-kernel,
	linux-samsung-soc, b.zolnierkie

Fix suspend/resume support:

- add disabled_mask to struct samsung_pwm_chip to track PWM
  disabled state information in pwm_samsung_{disable,enable}()

- rename pwm_samsung_config() to __pwm_samsung_config() and
  add extra force_period parameter to be used during resume
  (to force tin_ns and tcnt recalculation)

- add pwm_samsung_config() wrapper for preserving old behavior

- properly restore PWM configuration in pwm_samsung_resume()

- remove no longer needed pwm_samsung_suspend()

- update Copyrights

Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
---
 drivers/pwm/pwm-samsung.c | 67 +++++++++++++++++++++++++----------------------
 1 file changed, 35 insertions(+), 32 deletions(-)

diff --git a/drivers/pwm/pwm-samsung.c b/drivers/pwm/pwm-samsung.c
index 9ea7638..aeb39b6 100644
--- a/drivers/pwm/pwm-samsung.c
+++ b/drivers/pwm/pwm-samsung.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2008 Simtec Electronics
  *     Ben Dooks <ben@simtec.co.uk>, <ben-linux@fluff.org>
  * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
  *
  * PWM driver for Samsung SoCs
  *
@@ -74,6 +75,7 @@ struct samsung_pwm_channel {
  * @chip:		generic PWM chip
  * @variant:		local copy of hardware variant data
  * @inverter_mask:	inverter status for all channels - one bit per channel
+ * @disabled_mask:	disabled status for all channels - one bit per channel
  * @base:		base address of mapped PWM registers
  * @base_clk:		base clock used to drive the timers
  * @tclk0:		external clock 0 (can be ERR_PTR if not present)
@@ -83,6 +85,7 @@ struct samsung_pwm_chip {
 	struct pwm_chip chip;
 	struct samsung_pwm_variant variant;
 	u8 inverter_mask;
+	u8 disabled_mask;
 
 	void __iomem *base;
 	struct clk *base_clk;
@@ -257,6 +260,8 @@ static int pwm_samsung_enable(struct pwm_chip *chip, struct pwm_device *pwm)
 	tcon |= TCON_START(tcon_chan) | TCON_AUTORELOAD(tcon_chan);
 	writel(tcon, our_chip->base + REG_TCON);
 
+	our_chip->disabled_mask &= ~BIT(pwm->hwpwm);
+
 	spin_unlock_irqrestore(&samsung_pwm_lock, flags);
 
 	return 0;
@@ -275,6 +280,8 @@ static void pwm_samsung_disable(struct pwm_chip *chip, struct pwm_device *pwm)
 	tcon &= ~TCON_AUTORELOAD(tcon_chan);
 	writel(tcon, our_chip->base + REG_TCON);
 
+	our_chip->disabled_mask |= BIT(pwm->hwpwm);
+
 	spin_unlock_irqrestore(&samsung_pwm_lock, flags);
 }
 
@@ -297,8 +304,8 @@ static void pwm_samsung_manual_update(struct samsung_pwm_chip *chip,
 	spin_unlock_irqrestore(&samsung_pwm_lock, flags);
 }
 
-static int pwm_samsung_config(struct pwm_chip *chip, struct pwm_device *pwm,
-			      int duty_ns, int period_ns)
+static int __pwm_samsung_config(struct pwm_chip *chip, struct pwm_device *pwm,
+				int duty_ns, int period_ns, bool force_period)
 {
 	struct samsung_pwm_chip *our_chip = to_samsung_pwm_chip(chip);
 	struct samsung_pwm_channel *chan = pwm_get_chip_data(pwm);
@@ -319,7 +326,7 @@ static int pwm_samsung_config(struct pwm_chip *chip, struct pwm_device *pwm,
 	++tcnt;
 
 	/* Check to see if we are changing the clock rate of the PWM. */
-	if (chan->period_ns != period_ns) {
+	if (chan->period_ns != period_ns || force_period) {
 		unsigned long tin_rate;
 		u32 period;
 
@@ -378,6 +385,12 @@ static int pwm_samsung_config(struct pwm_chip *chip, struct pwm_device *pwm,
 	return 0;
 }
 
+static int pwm_samsung_config(struct pwm_chip *chip, struct pwm_device *pwm,
+			      int duty_ns, int period_ns)
+{
+	return __pwm_samsung_config(chip, pwm, duty_ns, period_ns, false);
+}
+
 static void pwm_samsung_set_invert(struct samsung_pwm_chip *chip,
 				   unsigned int channel, bool invert)
 {
@@ -589,51 +602,41 @@ static int pwm_samsung_remove(struct platform_device *pdev)
 }
 
 #ifdef CONFIG_PM_SLEEP
-static int pwm_samsung_suspend(struct device *dev)
+static int pwm_samsung_resume(struct device *dev)
 {
-	struct samsung_pwm_chip *chip = dev_get_drvdata(dev);
+	struct samsung_pwm_chip *our_chip = dev_get_drvdata(dev);
+	struct pwm_chip *chip = &our_chip->chip;
 	unsigned int i;
 
-	/*
-	 * No one preserves these values during suspend so reset them.
-	 * Otherwise driver leaves PWM unconfigured if same values are
-	 * passed to pwm_config() next time.
-	 */
-	for (i = 0; i < SAMSUNG_PWM_NUM; ++i) {
-		struct pwm_device *pwm = &chip->chip.pwms[i];
+	for (i = 0; i < SAMSUNG_PWM_NUM; i++) {
+		struct pwm_device *pwm = &chip->pwms[i];
 		struct samsung_pwm_channel *chan = pwm_get_chip_data(pwm);
 
 		if (!chan)
 			continue;
 
-		chan->period_ns = 0;
-		chan->duty_ns = 0;
-	}
-
-	return 0;
-}
+		if (our_chip->variant.output_mask & BIT(i))
+			pwm_samsung_set_invert(our_chip, i,
+					our_chip->inverter_mask & BIT(i));
 
-static int pwm_samsung_resume(struct device *dev)
-{
-	struct samsung_pwm_chip *chip = dev_get_drvdata(dev);
-	unsigned int chan;
+		if (chan->period_ns) {
+			__pwm_samsung_config(chip, pwm, chan->duty_ns,
+					     chan->period_ns, true);
+			/* needed to make PWM disable work on Odroid-XU3 */
+			pwm_samsung_manual_update(chip, pwm);
+		}
 
-	/*
-	 * Inverter setting must be preserved across suspend/resume
-	 * as nobody really seems to configure it more than once.
-	 */
-	for (chan = 0; chan < SAMSUNG_PWM_NUM; ++chan) {
-		if (chip->variant.output_mask & BIT(chan))
-			pwm_samsung_set_invert(chip, chan,
-					chip->inverter_mask & BIT(chan));
+		if (our_chip->disabled_mask & BIT(i))
+			pwm_samsung_disable(chip, pwm);
+		else
+			pwm_samsung_enable(chip, pwm);
 	}
 
 	return 0;
 }
 #endif
 
-static SIMPLE_DEV_PM_OPS(pwm_samsung_pm_ops, pwm_samsung_suspend,
-			 pwm_samsung_resume);
+static SIMPLE_DEV_PM_OPS(pwm_samsung_pm_ops, NULL, pwm_samsung_resume);
 
 static struct platform_driver pwm_samsung_driver = {
 	.driver		= {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] hwmon: pwm-fan: remove no longer needed suspend/resume code
       [not found]   ` <CGME20170403134742epcas1p42a7ea96e9c27d5752796ca9ff86d0f1e@epcas1p4.samsung.com>
@ 2017-04-03 13:47     ` Bartlomiej Zolnierkiewicz
  2017-04-03 15:52       ` Guenter Roeck
  0 siblings, 1 reply; 7+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2017-04-03 13:47 UTC (permalink / raw)
  To: Thierry Reding, Jean Delvare, Guenter Roeck, Kamil Debski
  Cc: Tomasz Figa, linux-pwm, linux-hwmon, linux-kernel,
	linux-samsung-soc, b.zolnierkie

The suspend/resume is now properly handled by pwm-samsung driver
(pwm-fan is currently only used by ARM Exynos boards) and the old
code only handles ctx->pwm_value != 0 case. Just remove it.

Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
---
 drivers/hwmon/pwm-fan.c | 32 --------------------------------
 1 file changed, 32 deletions(-)

diff --git a/drivers/hwmon/pwm-fan.c b/drivers/hwmon/pwm-fan.c
index f9af393..9dc40f3 100644
--- a/drivers/hwmon/pwm-fan.c
+++ b/drivers/hwmon/pwm-fan.c
@@ -302,37 +302,6 @@ static int pwm_fan_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM_SLEEP
-static int pwm_fan_suspend(struct device *dev)
-{
-	struct pwm_fan_ctx *ctx = dev_get_drvdata(dev);
-
-	if (ctx->pwm_value)
-		pwm_disable(ctx->pwm);
-	return 0;
-}
-
-static int pwm_fan_resume(struct device *dev)
-{
-	struct pwm_fan_ctx *ctx = dev_get_drvdata(dev);
-	struct pwm_args pargs;
-	unsigned long duty;
-	int ret;
-
-	if (ctx->pwm_value == 0)
-		return 0;
-
-	pwm_get_args(ctx->pwm, &pargs);
-	duty = DIV_ROUND_UP(ctx->pwm_value * (pargs.period - 1), MAX_PWM);
-	ret = pwm_config(ctx->pwm, duty, pargs.period);
-	if (ret)
-		return ret;
-	return pwm_enable(ctx->pwm);
-}
-#endif
-
-static SIMPLE_DEV_PM_OPS(pwm_fan_pm, pwm_fan_suspend, pwm_fan_resume);
-
 static const struct of_device_id of_pwm_fan_match[] = {
 	{ .compatible = "pwm-fan", },
 	{},
@@ -344,7 +313,6 @@ static int pwm_fan_resume(struct device *dev)
 	.remove		= pwm_fan_remove,
 	.driver	= {
 		.name		= "pwm-fan",
-		.pm		= &pwm_fan_pm,
 		.of_match_table	= of_pwm_fan_match,
 	},
 };
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] hwmon: pwm-fan: remove no longer needed suspend/resume code
  2017-04-03 13:47     ` [PATCH 3/3] hwmon: pwm-fan: remove no longer needed suspend/resume code Bartlomiej Zolnierkiewicz
@ 2017-04-03 15:52       ` Guenter Roeck
  0 siblings, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2017-04-03 15:52 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz
  Cc: Thierry Reding, Jean Delvare, Kamil Debski, Tomasz Figa,
	linux-pwm, linux-hwmon, linux-kernel, linux-samsung-soc

On Mon, Apr 03, 2017 at 03:47:06PM +0200, Bartlomiej Zolnierkiewicz wrote:
> The suspend/resume is now properly handled by pwm-samsung driver
> (pwm-fan is currently only used by ARM Exynos boards) and the old
> code only handles ctx->pwm_value != 0 case. Just remove it.
> 
> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

Acked-by: Guenter Roeck <linux@roeck-us.net>

I assume this will be picked up with the rest of the series.
If not please let me know.

Guenter

> ---
>  drivers/hwmon/pwm-fan.c | 32 --------------------------------
>  1 file changed, 32 deletions(-)
> 
> diff --git a/drivers/hwmon/pwm-fan.c b/drivers/hwmon/pwm-fan.c
> index f9af393..9dc40f3 100644
> --- a/drivers/hwmon/pwm-fan.c
> +++ b/drivers/hwmon/pwm-fan.c
> @@ -302,37 +302,6 @@ static int pwm_fan_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM_SLEEP
> -static int pwm_fan_suspend(struct device *dev)
> -{
> -	struct pwm_fan_ctx *ctx = dev_get_drvdata(dev);
> -
> -	if (ctx->pwm_value)
> -		pwm_disable(ctx->pwm);
> -	return 0;
> -}
> -
> -static int pwm_fan_resume(struct device *dev)
> -{
> -	struct pwm_fan_ctx *ctx = dev_get_drvdata(dev);
> -	struct pwm_args pargs;
> -	unsigned long duty;
> -	int ret;
> -
> -	if (ctx->pwm_value == 0)
> -		return 0;
> -
> -	pwm_get_args(ctx->pwm, &pargs);
> -	duty = DIV_ROUND_UP(ctx->pwm_value * (pargs.period - 1), MAX_PWM);
> -	ret = pwm_config(ctx->pwm, duty, pargs.period);
> -	if (ret)
> -		return ret;
> -	return pwm_enable(ctx->pwm);
> -}
> -#endif
> -
> -static SIMPLE_DEV_PM_OPS(pwm_fan_pm, pwm_fan_suspend, pwm_fan_resume);
> -
>  static const struct of_device_id of_pwm_fan_match[] = {
>  	{ .compatible = "pwm-fan", },
>  	{},
> @@ -344,7 +313,6 @@ static int pwm_fan_resume(struct device *dev)
>  	.remove		= pwm_fan_remove,
>  	.driver	= {
>  		.name		= "pwm-fan",
> -		.pm		= &pwm_fan_pm,
>  		.of_match_table	= of_pwm_fan_match,
>  	},
>  };
> -- 
> 1.9.1
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] pwm: pwm-samsung: fix suspend/resume support
  2017-04-03 13:47     ` [PATCH 2/3] pwm: pwm-samsung: fix suspend/resume support Bartlomiej Zolnierkiewicz
@ 2017-04-04  5:40         ` kbuild test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2017-04-04  5:40 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz
  Cc: kbuild-all, Thierry Reding, Jean Delvare, Guenter Roeck,
	Kamil Debski, Tomasz Figa, linux-pwm, linux-hwmon, linux-kernel,
	linux-samsung-soc, b.zolnierkie

[-- Attachment #1: Type: text/plain, Size: 2010 bytes --]

Hi Bartlomiej,

[auto build test ERROR on hwmon/hwmon-next]
[also build test ERROR on v4.11-rc5 next-20170403]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Bartlomiej-Zolnierkiewicz/pwm-pwm-samsung-fix-suspend-resume-support/20170404-121010
base:   https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   drivers//pwm/pwm-samsung.c: In function 'pwm_samsung_resume':
>> drivers//pwm/pwm-samsung.c:626:30: error: passing argument 1 of 'pwm_samsung_manual_update' from incompatible pointer type [-Werror=incompatible-pointer-types]
       pwm_samsung_manual_update(chip, pwm);
                                 ^~~~
   drivers//pwm/pwm-samsung.c:288:13: note: expected 'struct samsung_pwm_chip *' but argument is of type 'struct pwm_chip *'
    static void pwm_samsung_manual_update(struct samsung_pwm_chip *chip,
                ^~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/pwm_samsung_manual_update +626 drivers//pwm/pwm-samsung.c

   620						our_chip->inverter_mask & BIT(i));
   621	
   622			if (chan->period_ns) {
   623				__pwm_samsung_config(chip, pwm, chan->duty_ns,
   624						     chan->period_ns, true);
   625				/* needed to make PWM disable work on Odroid-XU3 */
 > 626				pwm_samsung_manual_update(chip, pwm);
   627			}
   628	
   629			if (our_chip->disabled_mask & BIT(i))

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34549 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] pwm: pwm-samsung: fix suspend/resume support
@ 2017-04-04  5:40         ` kbuild test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2017-04-04  5:40 UTC (permalink / raw)
  Cc: kbuild-all, Thierry Reding, Jean Delvare, Guenter Roeck,
	Kamil Debski, Tomasz Figa, linux-pwm, linux-hwmon, linux-kernel,
	linux-samsung-soc, b.zolnierkie

[-- Attachment #1: Type: text/plain, Size: 2010 bytes --]

Hi Bartlomiej,

[auto build test ERROR on hwmon/hwmon-next]
[also build test ERROR on v4.11-rc5 next-20170403]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Bartlomiej-Zolnierkiewicz/pwm-pwm-samsung-fix-suspend-resume-support/20170404-121010
base:   https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   drivers//pwm/pwm-samsung.c: In function 'pwm_samsung_resume':
>> drivers//pwm/pwm-samsung.c:626:30: error: passing argument 1 of 'pwm_samsung_manual_update' from incompatible pointer type [-Werror=incompatible-pointer-types]
       pwm_samsung_manual_update(chip, pwm);
                                 ^~~~
   drivers//pwm/pwm-samsung.c:288:13: note: expected 'struct samsung_pwm_chip *' but argument is of type 'struct pwm_chip *'
    static void pwm_samsung_manual_update(struct samsung_pwm_chip *chip,
                ^~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/pwm_samsung_manual_update +626 drivers//pwm/pwm-samsung.c

   620						our_chip->inverter_mask & BIT(i));
   621	
   622			if (chan->period_ns) {
   623				__pwm_samsung_config(chip, pwm, chan->duty_ns,
   624						     chan->period_ns, true);
   625				/* needed to make PWM disable work on Odroid-XU3 */
 > 626				pwm_samsung_manual_update(chip, pwm);
   627			}
   628	
   629			if (our_chip->disabled_mask & BIT(i))

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34549 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-04-04  5:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20170403134731epcas1p411267df663cda69eb32f382011fdda08@epcas1p4.samsung.com>
2017-04-03 13:47 ` [PATCH 0/3] pwm: pwm-samsung: fix suspend/resume support Bartlomiej Zolnierkiewicz
     [not found]   ` <CGME20170403134735epcas5p252798426964621f81114614c525f38ba@epcas5p2.samsung.com>
2017-04-03 13:47     ` [PATCH 1/3] pwm: pwm-samsung: remove redundant checks from pwm_samsung_config() Bartlomiej Zolnierkiewicz
     [not found]   ` <CGME20170403134738epcas1p43be0c60fa93d85364914fc6de0cee3e2@epcas1p4.samsung.com>
2017-04-03 13:47     ` [PATCH 2/3] pwm: pwm-samsung: fix suspend/resume support Bartlomiej Zolnierkiewicz
2017-04-04  5:40       ` kbuild test robot
2017-04-04  5:40         ` kbuild test robot
     [not found]   ` <CGME20170403134742epcas1p42a7ea96e9c27d5752796ca9ff86d0f1e@epcas1p4.samsung.com>
2017-04-03 13:47     ` [PATCH 3/3] hwmon: pwm-fan: remove no longer needed suspend/resume code Bartlomiej Zolnierkiewicz
2017-04-03 15:52       ` Guenter Roeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.