--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
@@ -785,15 +785,17 @@ static bool parse_subset(char *optarg)
 
 static bool parse_next_subopt(char **subs, char **value)
 {
-	static char *const subopts[] = {
-	    NULL
-	};
-	int opt = getsubopt(subs, subopts, value);
+	char *p = *subs;
+	*value = *subs;
 
-	if (opt < 0 || *value)
-		return false;
-	fprintf(stderr, "Missing suboption value\n");
-	return true;
+	while (*p && *p != ',')
+		p++;
+
+	if (*p)
+		*p++ = '\0';
+
+	*subs = p;
+	return false;
 }
 
 void common_cmd(const std::string &media_bus_info, int ch, char *optarg)
