aw_pwm: fix selection of the prescaler

Prescaling divides the frequency, not multiplies it.

MFC after:	2 weeks
This commit is contained in:
Andriy Gapon 2020-09-25 07:40:02 +00:00
parent 108d235ae6
commit 1c2c602a17
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=366139

View File

@ -274,7 +274,7 @@ aw_pwm_channel_config(device_t dev, u_int channel, u_int period, u_int duty)
for (i = 0; i < nitems(aw_pwm_clk_prescaler); i++) {
if (aw_pwm_clk_prescaler[i] == 0)
continue;
div = (AW_PWM_MAX_FREQ * aw_pwm_clk_prescaler[i]) / period_freq;
div = AW_PWM_MAX_FREQ / aw_pwm_clk_prescaler[i] / period_freq;
if ((div - 1) < AW_PWM_PERIOD_TOTAL_MASK ) {
prescaler = i;
clk_rate = AW_PWM_MAX_FREQ / aw_pwm_clk_prescaler[i];