cpufreq: scpi: use new scpi_ops functions to remove duplicate code
authorSudeep Holla <sudeep.holla@arm.com>
Thu, 27 Apr 2017 14:20:37 +0000 (15:20 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Mon, 5 Jun 2017 10:14:35 +0000 (11:14 +0100)
scpi_ops now provide APIs to get the transition_latency and to add
OPPs to the devices making those logic redundant here.

This patch makes use of those APIs and removes the redundant code in
this driver.

Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/cpufreq/scpi-cpufreq.c

index ea7a4e1..8de2364 100644 (file)
 
 static struct scpi_ops *scpi_ops;
 
-static struct scpi_dvfs_info *scpi_get_dvfs_info(struct device *cpu_dev)
-{
-       int domain = topology_physical_package_id(cpu_dev->id);
-
-       if (domain < 0)
-               return ERR_PTR(-EINVAL);
-       return scpi_ops->dvfs_get_info(domain);
-}
-
 static int scpi_get_transition_latency(struct device *cpu_dev)
 {
-       struct scpi_dvfs_info *info = scpi_get_dvfs_info(cpu_dev);
-
-       if (IS_ERR(info))
-               return PTR_ERR(info);
-       return info->latency;
+       return scpi_ops->get_transition_latency(cpu_dev);
 }
 
 static int scpi_init_opp_table(const struct cpumask *cpumask)
 {
-       int idx, ret;
-       struct scpi_opp *opp;
+       int ret;
        struct device *cpu_dev = get_cpu_device(cpumask_first(cpumask));
-       struct scpi_dvfs_info *info = scpi_get_dvfs_info(cpu_dev);
-
-       if (IS_ERR(info))
-               return PTR_ERR(info);
-
-       if (!info->opps)
-               return -EIO;
 
-       for (opp = info->opps, idx = 0; idx < info->count; idx++, opp++) {
-               ret = dev_pm_opp_add(cpu_dev, opp->freq, opp->m_volt * 1000);
-               if (ret) {
-                       dev_warn(cpu_dev, "failed to add opp %uHz %umV\n",
-                                opp->freq, opp->m_volt);
-                       while (idx-- > 0)
-                               dev_pm_opp_remove(cpu_dev, (--opp)->freq);
-                       return ret;
-               }
+       ret = scpi_ops->add_opps_to_device(cpu_dev);
+       if (ret) {
+               dev_warn(cpu_dev, "failed to add opps to the device\n");
+               return ret;
        }
 
        ret = dev_pm_opp_set_sharing_cpus(cpu_dev, cpumask);