Merge "agm: update config params if device is not in closed state"
diff --git a/service/inc/private/agm/device.h b/service/inc/private/agm/device.h
index 0324658..7fda4a3 100644
--- a/service/inc/private/agm/device.h
+++ b/service/inc/private/agm/device.h
@@ -240,5 +240,6 @@
 int device_get_group_list(struct aif_info *aif_list, size_t *num_groups);
 
 int device_get_start_refcnt(struct device_obj *dev_obj);
+int device_get_state(struct device_obj *dev_obj);
 bool get_file_path_extn(char* file_path_extn, char* file_path_extn_wo_variant);
 #endif
diff --git a/service/src/device.c b/service/src/device.c
index 7c03b25..743972f 100644
--- a/service/src/device.c
+++ b/service/src/device.c
@@ -937,6 +937,19 @@
 
 }
 
+int device_get_state(struct device_obj *dev_obj)
+{
+    if (dev_obj == NULL) {
+        AGM_LOGE("Invalid device object\n");
+        return DEV_CLOSED;
+    }
+
+    if (dev_obj->parent_dev)
+        return dev_obj->parent_dev->state;
+    else
+        return dev_obj->state;
+}
+
 static struct device_group_data* device_get_group_data_by_name(char *dev_name)
 {
     struct device_group_data *grp_data = NULL;
diff --git a/service/src/session_obj.c b/service/src/session_obj.c
index 92b4b75..a39997d 100644
--- a/service/src/session_obj.c
+++ b/service/src/session_obj.c
@@ -660,8 +660,8 @@
         return ret;
 
     pthread_mutex_lock(&dev_obj->lock);
-    if ((dev_obj->state == DEV_OPENED || dev_obj->state == DEV_STARTED ||
-        dev_obj->state == DEV_PREPARED) && dev_obj->params != NULL) {
+
+    if ((device_get_state(dev_obj) != DEV_CLOSED) && dev_obj->params != NULL) {
         ret = graph_set_config(sess_obj->graph, dev_obj->params,
                 dev_obj->params_size);
         if (ret)
@@ -1049,7 +1049,7 @@
                     goto done;
                 }
 
-                if (ec_ref_dev_obj->state != DEV_STARTED) {
+                if (device_get_state(ec_ref_dev_obj) != DEV_STARTED) {
                     AGM_LOGE("Error:%d Device object with aif id:%d\n"
                               "not in STARTED state, current state:%d\n",
                               ret, sess_obj->ec_ref_aif_id,