From 60f94eac0fa347074db394ae724f2e37f79b27b8 Mon Sep 17 00:00:00 2001 From: Bharat B Panda Date: Wed, 23 Feb 2022 17:36:41 +0530 Subject: [PATCH] Distinct flag for guest android (civ) Changes made to declare, set/reset civ flag on guest start. Currently this is used by iwlwifi to load specific set of wifi drivers for BM and CiV. The flag is named generic for future usage by other modules. Signed-off-by: Bharat B Panda --- src/guest/aaf.c | 10 ++++++++++ src/guest/guest.c | 7 +++++++ src/guest/start.c | 10 ++++++++++ src/guest/tui.c | 1 + src/include/guest/aaf.h | 10 ++++++++-- src/include/guest/guest.h | 2 ++ 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/guest/aaf.c b/src/guest/aaf.c index a195866..fec99ec 100644 --- a/src/guest/aaf.c +++ b/src/guest/aaf.c @@ -33,6 +33,11 @@ static const char *suspend_support[] = { [AAF_SUSPEND_ENABLE] = "suspend:true" }; +static const char *civ_flag_support[] = { + [AAF_CIV_DISABLE] = "civ_flag:false", + [AAF_CIV_ENABLE] = "civ_flag:true" +}; + static char *aaf_file = NULL; static const char *aaf_config_array[AAF_CONFIG_NUM] = { NULL }; @@ -105,6 +110,11 @@ int set_aaf_option(aaf_config_opt_t opt, unsigned int sub) return -1; aaf_config_array[AAF_CONFIG_GPU_TYPE] = gpu_type[sub]; break; + case AAF_CONFIG_CIV: + if (sub >AAF_CIV_DISABLE) + return -1; + aaf_config_array[AAF_CONFIG_CIV] = civ_flag_support[sub]; + break; default: fprintf(stderr, "%s: Invalid AAF config option!\n", __func__); break; diff --git a/src/guest/guest.c b/src/guest/guest.c index f053892..d8d6fa7 100644 --- a/src/guest/guest.c +++ b/src/guest/guest.c @@ -138,6 +138,8 @@ int load_form_data(char *name) set_field_data(FORM_INDEX_AAF_PATH, val); val = g_key_file_get_string(in, g->name, g->key[AAF_SUSPEND], NULL); set_field_data(FORM_INDEX_AAF_SUSPEND, val); + val = g_key_file_get_string(in, g->name, g->key[AAF_CIV], NULL); + set_field_data(FORM_INDEX_AAF_CIV, val); g = &g_group[GROUP_GUEST_SERVICE]; val = g_key_file_get_string(in, g->name, g->key[GUEST_TIME_KEEP], NULL); @@ -315,6 +317,11 @@ int generate_keyfile(void) g_key_file_set_string(out, g_group[GROUP_AAF].name, g_group[GROUP_AAF].key[AAF_SUSPEND], temp); } + get_field_data(FORM_INDEX_AAF_CIV, temp, sizeof(temp) - 1); + if (0 == check_field(g_group[GROUP_AAF].key[AAF_CIV], temp)) { + g_key_file_set_string(out, g_group[GROUP_AAF].name, g_group[GROUP_AAF].key[AAF_CIV], temp); + } + get_field_data(FORM_INDEX_PCI_PT, temp, sizeof(temp) - 1); g_key_file_set_string(out, g_group[GROUP_PCI_PT].name, g_group[GROUP_PCI_PT].key[PCI_PT], temp); diff --git a/src/guest/start.c b/src/guest/start.c index ba54d30..ce68f23 100644 --- a/src/guest/start.c +++ b/src/guest/start.c @@ -605,6 +605,16 @@ int start_guest(char *name) else g_warning("Invalid setting of AAF Allow suspend option, it should be either true or false\n"); } + + val = g_key_file_get_string(gkf, g->name, g->key[AAF_CIV], NULL); + if (val) { + if (0 == strcmp(val, CIV_ENABLE_STR)) + set_aaf_option(AAF_CONFIG_CIV, AAF_CIV_ENABLE); + else if (0 == strcmp(val, CIV_DISABLE_STR)) + set_aaf_option(AAF_CONFIG_CIV, AAF_CIV_DISABLE); + else + g_warning("Invalid setting of AAF Allow CiV option, it should be either true or false\n"); + } } g = &g_group[GROUP_VGPU]; diff --git a/src/guest/tui.c b/src/guest/tui.c index 70f1a8f..5b7d49c 100644 --- a/src/guest/tui.c +++ b/src/guest/tui.c @@ -363,6 +363,7 @@ int set_field_data(form_index_t index, const char *in) set_field_buffer(g_form_field_data[index].input.f, 0, buf); break; case FORM_INDEX_AAF_SUSPEND: + case FORM_INDEX_AAF_CIV: set_opts_buffer(g_form_field_data[index].input.f, in); break; default: diff --git a/src/include/guest/aaf.h b/src/include/guest/aaf.h index 71e7036..a152976 100644 --- a/src/include/guest/aaf.h +++ b/src/include/guest/aaf.h @@ -11,7 +11,8 @@ typedef enum { AAF_CONFIG_GPU_TYPE = 0, AAF_CONFIG_SUSPEND, - AAF_CONFIG_NUM + AAF_CONFIG_NUM, + AAF_CONFIG_CIV } aaf_config_opt_t; enum { @@ -19,6 +20,11 @@ enum { AAF_SUSPEND_ENABLE }; +enum { + AAF_CIV_DISABLE = 0, + AAF_CIV_ENABLE +}; + enum { AAF_GPU_TYPE_VIRTIO = 0, AAF_GPU_TYPE_GVTG, @@ -29,4 +35,4 @@ int set_aaf_path(const char *bin_path); int set_aaf_option(aaf_config_opt_t opt, unsigned int sub); int flush_aaf_config(void); -#endif /* __AAF_H__ */ \ No newline at end of file +#endif /* __AAF_H__ */ diff --git a/src/include/guest/guest.h b/src/include/guest/guest.h index 5fcdecb..b0e4afa 100644 --- a/src/include/guest/guest.h +++ b/src/include/guest/guest.h @@ -56,6 +56,7 @@ typedef enum { FORM_INDEX_THERMAL_MED, FORM_INDEX_AAF_PATH, FORM_INDEX_AAF_SUSPEND, + FORM_INDEX_AAF_CIV, FORM_INDEX_GUEST_TIME_KEEP, FORM_INDEX_PM_CONTROL, FORM_INDEX_EXTRA_CMD, @@ -183,6 +184,7 @@ enum { /* Sub key of group aaf */ AAF_PATH = 0, AAF_SUSPEND, + AAF_CIV, /* Guest services */ GUEST_TIME_KEEP = 0,