Selaa lähdekoodia

greybus: bundle: add activate and deactivate

AP shall send the Bundle Activate Operation to power on a bundle, and
send the Bundle Deactivate Request after closing all the associated
connections for power down.

Testing Done:
 - Check for the return code of the bundle activate and deactivate
  operation sent

Signed-off-by: David Lin <dtwlin@google.com>
Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Alex Elder <elder@linaro.org>
David Lin 9 vuotta sitten
vanhempi
commit
2d48b5b4a8
1 muutettua tiedostoa jossa 12 lisäystä ja 0 poistoa
  1. 12 0
      drivers/staging/greybus/core.c

+ 12 - 0
drivers/staging/greybus/core.c

@@ -162,6 +162,13 @@ static int greybus_probe(struct device *dev)
 	if (!id)
 		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);
 	if (retval) {
 		/*
@@ -169,6 +176,8 @@ static int greybus_probe(struct device *dev)
 		 */
 		WARN_ON(!list_empty(&bundle->connections));
 
+		gb_control_bundle_deactivate(bundle->intf->control, bundle->id);
+
 		return retval;
 	}
 
@@ -203,6 +212,9 @@ static int greybus_remove(struct device *dev)
 	/* Catch buggy drivers that fail to destroy their connections. */
 	WARN_ON(!list_empty(&bundle->connections));
 
+	if (!bundle->intf->disconnected)
+		gb_control_bundle_deactivate(bundle->intf->control, bundle->id);
+
 	return 0;
 }