From ac3d24930226fac39ea6023577a03b9b5da4d5f6 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 23 Nov 2014 17:45:20 -0800 Subject: [PATCH] greybus: vibrator-gb: convert to use gb_operation_sync This converts the vibrator protocol driver to use gb_operation_sync, removing the hand-rolled version of the same function, as well as removing an open-coded version for a request when turning on the vibrator motor. Signed-off-by: Greg Kroah-Hartman Reviewed-by: Alex Elder --- drivers/staging/greybus/vibrator-gb.c | 60 ++++----------------------- 1 file changed, 8 insertions(+), 52 deletions(-) diff --git a/drivers/staging/greybus/vibrator-gb.c b/drivers/staging/greybus/vibrator-gb.c index b65a586b87c9..d00301dce8f0 100644 --- a/drivers/staging/greybus/vibrator-gb.c +++ b/drivers/staging/greybus/vibrator-gb.c @@ -42,35 +42,6 @@ struct gb_vibrator_on_request { __le16 timeout_ms; }; -/* - * The get_version and turn_off vibrator operations have no payload. - * This function implements these requests by allowing the caller to - * supply a buffer into which the operation response should be - * copied. The turn_off operation, there is no response either. - * If there is an error, the response buffer is left alone. - */ -static int request_operation(struct gb_connection *connection, int type, - void *response, int response_size) -{ - struct gb_operation *operation; - int ret; - - operation = gb_operation_create(connection, type, 0, response_size); - if (!operation) - return -ENOMEM; - - /* Synchronous operation--no callback */ - ret = gb_operation_request_send(operation, NULL); - if (ret) - pr_err("version operation failed (%d)\n", ret); - else if (response_size && response) - memcpy(response, operation->response->payload, - response_size); - gb_operation_destroy(operation); - - return ret; -} - /* * This request only uses the connection field, and if successful, * fills in the major and minor protocol version of the target. @@ -81,8 +52,9 @@ static int get_version(struct gb_vibrator_device *vib) struct gb_vibrator_proto_version_response version_response; int retval; - retval = request_operation(connection, + retval = gb_operation_sync(connection, GB_VIBRATOR_TYPE_PROTOCOL_VERSION, + NULL, 0, &version_response, sizeof(version_response)); if (retval) return retval; @@ -101,33 +73,17 @@ static int get_version(struct gb_vibrator_device *vib) static int turn_on(struct gb_vibrator_device *vib, u16 timeout_ms) { - struct gb_connection *connection = vib->connection; - struct gb_operation *operation; - struct gb_vibrator_on_request *request; - int retval; + struct gb_vibrator_on_request request; - operation = gb_operation_create(connection, GB_VIBRATOR_TYPE_ON, - sizeof(*request), 0); - if (!operation) - return -ENOMEM; - request = operation->request->payload; - request->timeout_ms = cpu_to_le16(timeout_ms); - - /* Synchronous operation--no callback */ - retval = gb_operation_request_send(operation, NULL); - if (retval) - dev_err(&connection->dev, - "send data operation failed (%d)\n", retval); - gb_operation_destroy(operation); - - return retval; + request.timeout_ms = cpu_to_le16(timeout_ms); + return gb_operation_sync(vib->connection, GB_VIBRATOR_TYPE_ON, + &request, sizeof(request), NULL, 0); } static int turn_off(struct gb_vibrator_device *vib) { - struct gb_connection *connection = vib->connection; - - return request_operation(connection, GB_VIBRATOR_TYPE_OFF, NULL, 0); + return gb_operation_sync(vib->connection, GB_VIBRATOR_TYPE_OFF, + NULL, 0, NULL, 0); } static ssize_t timeout_store(struct device *dev, struct device_attribute *attr,