diff --git a/drivers/staging/greybus/control.c b/drivers/staging/greybus/control.c index 55bb465e16f1b005c9935324102651c19b16cf13..37a30b3075cefb363cc52e443ff7627eba4bfce5 100644 --- a/drivers/staging/greybus/control.c +++ b/drivers/staging/greybus/control.c @@ -546,6 +546,27 @@ void gb_control_disable(struct gb_control *control) gb_connection_disable(control->connection); } +int gb_control_suspend(struct gb_control *control) +{ + gb_connection_disable(control->connection); + + return 0; +} + +int gb_control_resume(struct gb_control *control) +{ + int ret; + + ret = gb_connection_enable_tx(control->connection); + if (ret) { + dev_err(&control->connection->intf->dev, + "failed to enable control connection: %d\n", ret); + return ret; + } + + return 0; +} + int gb_control_add(struct gb_control *control) { int ret; diff --git a/drivers/staging/greybus/control.h b/drivers/staging/greybus/control.h index 86a4902604b67fc061dbb13feacc88737c347723..f73ec3e297ba0570af88a323450d75920132c690 100644 --- a/drivers/staging/greybus/control.h +++ b/drivers/staging/greybus/control.h @@ -29,6 +29,8 @@ struct gb_control { struct gb_control *gb_control_create(struct gb_interface *intf); int gb_control_enable(struct gb_control *control); void gb_control_disable(struct gb_control *control); +int gb_control_suspend(struct gb_control *control); +int gb_control_resume(struct gb_control *control); int gb_control_add(struct gb_control *control); void gb_control_del(struct gb_control *control); struct gb_control *gb_control_get(struct gb_control *control);