Some of the boilerplate code can be eliminated by using this macro. The
driver was previously registered with an arch_initcall(), so technically
this is no longer the same, but when the driver is moved to the PWM
framework, deferred probing will take care of any driver probe ordering
issues.
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Tested-by: Qin Rui <qinrui@mprc.pku.edu.cn>
Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
        .probe          = puv3_pwm_probe,
        .remove         = __devexit_p(pwm_remove),
 };
-
-static int __init pwm_init(void)
-{
-       int ret = 0;
-
-       ret = platform_driver_register(&puv3_pwm_driver);
-       if (ret) {
-               printk(KERN_ERR "failed to register puv3_pwm_driver\n");
-               return ret;
-       }
-
-       return ret;
-}
-arch_initcall(pwm_init);
-
-static void __exit pwm_exit(void)
-{
-       platform_driver_unregister(&puv3_pwm_driver);
-}
-module_exit(pwm_exit);
+module_platform_driver(puv3_pwm_driver);
 
 MODULE_LICENSE("GPL v2");