|
@@ -183,7 +183,7 @@ static void sr_set_regfields(struct omap_sr *sr)
|
|
|
sr->err_weight = OMAP3430_SR_ERRWEIGHT;
|
|
|
sr->err_maxlimit = OMAP3430_SR_ERRMAXLIMIT;
|
|
|
sr->accum_data = OMAP3430_SR_ACCUMDATA;
|
|
|
- if (!(strcmp(sr->voltdm->name, "mpu"))) {
|
|
|
+ if (!(strcmp(sr->name, "sr1"))) {
|
|
|
sr->senn_avgweight = OMAP3430_SR1_SENNAVGWEIGHT;
|
|
|
sr->senp_avgweight = OMAP3430_SR1_SENPAVGWEIGHT;
|
|
|
} else {
|
|
@@ -234,19 +234,13 @@ static void sr_stop_vddautocomp(struct omap_sr *sr)
|
|
|
*/
|
|
|
static int sr_late_init(struct omap_sr *sr_info)
|
|
|
{
|
|
|
- char *name;
|
|
|
struct omap_sr_data *pdata = sr_info->pdev->dev.platform_data;
|
|
|
struct resource *mem;
|
|
|
int ret = 0;
|
|
|
|
|
|
if (sr_class->notify && sr_class->notify_flags && sr_info->irq) {
|
|
|
- name = kasprintf(GFP_KERNEL, "sr_%s", sr_info->voltdm->name);
|
|
|
- if (name == NULL) {
|
|
|
- ret = -ENOMEM;
|
|
|
- goto error;
|
|
|
- }
|
|
|
ret = request_irq(sr_info->irq, sr_interrupt,
|
|
|
- 0, name, sr_info);
|
|
|
+ 0, sr_info->name, sr_info);
|
|
|
if (ret)
|
|
|
goto error;
|
|
|
disable_irq(sr_info->irq);
|
|
@@ -265,7 +259,6 @@ error:
|
|
|
dev_err(&sr_info->pdev->dev, "%s: ERROR in registering"
|
|
|
"interrupt handler. Smartreflex will"
|
|
|
"not function as desired\n", __func__);
|
|
|
- kfree(name);
|
|
|
kfree(sr_info);
|
|
|
|
|
|
return ret;
|
|
@@ -395,8 +388,7 @@ int sr_configure_errgen(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return PTR_ERR(sr);
|
|
|
}
|
|
|
|
|
@@ -463,8 +455,7 @@ int sr_disable_errgen(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return PTR_ERR(sr);
|
|
|
}
|
|
|
|
|
@@ -514,8 +505,7 @@ int sr_configure_minmax(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return PTR_ERR(sr);
|
|
|
}
|
|
|
|
|
@@ -600,8 +590,7 @@ int sr_enable(struct voltagedomain *voltdm, unsigned long volt)
|
|
|
int ret;
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return PTR_ERR(sr);
|
|
|
}
|
|
|
|
|
@@ -654,8 +643,7 @@ void sr_disable(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -735,8 +723,7 @@ void omap_sr_enable(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -768,8 +755,7 @@ void omap_sr_disable(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -801,8 +787,7 @@ void omap_sr_disable_reset_volt(struct voltagedomain *voltdm)
|
|
|
struct omap_sr *sr = _sr_lookup(voltdm);
|
|
|
|
|
|
if (IS_ERR(sr)) {
|
|
|
- pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
|
|
- __func__, voltdm->name);
|
|
|
+ pr_warning("%s: omap_sr struct for voltdm not found\n", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -889,7 +874,6 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|
|
struct dentry *nvalue_dir;
|
|
|
struct omap_volt_data *volt_data;
|
|
|
int i, ret = 0;
|
|
|
- char *name;
|
|
|
|
|
|
sr_info = kzalloc(sizeof(struct omap_sr), GFP_KERNEL);
|
|
|
if (!sr_info) {
|
|
@@ -926,6 +910,14 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|
|
pm_runtime_enable(&pdev->dev);
|
|
|
pm_runtime_irq_safe(&pdev->dev);
|
|
|
|
|
|
+ sr_info->name = kasprintf(GFP_KERNEL, "%s", pdata->name);
|
|
|
+ if (!sr_info->name) {
|
|
|
+ dev_err(&pdev->dev, "%s: Unable to alloc SR instance name\n",
|
|
|
+ __func__);
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto err_release_region;
|
|
|
+ }
|
|
|
+
|
|
|
sr_info->pdev = pdev;
|
|
|
sr_info->srid = pdev->id;
|
|
|
sr_info->voltdm = pdata->voltdm;
|
|
@@ -973,20 +965,12 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- name = kasprintf(GFP_KERNEL, "sr_%s", sr_info->voltdm->name);
|
|
|
- if (!name) {
|
|
|
- dev_err(&pdev->dev, "%s: Unable to alloc debugfs name\n",
|
|
|
- __func__);
|
|
|
- ret = -ENOMEM;
|
|
|
- goto err_iounmap;
|
|
|
- }
|
|
|
- sr_info->dbg_dir = debugfs_create_dir(name, sr_dbg_dir);
|
|
|
- kfree(name);
|
|
|
+ sr_info->dbg_dir = debugfs_create_dir(sr_info->name, sr_dbg_dir);
|
|
|
if (IS_ERR_OR_NULL(sr_info->dbg_dir)) {
|
|
|
dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n",
|
|
|
__func__);
|
|
|
ret = PTR_ERR(sr_info->dbg_dir);
|
|
|
- goto err_iounmap;
|
|
|
+ goto err_free_name;
|
|
|
}
|
|
|
|
|
|
(void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR,
|
|
@@ -1008,10 +992,10 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|
|
|
|
|
omap_voltage_get_volttable(sr_info->voltdm, &volt_data);
|
|
|
if (!volt_data) {
|
|
|
- dev_warn(&pdev->dev, "%s: No Voltage table for the"
|
|
|
- " corresponding vdd vdd_%s. Cannot create debugfs"
|
|
|
+ dev_warn(&pdev->dev, "%s: %s: No Voltage table for the"
|
|
|
+ " corresponding vdd. Cannot create debugfs"
|
|
|
"entries for n-values\n",
|
|
|
- __func__, sr_info->voltdm->name);
|
|
|
+ __func__, sr_info->name);
|
|
|
ret = -ENODATA;
|
|
|
goto err_debugfs;
|
|
|
}
|
|
@@ -1029,6 +1013,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|
|
|
|
|
err_debugfs:
|
|
|
debugfs_remove_recursive(sr_info->dbg_dir);
|
|
|
+err_free_name:
|
|
|
+ kfree(sr_info->name);
|
|
|
err_iounmap:
|
|
|
list_del(&sr_info->node);
|
|
|
iounmap(sr_info->base);
|
|
@@ -1065,6 +1051,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev)
|
|
|
|
|
|
list_del(&sr_info->node);
|
|
|
iounmap(sr_info->base);
|
|
|
+ kfree(sr_info->name);
|
|
|
kfree(sr_info);
|
|
|
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
release_mem_region(mem->start, resource_size(mem));
|