int i = 0, count = 0;
        __le32 *buffer = dev->d_i2c.cpu_addr;
        int err = 0;
-       int address_err = 0;
        int short_delay = 0;
 
        if (mutex_lock_interruptible(&dev->i2c_lock))
                                   i2c address probing, however, and address errors indicate that a
                                   device is really *not* there. retrying in that case
                                   increases the time the device needs to probe greatly, so
-                                  it should be avoided. because of the fact, that only
-                                  analog based cards use irq based i2c transactions (for dvb
-                                  cards, this screwes up other interrupt sources), we bail out
-                                  completely for analog cards after an address error and trust
-                                  the saa7146 address error detection. */
-                               if ( -EREMOTEIO == err ) {
-                                       if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) {
-                                               goto out;
-                                       }
-                                       address_err++;
-                               }
+                                  it should be avoided. So we bail out in irq mode after an
+                                  address error and trust the saa7146 address error detection. */
+                               if (-EREMOTEIO == err && 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags))
+                                       goto out;
                                DEB_I2C(("error while sending message(s). starting again.\n"));
                                break;
                        }
 
        } while (err != num && retries--);
 
-       /* if every retry had an address error, exit right away */
-       if (address_err == retries) {
+       /* quit if any error occurred */
+       if (err != num)
                goto out;
-       }
 
        /* if any things had to be read, get the results */
        if ( 0 != saa7146_i2c_msg_cleanup(msgs, num, buffer)) {