Merge tag 'nfs-for-4.1-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[firefly-linux-kernel-4.4.55.git] / sound / hda / hdac_sysfs.c
index b358d515780238e0ed7367c9b6c9b6b46e3266d3..0a6ce3b84cc474acb96ef435d02d7a7dfd926b42 100644 (file)
@@ -36,6 +36,7 @@ static ssize_t type##_show(struct device *dev,                        \
 } \
 static DEVICE_ATTR_RO(type)
 
+CODEC_ATTR(type);
 CODEC_ATTR(vendor_id);
 CODEC_ATTR(subsystem_id);
 CODEC_ATTR(revision_id);
@@ -45,6 +46,7 @@ CODEC_ATTR_STR(vendor_name);
 CODEC_ATTR_STR(chip_name);
 
 static struct attribute *hdac_dev_attrs[] = {
+       &dev_attr_type.attr,
        &dev_attr_vendor_id.attr,
        &dev_attr_subsystem_id.attr,
        &dev_attr_revision_id.attr,
@@ -313,12 +315,12 @@ static void widget_tree_free(struct hdac_device *codec)
 
        if (!tree)
                return;
+       free_widget_node(tree->afg, &widget_afg_group);
        if (tree->nodes) {
                for (p = tree->nodes; *p; p++)
                        free_widget_node(*p, &widget_node_group);
                kfree(tree->nodes);
        }
-       free_widget_node(tree->afg, &widget_afg_group);
        if (tree->root)
                kobject_put(tree->root);
        kfree(tree);
@@ -362,13 +364,6 @@ static int widget_tree_create(struct hdac_device *codec)
        if (!tree->root)
                return -ENOMEM;
 
-       if (codec->afg) {
-               err = add_widget_node(tree->root, codec->afg,
-                                     &widget_afg_group, &tree->afg);
-               if (err < 0)
-                       return err;
-       }
-
        tree->nodes = kcalloc(codec->num_nodes + 1, sizeof(*tree->nodes),
                              GFP_KERNEL);
        if (!tree->nodes)
@@ -381,6 +376,13 @@ static int widget_tree_create(struct hdac_device *codec)
                        return err;
        }
 
+       if (codec->afg) {
+               err = add_widget_node(tree->root, codec->afg,
+                                     &widget_afg_group, &tree->afg);
+               if (err < 0)
+                       return err;
+       }
+
        kobject_uevent(tree->root, KOBJ_CHANGE);
        return 0;
 }