|
@@ -563,10 +563,8 @@ static void fw_dev_release(struct device *dev)
|
|
kfree(fw_priv);
|
|
kfree(fw_priv);
|
|
}
|
|
}
|
|
|
|
|
|
-static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
|
|
|
|
|
|
+static int do_firmware_uevent(struct firmware_priv *fw_priv, struct kobj_uevent_env *env)
|
|
{
|
|
{
|
|
- struct firmware_priv *fw_priv = to_firmware_priv(dev);
|
|
|
|
-
|
|
|
|
if (add_uevent_var(env, "FIRMWARE=%s", fw_priv->buf->fw_id))
|
|
if (add_uevent_var(env, "FIRMWARE=%s", fw_priv->buf->fw_id))
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
if (add_uevent_var(env, "TIMEOUT=%i", loading_timeout))
|
|
if (add_uevent_var(env, "TIMEOUT=%i", loading_timeout))
|
|
@@ -577,6 +575,18 @@ static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
|
|
|
|
+{
|
|
|
|
+ struct firmware_priv *fw_priv = to_firmware_priv(dev);
|
|
|
|
+ int err = 0;
|
|
|
|
+
|
|
|
|
+ mutex_lock(&fw_lock);
|
|
|
|
+ if (fw_priv->buf)
|
|
|
|
+ err = do_firmware_uevent(fw_priv, env);
|
|
|
|
+ mutex_unlock(&fw_lock);
|
|
|
|
+ return err;
|
|
|
|
+}
|
|
|
|
+
|
|
static struct class firmware_class = {
|
|
static struct class firmware_class = {
|
|
.name = "firmware",
|
|
.name = "firmware",
|
|
.class_attrs = firmware_class_attrs,
|
|
.class_attrs = firmware_class_attrs,
|