]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/devfreq/exynos4_bus.c
Merge git://git.samba.org/sfrench/cifs-2.6
[mirror_ubuntu-artful-kernel.git] / drivers / devfreq / exynos4_bus.c
index 6460577d6701b468bd6edeaa1c21e739b7818918..1a361e99965ad26e6f9f93de0d94eed20bf77bad 100644 (file)
@@ -619,15 +619,19 @@ static int exynos4_bus_setvolt(struct busfreq_data *data, struct opp *opp,
        return err;
 }
 
-static int exynos4_bus_target(struct device *dev, unsigned long *_freq)
+static int exynos4_bus_target(struct device *dev, unsigned long *_freq,
+                             u32 flags)
 {
        int err = 0;
        struct platform_device *pdev = container_of(dev, struct platform_device,
                                                    dev);
        struct busfreq_data *data = platform_get_drvdata(pdev);
-       struct opp *opp = devfreq_recommended_opp(dev, _freq);
-       unsigned long old_freq = opp_get_freq(data->curr_opp);
+       struct opp *opp = devfreq_recommended_opp(dev, _freq, flags);
        unsigned long freq = opp_get_freq(opp);
+       unsigned long old_freq = opp_get_freq(data->curr_opp);
+
+       if (IS_ERR(opp))
+               return PTR_ERR(opp);
 
        if (old_freq == freq)
                return 0;
@@ -689,9 +693,7 @@ static int exynos4_get_busier_dmc(struct busfreq_data *data)
 static int exynos4_bus_get_dev_status(struct device *dev,
                                      struct devfreq_dev_status *stat)
 {
-       struct platform_device *pdev = container_of(dev, struct platform_device,
-                                                   dev);
-       struct busfreq_data *data = platform_get_drvdata(pdev);
+       struct busfreq_data *data = dev_get_drvdata(dev);
        int busier_dmc;
        int cycles_x2 = 2; /* 2 x cycles */
        void __iomem *addr;
@@ -739,9 +741,7 @@ static int exynos4_bus_get_dev_status(struct device *dev,
 
 static void exynos4_bus_exit(struct device *dev)
 {
-       struct platform_device *pdev = container_of(dev, struct platform_device,
-                                                   dev);
-       struct busfreq_data *data = platform_get_drvdata(pdev);
+       struct busfreq_data *data = dev_get_drvdata(dev);
 
        devfreq_unregister_opp_notifier(dev, data->devfreq);
 }
@@ -1087,9 +1087,7 @@ static __devexit int exynos4_busfreq_remove(struct platform_device *pdev)
 
 static int exynos4_busfreq_resume(struct device *dev)
 {
-       struct platform_device *pdev = container_of(dev, struct platform_device,
-                                                   dev);
-       struct busfreq_data *data = platform_get_drvdata(pdev);
+       struct busfreq_data *data = dev_get_drvdata(dev);
 
        busfreq_mon_reset(data);
        return 0;
@@ -1132,4 +1130,3 @@ module_exit(exynos4_busfreq_exit);
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("EXYNOS4 busfreq driver with devfreq framework");
 MODULE_AUTHOR("MyungJoo Ham <myungjoo.ham@samsung.com>");
-MODULE_ALIAS("exynos4-busfreq");