From: Dmitry Torokhov <dtor_core@ameritech.net>
Do not call hotplug until firmware class device is completely instantiated.
FW_STATUS_LOADING,
FW_STATUS_DONE,
FW_STATUS_ABORT,
+ FW_STATUS_READY,
};
static int loading_timeout = 10; /* In seconds */
int i = 0;
char *scratch = buffer;
+ if (!test_bit(FW_STATUS_READY, &fw_priv->status))
+ return -ENODEV;
+
if (buffer_size < (FIRMWARE_NAME_MAX + 10))
return -ENOMEM;
if (num_envp < 1)
goto error_unreg;
}
+ set_bit(FW_STATUS_READY, &fw_priv->status);
*class_dev_p = class_dev;
goto out;
add_timer(&fw_priv->timeout);
}
+ kobject_hotplug("add", &class_dev->kobj);
wait_for_completion(&fw_priv->completion);
set_bit(FW_STATUS_DONE, &fw_priv->status);