struct i2c_client       *client = i2c_verify_client(dev);
        int                     addr = *(int *)addrp;
 
-       if (client && client->addr == addr)
+       if (client && i2c_encode_flags_to_addr(client) == addr)
                return -EBUSY;
        return 0;
 }
        }
 
        /* Check for address business */
-       status = i2c_check_addr_busy(adap, client->addr);
+       status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client));
        if (status)
                goto out_err;
 
                return err;
        }
 
-       /* Skip if already in use */
+       /* Skip if already in use (7 bit, no need to encode flags) */
        if (i2c_check_addr_busy(adapter, addr))
                return 0;
 
                        continue;
                }
 
-               /* Check address availability */
+               /* Check address availability (7 bit, no need to encode flags) */
                if (i2c_check_addr_busy(adap, addr_list[i])) {
                        dev_dbg(&adap->dev, "Address 0x%02x already in "
                                "use, not probing\n", addr_list[i]);