+- c = clk_get_rate(pwm->clk);
+- c = c * period_ns;
+- do_div(c, 1000000000);
+- period_cycles = c;
+-
+- prescale = period_cycles / 0x10000 + 1;
+-
+- period_cycles /= prescale;
+- c = (unsigned long long)period_cycles * duty_ns;
+- do_div(c, period_ns);
+- duty_cycles = c;
+-