]> rtime.felk.cvut.cz Git - linux-imx.git/blobdiff - drivers/firewire/core-device.c
firewire: core: wait for inaccessible devices after bus reset
[linux-imx.git] / drivers / firewire / core-device.c
index 68109e9bb04e4395bdbeadc02e0edfa9229074a8..8038311e173756d99f647e7998a3bd8fe9589069 100644 (file)
@@ -505,7 +505,7 @@ static int read_config_rom(struct fw_device *device, int generation)
                if (read_rom(device, generation, i, &rom[i]) != RCODE_COMPLETE)
                        goto out;
                /*
-                * As per IEEE1212 7.2, during power-up, devices can
+                * As per IEEE1212 7.2, during initialization, devices can
                 * reply with a 0 for the first quadlet of the config
                 * rom to indicate that they are booting (for example,
                 * if the firmware is on the disk of a external
@@ -1071,7 +1071,6 @@ static void fw_device_init(struct work_struct *work)
 
 enum {
        REREAD_BIB_ERROR,
-       REREAD_BIB_GONE,
        REREAD_BIB_UNCHANGED,
        REREAD_BIB_CHANGED,
 };
@@ -1087,7 +1086,8 @@ static int reread_config_rom(struct fw_device *device, int generation)
                        return REREAD_BIB_ERROR;
 
                if (i == 0 && q == 0)
-                       return REREAD_BIB_GONE;
+                       /* inaccessible (see read_config_rom); retry later */
+                       return REREAD_BIB_ERROR;
 
                if (q != device->config_rom[i])
                        return REREAD_BIB_CHANGED;
@@ -1114,9 +1114,6 @@ static void fw_device_refresh(struct work_struct *work)
                }
                goto give_up;
 
-       case REREAD_BIB_GONE:
-               goto gone;
-
        case REREAD_BIB_UNCHANGED:
                if (atomic_cmpxchg(&device->state,
                                   FW_DEVICE_INITIALIZING,