PWM_SIFIVE_CMPWIDTH
scale = clamp(ilog2(scale_pow) - PWM_SIFIVE_CMPWIDTH, 0, 0xf);
num = (unsigned long long)NSEC_PER_SEC << (PWM_SIFIVE_CMPWIDTH + scale);
duty = (1U << PWM_SIFIVE_CMPWIDTH) - 1 - inactive;
(1U << PWM_SIFIVE_CMPWIDTH));
num = (u64)duty_cycle * (1U << PWM_SIFIVE_CMPWIDTH);
frac = min(frac, (u64)(1U << PWM_SIFIVE_CMPWIDTH) - 1);
inactive = (1U << PWM_SIFIVE_CMPWIDTH) - 1 - frac;