Skip to content

Commit

Permalink
drivers: video: gc2145: set_fmt: branch on failure rather than success
Browse files Browse the repository at this point in the history
This aims to make the code more linear by having the for loop
validates the input format rather than search for a match.

Signed-off-by: Josuah Demangeon <[email protected]>
  • Loading branch information
josuah committed Sep 21, 2024
1 parent 51ee0b9 commit 207952e
Showing 1 changed file with 21 additions and 18 deletions.
39 changes: 21 additions & 18 deletions drivers/video/gc2145.c
Original file line number Diff line number Diff line change
Expand Up @@ -1001,31 +1001,34 @@ static int gc2145_set_fmt(const struct device *dev, enum video_endpoint_id ep,
}

/* Check if camera is capable of handling given format */
for (int i = 0; i < ARRAY_SIZE(fmts); i++) {
for (int i = 0;; i++) {
if (i == ARRAY_SIZE(fmts)) {
LOG_ERR("Image format not supported\n");
return -ENOTSUP;
}
if (fmts[i].width_min == width && fmts[i].height_min == height &&
fmts[i].pixelformat == fmt->pixelformat) {
drv_data->fmt = *fmt;
break;
}
}

/* Set output format */
ret = gc2145_set_output_format(dev, fmt->pixelformat);
if (ret < 0) {
LOG_ERR("Failed to set the output format");
return ret;
}
drv_data->fmt = *fmt;

/* Set window size */
ret = gc2145_set_resolution(dev, fmt->width, fmt->height);
if (ret < 0) {
LOG_ERR("Failed to set the resolution");
}
/* Set output format */
ret = gc2145_set_output_format(dev, fmt->pixelformat);
if (ret < 0) {
LOG_ERR("Failed to set the output format");
return ret;
}

return ret;
}
/* Set window size */
ret = gc2145_set_resolution(dev, fmt->width, fmt->height);
if (ret < 0) {
LOG_ERR("Failed to set the resolution");
return ret;
}

/* Camera is not capable of handling given format */
LOG_ERR("Image format not supported\n");
return -ENOTSUP;
return 0;
}

static int gc2145_get_fmt(const struct device *dev, enum video_endpoint_id ep,
Expand Down

0 comments on commit 207952e

Please sign in to comment.