diff options
| author | Anand S Sawant <sawant@ti.com> | 2011-02-17 10:57:30 -0500 |
|---|---|---|
| committer | Kevin Hilman <khilman@ti.com> | 2011-03-09 19:38:37 -0500 |
| commit | b1ace38094c4926255343a81faba8fb4faf59a45 (patch) | |
| tree | 8756958fac9c5d9361273767aec409fdaa1e6960 /arch/arm/mach-omap2/smartreflex.c | |
| parent | dd31394779aa288eb6b9c42672ffcb6d05d6c414 (diff) | |
OMAP2+: smartreflex: remove SR debug directory in omap_sr_remove()
omap_sr_probe() creates the smartreflex debug directory and its
underlying nvalue debug directory. These directories are removed in
omap_sr_remove().
Basic smartreflex functionality tested on OMAP3630 Zoom3 & OMAP4430 SDP
Signed-off-by: Anand S Sawant <sawant@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/smartreflex.c')
| -rw-r--r-- | arch/arm/mach-omap2/smartreflex.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c index b57ae502e0c7..0ab4dd5081ee 100644 --- a/arch/arm/mach-omap2/smartreflex.c +++ b/arch/arm/mach-omap2/smartreflex.c | |||
| @@ -54,6 +54,7 @@ struct omap_sr { | |||
| 54 | struct list_head node; | 54 | struct list_head node; |
| 55 | struct omap_sr_nvalue_table *nvalue_table; | 55 | struct omap_sr_nvalue_table *nvalue_table; |
| 56 | struct voltagedomain *voltdm; | 56 | struct voltagedomain *voltdm; |
| 57 | struct dentry *dbg_dir; | ||
| 57 | }; | 58 | }; |
| 58 | 59 | ||
| 59 | /* sr_list contains all the instances of smartreflex module */ | 60 | /* sr_list contains all the instances of smartreflex module */ |
| @@ -823,7 +824,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
| 823 | struct omap_sr *sr_info = kzalloc(sizeof(struct omap_sr), GFP_KERNEL); | 824 | struct omap_sr *sr_info = kzalloc(sizeof(struct omap_sr), GFP_KERNEL); |
| 824 | struct omap_sr_data *pdata = pdev->dev.platform_data; | 825 | struct omap_sr_data *pdata = pdev->dev.platform_data; |
| 825 | struct resource *mem, *irq; | 826 | struct resource *mem, *irq; |
| 826 | struct dentry *vdd_dbg_dir, *dbg_dir, *nvalue_dir; | 827 | struct dentry *vdd_dbg_dir, *nvalue_dir; |
| 827 | struct omap_volt_data *volt_data; | 828 | struct omap_volt_data *volt_data; |
| 828 | int i, ret = 0; | 829 | int i, ret = 0; |
| 829 | 830 | ||
| @@ -898,24 +899,24 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
| 898 | goto err_release_region; | 899 | goto err_release_region; |
| 899 | } | 900 | } |
| 900 | 901 | ||
| 901 | dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir); | 902 | sr_info->dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir); |
| 902 | if (IS_ERR(dbg_dir)) { | 903 | if (IS_ERR(sr_info->dbg_dir)) { |
| 903 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", | 904 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", |
| 904 | __func__); | 905 | __func__); |
| 905 | ret = PTR_ERR(dbg_dir); | 906 | ret = PTR_ERR(sr_info->dbg_dir); |
| 906 | goto err_release_region; | 907 | goto err_release_region; |
| 907 | } | 908 | } |
| 908 | 909 | ||
| 909 | (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, dbg_dir, | 910 | (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, |
| 910 | (void *)sr_info, &pm_sr_fops); | 911 | sr_info->dbg_dir, (void *)sr_info, &pm_sr_fops); |
| 911 | (void) debugfs_create_x32("errweight", S_IRUGO, dbg_dir, | 912 | (void) debugfs_create_x32("errweight", S_IRUGO, sr_info->dbg_dir, |
| 912 | &sr_info->err_weight); | 913 | &sr_info->err_weight); |
| 913 | (void) debugfs_create_x32("errmaxlimit", S_IRUGO, dbg_dir, | 914 | (void) debugfs_create_x32("errmaxlimit", S_IRUGO, sr_info->dbg_dir, |
| 914 | &sr_info->err_maxlimit); | 915 | &sr_info->err_maxlimit); |
| 915 | (void) debugfs_create_x32("errminlimit", S_IRUGO, dbg_dir, | 916 | (void) debugfs_create_x32("errminlimit", S_IRUGO, sr_info->dbg_dir, |
| 916 | &sr_info->err_minlimit); | 917 | &sr_info->err_minlimit); |
| 917 | 918 | ||
| 918 | nvalue_dir = debugfs_create_dir("nvalue", dbg_dir); | 919 | nvalue_dir = debugfs_create_dir("nvalue", sr_info->dbg_dir); |
| 919 | if (IS_ERR(nvalue_dir)) { | 920 | if (IS_ERR(nvalue_dir)) { |
| 920 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory" | 921 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory" |
| 921 | "for n-values\n", __func__); | 922 | "for n-values\n", __func__); |
| @@ -972,6 +973,8 @@ static int __devexit omap_sr_remove(struct platform_device *pdev) | |||
| 972 | 973 | ||
| 973 | if (sr_info->autocomp_active) | 974 | if (sr_info->autocomp_active) |
| 974 | sr_stop_vddautocomp(sr_info); | 975 | sr_stop_vddautocomp(sr_info); |
| 976 | if (sr_info->dbg_dir) | ||
| 977 | debugfs_remove_recursive(sr_info->dbg_dir); | ||
| 975 | 978 | ||
| 976 | list_del(&sr_info->node); | 979 | list_del(&sr_info->node); |
| 977 | iounmap(sr_info->base); | 980 | iounmap(sr_info->base); |
