Loading drivers/regulator/core.c +29 −1 Original line number Diff line number Diff line Loading @@ -81,6 +81,9 @@ struct regulator { char *supply_name; struct device_attribute dev_attr; struct regulator_dev *rdev; #ifdef CONFIG_DEBUG_FS struct dentry *debugfs; #endif }; static int _regulator_is_enabled(struct regulator_dev *rdev); Loading Loading @@ -1093,7 +1096,28 @@ static struct regulator *create_regulator(struct regulator_dev *rdev, dev->kobj.name, err); goto link_name_err; } } else { regulator->supply_name = kstrdup(supply_name, GFP_KERNEL); if (regulator->supply_name == NULL) goto attr_err; } #ifdef CONFIG_DEBUG_FS regulator->debugfs = debugfs_create_dir(regulator->supply_name, rdev->debugfs); if (IS_ERR_OR_NULL(regulator->debugfs)) { rdev_warn(rdev, "Failed to create debugfs directory\n"); regulator->debugfs = NULL; } else { debugfs_create_u32("uA_load", 0444, regulator->debugfs, ®ulator->uA_load); debugfs_create_u32("min_uV", 0444, regulator->debugfs, ®ulator->min_uV); debugfs_create_u32("max_uV", 0444, regulator->debugfs, ®ulator->max_uV); } #endif mutex_unlock(&rdev->mutex); return regulator; link_name_err: Loading Loading @@ -1272,13 +1296,17 @@ void regulator_put(struct regulator *regulator) mutex_lock(®ulator_list_mutex); rdev = regulator->rdev; #ifdef CONFIG_DEBUG_FS debugfs_remove_recursive(regulator->debugfs); #endif /* remove any sysfs entries */ if (regulator->dev) { sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); kfree(regulator->supply_name); device_remove_file(regulator->dev, ®ulator->dev_attr); kfree(regulator->dev_attr.attr.name); } kfree(regulator->supply_name); list_del(®ulator->list); kfree(regulator); Loading Loading
drivers/regulator/core.c +29 −1 Original line number Diff line number Diff line Loading @@ -81,6 +81,9 @@ struct regulator { char *supply_name; struct device_attribute dev_attr; struct regulator_dev *rdev; #ifdef CONFIG_DEBUG_FS struct dentry *debugfs; #endif }; static int _regulator_is_enabled(struct regulator_dev *rdev); Loading Loading @@ -1093,7 +1096,28 @@ static struct regulator *create_regulator(struct regulator_dev *rdev, dev->kobj.name, err); goto link_name_err; } } else { regulator->supply_name = kstrdup(supply_name, GFP_KERNEL); if (regulator->supply_name == NULL) goto attr_err; } #ifdef CONFIG_DEBUG_FS regulator->debugfs = debugfs_create_dir(regulator->supply_name, rdev->debugfs); if (IS_ERR_OR_NULL(regulator->debugfs)) { rdev_warn(rdev, "Failed to create debugfs directory\n"); regulator->debugfs = NULL; } else { debugfs_create_u32("uA_load", 0444, regulator->debugfs, ®ulator->uA_load); debugfs_create_u32("min_uV", 0444, regulator->debugfs, ®ulator->min_uV); debugfs_create_u32("max_uV", 0444, regulator->debugfs, ®ulator->max_uV); } #endif mutex_unlock(&rdev->mutex); return regulator; link_name_err: Loading Loading @@ -1272,13 +1296,17 @@ void regulator_put(struct regulator *regulator) mutex_lock(®ulator_list_mutex); rdev = regulator->rdev; #ifdef CONFIG_DEBUG_FS debugfs_remove_recursive(regulator->debugfs); #endif /* remove any sysfs entries */ if (regulator->dev) { sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); kfree(regulator->supply_name); device_remove_file(regulator->dev, ®ulator->dev_attr); kfree(regulator->dev_attr.attr.name); } kfree(regulator->supply_name); list_del(®ulator->list); kfree(regulator); Loading