aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/connection.c
diff options
context:
space:
mode:
authorFabien Parent <fparent@baylibre.com>2016-02-23 18:46:08 +0100
committerGreg Kroah-Hartman <gregkh@google.com>2016-02-24 17:21:58 -0800
commit9ed5e1ba33d12dfcc693c87779f39b91c16c15b9 (patch)
treee70e391650620a9864c2cfa8c0e05b4647a20fdf /drivers/staging/greybus/connection.c
parentgreybus: arche-apb-ctrl: Return immediately if in same state from state change fns (diff)
downloadlinux-dev-9ed5e1ba33d12dfcc693c87779f39b91c16c15b9.tar.xz
linux-dev-9ed5e1ba33d12dfcc693c87779f39b91c16c15b9.zip
greybus: connection: add api to {en,dis}able unipro fct flow
In order to support mailbox-free control cport init on the bridges the AP must be able to enable/disable the flow of unipro fct tokens. Add a new API that will enable or disable on APBA the flow of fct tokens. Reviewed-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Fabien Parent <fparent@baylibre.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/connection.c')
-rw-r--r--drivers/staging/greybus/connection.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index 4f5e2adfa8c4..4ae7153ff863 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -274,6 +274,34 @@ static void gb_connection_hd_cport_disable(struct gb_connection *connection)
hd->driver->cport_disable(hd, connection->hd_cport_id);
}
+static int gb_connection_hd_fct_flow_enable(struct gb_connection *connection)
+{
+ struct gb_host_device *hd = connection->hd;
+ int ret;
+
+ if (!hd->driver->fct_flow_enable)
+ return 0;
+
+ ret = hd->driver->fct_flow_enable(hd, connection->hd_cport_id);
+ if (ret) {
+ dev_err(&hd->dev, "%s: failed to enable FCT flow: %d\n",
+ connection->name, ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static void gb_connection_hd_fct_flow_disable(struct gb_connection *connection)
+{
+ struct gb_host_device *hd = connection->hd;
+
+ if (!hd->driver->fct_flow_disable)
+ return;
+
+ hd->driver->fct_flow_disable(hd, connection->hd_cport_id);
+}
+
/*
* Request the SVC to create a connection from AP's cport to interface's
* cport.