client->addr = res->start;
        platform_set_drvdata(pdev, data);
 
-       company = dme1737_read(client, DME1737_REG_COMPANY);
-       device = dme1737_read(client, DME1737_REG_DEVICE);
+       /* Skip chip detection if module is loaded with force_id parameter */
+       if (!force_id) {
+               company = dme1737_read(client, DME1737_REG_COMPANY);
+               device = dme1737_read(client, DME1737_REG_DEVICE);
 
-       if (!((company == DME1737_COMPANY_SMSC) &&
-             (device == SCH311X_DEVICE))) {
-               err = -ENODEV;
-               goto exit_kfree;
+               if (!((company == DME1737_COMPANY_SMSC) &&
+                     (device == SCH311X_DEVICE))) {
+                       err = -ENODEV;
+                       goto exit_kfree;
+               }
        }
        data->type = -1;