/* Read data from i2c device */
        ret = dev->em28xx_read_reg_req_len(dev, 2, addr, buf, len);
-       if (ret != len) {
-               if (ret < 0) {
-                       em28xx_warn("reading from i2c device at 0x%x failed "
-                                   "(error=%i)\n", addr, ret);
-                       return ret;
-               } else {
-                       em28xx_warn("%i bytes requested from i2c device at "
-                                   "0x%x, but %i bytes received\n",
-                                   len, addr, ret);
-                       return -EIO;
-               }
+       if (ret < 0) {
+               em28xx_warn("reading from i2c device at 0x%x failed (error=%i)\n",
+                           addr, ret);
+               return ret;
        }
+       /* NOTE: some devices with two i2c busses have the bad habit to return 0
+        * bytes if we are on bus B AND there was no write attempt to the
+        * specified slave address before AND no device is present at the
+        * requested slave address.
+        * Anyway, the next check will fail with -ENODEV in this case, so avoid
+        * spamming the system log on device probing and do nothing here.
+        */
 
        /* Check success of the i2c operation */
        ret = dev->em28xx_read_reg(dev, 0x05);