u64 mul, div;
 
        if (caps->lowest_freq && caps->nominal_freq) {
-               mul = caps->nominal_freq - caps->lowest_freq;
+               /* Avoid special case when nominal_freq is equal to lowest_freq */
+               if (caps->lowest_freq == caps->nominal_freq) {
+                       mul = caps->nominal_freq;
+                       div = caps->nominal_perf;
+               } else {
+                       mul = caps->nominal_freq - caps->lowest_freq;
+                       div = caps->nominal_perf - caps->lowest_perf;
+               }
                mul *= KHZ_PER_MHZ;
-               div = caps->nominal_perf - caps->lowest_perf;
                offset = caps->nominal_freq * KHZ_PER_MHZ -
                         div64_u64(caps->nominal_perf * mul, div);
        } else {
 {
        s64 retval, offset = 0;
        static u64 max_khz;
-       u64  mul, div;
+       u64 mul, div;
 
        if (caps->lowest_freq && caps->nominal_freq) {
-               mul = caps->nominal_perf - caps->lowest_perf;
-               div = caps->nominal_freq - caps->lowest_freq;
+               /* Avoid special case when nominal_freq is equal to lowest_freq */
+               if (caps->lowest_freq == caps->nominal_freq) {
+                       mul = caps->nominal_perf;
+                       div = caps->nominal_freq;
+               } else {
+                       mul = caps->nominal_perf - caps->lowest_perf;
+                       div = caps->nominal_freq - caps->lowest_freq;
+               }
                /*
                 * We don't need to convert to kHz for computing offset and can
                 * directly use nominal_freq and lowest_freq as the div64_u64