greybus: control: implement disconnecting operation
Implement the new disconnecting control operation needed for proper connection tear down. Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
aca7aab39a
commit
197616e227
@ -149,6 +149,18 @@ int gb_control_disconnected_operation(struct gb_control *control, u16 cport_id)
|
|||||||
sizeof(request), NULL, 0);
|
sizeof(request), NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int gb_control_disconnecting_operation(struct gb_control *control,
|
||||||
|
u16 cport_id)
|
||||||
|
{
|
||||||
|
struct gb_control_disconnecting_request request;
|
||||||
|
|
||||||
|
request.cport_id = cpu_to_le16(cport_id);
|
||||||
|
|
||||||
|
return gb_operation_sync(control->connection,
|
||||||
|
GB_CONTROL_TYPE_DISCONNECTING, &request,
|
||||||
|
sizeof(request), NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
int gb_control_mode_switch_operation(struct gb_control *control)
|
int gb_control_mode_switch_operation(struct gb_control *control)
|
||||||
{
|
{
|
||||||
return gb_operation_unidirectional(control->connection,
|
return gb_operation_unidirectional(control->connection,
|
||||||
|
@ -36,6 +36,8 @@ void gb_control_put(struct gb_control *control);
|
|||||||
int gb_control_get_bundle_versions(struct gb_control *control);
|
int gb_control_get_bundle_versions(struct gb_control *control);
|
||||||
int gb_control_connected_operation(struct gb_control *control, u16 cport_id);
|
int gb_control_connected_operation(struct gb_control *control, u16 cport_id);
|
||||||
int gb_control_disconnected_operation(struct gb_control *control, u16 cport_id);
|
int gb_control_disconnected_operation(struct gb_control *control, u16 cport_id);
|
||||||
|
int gb_control_disconnecting_operation(struct gb_control *control,
|
||||||
|
u16 cport_id);
|
||||||
int gb_control_mode_switch_operation(struct gb_control *control);
|
int gb_control_mode_switch_operation(struct gb_control *control);
|
||||||
int gb_control_get_manifest_size_operation(struct gb_interface *intf);
|
int gb_control_get_manifest_size_operation(struct gb_interface *intf);
|
||||||
int gb_control_get_manifest_operation(struct gb_interface *intf, void *manifest,
|
int gb_control_get_manifest_operation(struct gb_interface *intf, void *manifest,
|
||||||
|
@ -123,6 +123,7 @@ struct gb_protocol_version_response {
|
|||||||
#define GB_CONTROL_TYPE_TIMESYNC_AUTHORITATIVE 0x09
|
#define GB_CONTROL_TYPE_TIMESYNC_AUTHORITATIVE 0x09
|
||||||
/* Unused 0x0a */
|
/* Unused 0x0a */
|
||||||
#define GB_CONTROL_TYPE_BUNDLE_VERSION 0x0b
|
#define GB_CONTROL_TYPE_BUNDLE_VERSION 0x0b
|
||||||
|
#define GB_CONTROL_TYPE_DISCONNECTING 0x0c
|
||||||
#define GB_CONTROL_TYPE_TIMESYNC_GET_LAST_EVENT 0x0d
|
#define GB_CONTROL_TYPE_TIMESYNC_GET_LAST_EVENT 0x0d
|
||||||
#define GB_CONTROL_TYPE_MODE_SWITCH 0x0e
|
#define GB_CONTROL_TYPE_MODE_SWITCH 0x0e
|
||||||
|
|
||||||
@ -160,6 +161,11 @@ struct gb_control_connected_request {
|
|||||||
__le16 cport_id;
|
__le16 cport_id;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
struct gb_control_disconnecting_request {
|
||||||
|
__le16 cport_id;
|
||||||
|
} __packed;
|
||||||
|
/* disconnecting response has no payload */
|
||||||
|
|
||||||
struct gb_control_disconnected_request {
|
struct gb_control_disconnected_request {
|
||||||
__le16 cport_id;
|
__le16 cport_id;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
Loading…
Reference in New Issue
Block a user