Commit 4068487c authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Greg Kroah-Hartman
Browse files

greybus: camera: Return the result flags from the configure_streams response



And return the response num_streams field through a pointer variable
instead of using the return value of the function as both an error code
and a positive number of streams, it makes the API more consistent.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 83ec6283
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -108,13 +108,14 @@ struct ap_csi_config_request {
} __packed;

static int gb_camera_configure_streams(struct gb_camera *gcam,
				       unsigned int nstreams,
				       unsigned int flags,
				       unsigned int *num_streams,
				       unsigned int *flags,
				       struct gb_camera_stream_config *streams)
{
	struct gb_camera_configure_streams_request *req;
	struct gb_camera_configure_streams_response *resp;
	struct ap_csi_config_request csi_cfg;
	unsigned int nstreams = *num_streams;
	unsigned int i;
	size_t req_size;
	size_t resp_size;
@@ -134,7 +135,7 @@ static int gb_camera_configure_streams(struct gb_camera *gcam,
	}

	req->num_streams = nstreams;
	req->flags = flags;
	req->flags = *flags;
	req->padding = 0;

	for (i = 0; i < nstreams; ++i) {
@@ -165,6 +166,8 @@ static int gb_camera_configure_streams(struct gb_camera *gcam,
		goto done;
	}

	*flags = resp->flags;

	for (i = 0; i < nstreams; ++i) {
		struct gb_camera_stream_config_response *cfg = &resp->config[i];

@@ -205,7 +208,8 @@ static int gb_camera_configure_streams(struct gb_camera *gcam,
		gcam_err(gcam, "failed to %s the CSI transmitter\n",
			 nstreams ? "start" : "stop");

	ret = resp->num_streams;
	*num_streams = resp->num_streams;
	ret = 0;

done:
	kfree(req);
@@ -316,6 +320,7 @@ static int gb_camera_op_configure_streams(void *priv, unsigned int nstreams,
{
	struct gb_camera *gcam = priv;
	struct gb_camera_stream_config *gb_streams;
	unsigned int flags = 0;
	unsigned int i;
	int ret;

@@ -333,7 +338,7 @@ static int gb_camera_op_configure_streams(void *priv, unsigned int nstreams,
			gb_camera_mbus_to_gb(streams[i].pixel_code);
	}

	ret = gb_camera_configure_streams(gcam, nstreams, 0, gb_streams);
	ret = gb_camera_configure_streams(gcam, &nstreams, &flags, gb_streams);
	if (ret < 0)
		goto done;

@@ -455,12 +460,11 @@ static ssize_t gb_camera_debugfs_configure_streams(struct gb_camera *gcam,
			goto done;
	}

	ret = gb_camera_configure_streams(gcam, nstreams, flags, streams);
	ret = gb_camera_configure_streams(gcam, &nstreams, &flags, streams);
	if (ret < 0)
		goto done;

	nstreams = ret;
	buffer->length = sprintf(buffer->data, "%u;", nstreams);
	buffer->length = sprintf(buffer->data, "%u;%u;", nstreams, flags);

	for (i = 0; i < nstreams; ++i) {
		struct gb_camera_stream_config *stream = &streams[i];