# Re: \[v5 2/2\] pwm: Add Aspeed ast2600 PWM support

- From: Billy Tsai \<billy\_tsai@aspeedtech.com\>
- Date: 2021-05-17 02:53:50 
- List: linux-devicetree
- Page: https://ratatoskr.run/linux-devicetree/2021/05/1379013
- Thread: https://ratatoskr.run/linux-devicetree/2021/05/1377315/t.md

```text
Hello,

﻿On 2021/5/15, 11:57 PM,Uwe Kleine-Königwrote:

	>	> +	div_h = DIV_ROUND_DOWN_ULL(div_h,
	>	> +				   (FIELD_MAX(PWM_ASPEED_CTRL_CLK_DIV_L) + 1));
	>	> +	div_h = DIV_ROUND_DOWN_ULL(div_h, NSEC_PER_SEC);

	> As a division is an expensive operation you can better first multiply
	> NSEC_PER_SEC and FIELD_MAX(PWM_ASPEED_CTRL_CLK_DIV_L) + 1 and divide by
	> the result.

When I multiply NSEC_PER_SEC and FIELD_MAX(PWM_ASPEED_CTRL_CLK_DIV_L) + 1 the result will overflow
for 32-bits and the divisor type of do_div is 32-bits so I need to do div twice to avoid the issue.
Can you give me some suggests?

Thanks

```
