index = args.args[0];
- - base = devm_platform_ioremap_resource(pdev, index);
- - if (IS_ERR(base))
- - return PTR_ERR(base);
+ + res = platform_get_resource(pdev, IORESOURCE_MEM, index);
+ + if (!res) {
+ + dev_err(dev, "failed to get mem resource %d\n", index);
+ + return -ENODEV;
+ + }
+ +
+ + if (!request_mem_region(res->start, resource_size(res), res->name)) {
+ + dev_err(dev, "failed to request resource %pR\n", res);
+ + return -EBUSY;
+ + }
+
- data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
+ + base = ioremap(res->start, resource_size(res));
+ + if (IS_ERR(base)) {
+ + dev_err(dev, "failed to map resource %pR\n", res);
+ + ret = PTR_ERR(base);
+ + goto release_region;
+ + }
+
- data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
+ + data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) {
ret = -ENOMEM;
- - goto error;
+ + goto unmap_base;
}
data->soc_data = of_device_get_match_data(&pdev->dev);
dev_pm_opp_of_register_em(cpu_dev, policy->cpus);
+ if (policy_has_boost_freq(policy)) {
+ ret = cpufreq_enable_boost_support();
+ if (ret)
+ dev_warn(cpu_dev, "failed to enable boost: %d\n", ret);
+ }
+
return 0;
error:
- - devm_iounmap(dev, base);
+ + kfree(data);
+ +unmap_base:
+ + iounmap(data->base);
+ +release_region:
+ + release_mem_region(res->start, resource_size(res));
return ret;
}