--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
@@ -671,15 +671,18 @@ 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 *stmp = *subs;
+	*value = NULL;
 
-	if (opt < 0 || *value)
+	if (*subs) {
+		*subs = strchr(stmp, ',');
+		if (*subs)
+			*(*subs)++ = 0;
+		else *subs = stmp + strlen(stmp);
+
+		*value = stmp;
 		return false;
-	fprintf(stderr, "No value given to suboption <%s>\n",
-			subopts[opt]);
+	}
 	return true;
 }