vout: optimize same mode checking for 1st setting
authorEvoke Zhang <evoke.zhang@amlogic.com>
Mon, 9 Apr 2018 09:56:03 +0000 (17:56 +0800)
committerYixun Lan <yixun.lan@amlogic.com>
Fri, 13 Apr 2018 10:10:50 +0000 (02:10 -0800)
PD#163691: vout: optimize same mode checking for 1st setting

Change-Id: Ia2be46b0f0433f09106cb8f08937baea371d4c62
Signed-off-by: Evoke Zhang <evoke.zhang@amlogic.com>
drivers/amlogic/media/vout/vout_serve/vout2_serve.c
drivers/amlogic/media/vout/vout_serve/vout_func.c
drivers/amlogic/media/vout/vout_serve/vout_func.h
drivers/amlogic/media/vout/vout_serve/vout_serve.c

index 44d9344..ed5d4ad 100644 (file)
@@ -171,6 +171,7 @@ static int set_vout2_mode(char *name)
        enum vmode_e mode;
        int ret = 0;
 
+       vout_trim_string(name);
        VOUTPR("vout2: vmode set to %s\n", name);
 
        if (strcmp(name, local_name) == 0) {
@@ -205,14 +206,15 @@ static int set_vout2_mode(char *name)
 
 static int set_vout2_init_mode(void)
 {
-       enum vmode_e vmode = VMODE_NULL;
+       enum vmode_e vmode = nulldisp_vinfo.mode;
        int ret = 0;
 
        ret = set_current_vmode2(vmode);
        if (ret) {
                VOUTERR("vout2: init mode null set error\n");
        } else {
-               snprintf(vout2_mode, VMODE_NAME_LEN_MAX, "null");
+               snprintf(local_name, VMODE_NAME_LEN_MAX, nulldisp_vinfo.name);
+               snprintf(vout2_mode, VMODE_NAME_LEN_MAX, nulldisp_vinfo.name);
                VOUTPR("vout2: init mode %s set ok\n", vout2_mode);
        }
 
index 16c3ed0..95e564a 100644 (file)
@@ -73,6 +73,30 @@ struct vinfo_s *get_invalid_vinfo(int index)
 }
 EXPORT_SYMBOL(get_invalid_vinfo);
 
+void vout_trim_string(char *str)
+{
+       char *start, *end;
+       int len;
+
+       if (str == NULL)
+               return;
+
+       len = strlen(str);
+       if ((str[len-1] == '\n') || (str[len-1] == '\r')) {
+               len--;
+               str[len] = '\0';
+       }
+
+       start = str;
+       end = str + len - 1;
+       while (*start && (*start == ' '))
+               start++;
+       while (*end && (*end == ' '))
+               *end-- = '\0';
+       strcpy(str, start);
+}
+EXPORT_SYMBOL(vout_trim_string);
+
 struct vout_module_s *vout_func_get_vout_module(void)
 {
        return &vout_module;
index d2bab48..811685d 100644 (file)
@@ -47,6 +47,7 @@ struct vout_cdev_s {
 extern int get_hpd_state(void);
 #endif
 extern int vout_get_hpd_state(void);
+extern void vout_trim_string(char *str);
 
 extern struct vinfo_s *get_invalid_vinfo(int index);
 extern struct vout_module_s *vout_func_get_vout_module(void);
index 797bce1..86f0c6a 100644 (file)
@@ -191,6 +191,7 @@ int set_vout_mode(char *name)
        enum vmode_e mode;
        int ret = 0;
 
+       vout_trim_string(name);
        VOUTPR("vmode set to %s\n", name);
 
        if (strcmp(name, local_name) == 0) {
@@ -985,6 +986,7 @@ static void vout_init_mode_parse(char *str)
         * convert to vmode when vout sever registered
         */
        snprintf(vout_mode_uboot, VMODE_NAME_LEN_MAX, "%s", str);
+       vout_trim_string(vout_mode_uboot);
        VOUTPR("%s\n", str);
 }