Patchwork [U-Boot,4/9,v2] Exynos: Avoid a divide by zero by specifying a non-zero period for pwm 4

login
register
mail settings
Submitter Akshay Saraswat
Date Feb. 28, 2013, 10:59 a.m.
Message ID <1362049164-10297-5-git-send-email-akshay.s@samsung.com>
Download mbox | patch
Permalink /patch/223871/
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Comments

Akshay Saraswat - Feb. 28, 2013, 10:59 a.m.
The pwm_config function in the exynos pwm driver divides by its period
period parameter. A function was calling pwm_config with a 0ns period and a
0ns duty cycle. That doesn't actually make any sense physically, and results
in a divide by zero in the driver. This change changes the paremters to be a
100000ns period and duty cycle.

Test with command "sf probe 1:0; time sf read 40008000 0 1000".
Try with different numbers of bytes and see that sane values are obtained
Build and boot U-boot with this patch, backlight works properly.

Signed-off-by: Gabe Black <gabeblack@google.com>
Signed-off-by: Akshay Saraswat <akshay.s@samsung.com>
Acked-by: Simon Glass <sjg@chromium.org>
---
Changes since v1:
        - Added "Acked-by: Simon Glass".

 arch/arm/cpu/armv7/s5p-common/timer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Minkyu Kang - March 28, 2013, 5:53 a.m.
On 28/02/13 19:59, Akshay Saraswat wrote:
> The pwm_config function in the exynos pwm driver divides by its period
> period parameter. A function was calling pwm_config with a 0ns period and a
> 0ns duty cycle. That doesn't actually make any sense physically, and results
> in a divide by zero in the driver. This change changes the paremters to be a

typo.
paremters -> parameter

> 100000ns period and duty cycle.
> 
> Test with command "sf probe 1:0; time sf read 40008000 0 1000".
> Try with different numbers of bytes and see that sane values are obtained
> Build and boot U-boot with this patch, backlight works properly.
> 
> Signed-off-by: Gabe Black <gabeblack@google.com>
> Signed-off-by: Akshay Saraswat <akshay.s@samsung.com>
> Acked-by: Simon Glass <sjg@chromium.org>
> ---
> Changes since v1:
>         - Added "Acked-by: Simon Glass".
> 
>  arch/arm/cpu/armv7/s5p-common/timer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/cpu/armv7/s5p-common/timer.c b/arch/arm/cpu/armv7/s5p-common/timer.c
> index de61405..6a0fa58 100644
> --- a/arch/arm/cpu/armv7/s5p-common/timer.c
> +++ b/arch/arm/cpu/armv7/s5p-common/timer.c
> @@ -58,7 +58,7 @@ int timer_init(void)
>  {
>  	/* PWM Timer 4 */
>  	pwm_init(4, MUX_DIV_4, 0);
> -	pwm_config(4, 0, 0);
> +	pwm_config(4, 100000, 100000);

0 is a numerator.
I think.. it doesn't matter.

>  	pwm_enable(4);
>  
>  	/* Use this as the current monotonic time in us */
> 

Thanks,
Minkyu Kang.

Patch

diff --git a/arch/arm/cpu/armv7/s5p-common/timer.c b/arch/arm/cpu/armv7/s5p-common/timer.c
index de61405..6a0fa58 100644
--- a/arch/arm/cpu/armv7/s5p-common/timer.c
+++ b/arch/arm/cpu/armv7/s5p-common/timer.c
@@ -58,7 +58,7 @@  int timer_init(void)
 {
 	/* PWM Timer 4 */
 	pwm_init(4, MUX_DIV_4, 0);
-	pwm_config(4, 0, 0);
+	pwm_config(4, 100000, 100000);
 	pwm_enable(4);
 
 	/* Use this as the current monotonic time in us */