for (i = 0; i < priv->num_sensors; ++i)
                priv->sensor[i].slope = 3000;
 
+       priv->sensor[0].p1_calib_offset = 1;
+       priv->sensor[0].p2_calib_offset = 1;
+       priv->sensor[1].p1_calib_offset = -4;
+       priv->sensor[1].p2_calib_offset = -2;
+       priv->sensor[2].p1_calib_offset = 4;
+       priv->sensor[2].p2_calib_offset = 8;
+       priv->sensor[3].p1_calib_offset = -3;
+       priv->sensor[3].p2_calib_offset = -5;
+       priv->sensor[4].p1_calib_offset = -4;
+       priv->sensor[4].p2_calib_offset = -4;
+
        return init_common(priv);
 }
 
 
                        p1[i] = p1[i] + (base1 << shift);
                break;
        case TWO_PT_CALIB:
+       case TWO_PT_CALIB_NO_OFFSET:
                for (i = 0; i < priv->num_sensors; i++)
                        p2[i] = (p2[i] + base2) << shift;
                fallthrough;
        case ONE_PT_CALIB2:
+       case ONE_PT_CALIB2_NO_OFFSET:
                for (i = 0; i < priv->num_sensors; i++)
                        p1[i] = (p1[i] + base1) << shift;
                break;
                }
        }
 
+       /* Apply calibration offset workaround except for _NO_OFFSET modes */
+       switch (mode) {
+       case TWO_PT_CALIB:
+               for (i = 0; i < priv->num_sensors; i++)
+                       p2[i] += priv->sensor[i].p2_calib_offset;
+               fallthrough;
+       case ONE_PT_CALIB2:
+               for (i = 0; i < priv->num_sensors; i++)
+                       p1[i] += priv->sensor[i].p1_calib_offset;
+               break;
+       }
+
        return mode;
 }
 
 
                if (!priv->sensor[i].slope)
                        priv->sensor[i].slope = SLOPE_DEFAULT;
-               if (mode == TWO_PT_CALIB) {
+               if (mode == TWO_PT_CALIB || mode == TWO_PT_CALIB_NO_OFFSET) {
                        /*
                         * slope (m) = adc_code2 - adc_code1 (y2 - y1)/
                         *      temp_120_degc - temp_30_degc (x2 - x1)
 
 #define ONE_PT_CALIB           0x1
 #define ONE_PT_CALIB2          0x2
 #define TWO_PT_CALIB           0x3
+#define ONE_PT_CALIB2_NO_OFFSET        0x6
+#define TWO_PT_CALIB_NO_OFFSET 0x7
 #define CAL_DEGC_PT1           30
 #define CAL_DEGC_PT2           120
 #define SLOPE_FACTOR           1000
        unsigned int                    hw_id;
        int                             slope;
        u32                             status;
+       int                             p1_calib_offset;
+       int                             p2_calib_offset;
 };
 
 /**