error = device_property_read_u32(dev, "offset", &val);
        if (!error) {
-               edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, val);
+               if (reg_addr->reg_offset != NO_REGISTER)
+                       edt_ft5x06_register_write(tsdata,
+                                                 reg_addr->reg_offset, val);
                tsdata->offset = val;
        }
 
        error = device_property_read_u32(dev, "offset-x", &val);
        if (!error) {
-               edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x, val);
+               if (reg_addr->reg_offset_x != NO_REGISTER)
+                       edt_ft5x06_register_write(tsdata,
+                                                 reg_addr->reg_offset_x, val);
                tsdata->offset_x = val;
        }
 
        error = device_property_read_u32(dev, "offset-y", &val);
        if (!error) {
-               edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y, val);
+               if (reg_addr->reg_offset_y != NO_REGISTER)
+                       edt_ft5x06_register_write(tsdata,
+                                                 reg_addr->reg_offset_y, val);
                tsdata->offset_y = val;
        }
 }