int i, err;
        int adap_id = i2c_adapter_id(adapter);
 
-       /* Forget it if we can't probe using SMBUS_QUICK */
-       if (! i2c_check_functionality(adapter,I2C_FUNC_SMBUS_QUICK))
-               return -1;
-
        /* Force entries are done first, and are not affected by ignore
           entries */
        if (address_data->forces) {
                }
        }
 
+       /* Stop here if we can't use SMBUS_QUICK */
+       if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) {
+               if (address_data->probe[0] == I2C_CLIENT_END
+                && address_data->normal_i2c[0] == I2C_CLIENT_END)
+                       return 0;
+
+               dev_warn(&adapter->dev, "SMBus Quick command not supported, "
+                        "can't probe for chips\n");
+               return -1;
+       }
+
        /* Probe entries are done second, and are not affected by ignore
           entries either */
        for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) {