|
@@ -162,6 +162,13 @@ static int greybus_probe(struct device *dev)
|
|
if (!id)
|
|
if (!id)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * FIXME: We need to perform error handling on bundle activate call
|
|
|
|
+ * below when firmware is ready. We just allow the activate operation to
|
|
|
|
+ * fail for now since bundle may be in active already.
|
|
|
|
+ */
|
|
|
|
+ gb_control_bundle_activate(bundle->intf->control, bundle->id);
|
|
|
|
+
|
|
retval = driver->probe(bundle, id);
|
|
retval = driver->probe(bundle, id);
|
|
if (retval) {
|
|
if (retval) {
|
|
/*
|
|
/*
|
|
@@ -169,6 +176,8 @@ static int greybus_probe(struct device *dev)
|
|
*/
|
|
*/
|
|
WARN_ON(!list_empty(&bundle->connections));
|
|
WARN_ON(!list_empty(&bundle->connections));
|
|
|
|
|
|
|
|
+ gb_control_bundle_deactivate(bundle->intf->control, bundle->id);
|
|
|
|
+
|
|
return retval;
|
|
return retval;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -203,6 +212,9 @@ static int greybus_remove(struct device *dev)
|
|
/* Catch buggy drivers that fail to destroy their connections. */
|
|
/* Catch buggy drivers that fail to destroy their connections. */
|
|
WARN_ON(!list_empty(&bundle->connections));
|
|
WARN_ON(!list_empty(&bundle->connections));
|
|
|
|
|
|
|
|
+ if (!bundle->intf->disconnected)
|
|
|
|
+ gb_control_bundle_deactivate(bundle->intf->control, bundle->id);
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|