static struct platform_device *amd_hsmp_platdev;
 
+static int hsmp_plat_dev_register(void)
+{
+       int ret;
+
+       amd_hsmp_platdev = platform_device_alloc(DRIVER_NAME, PLATFORM_DEVID_NONE);
+       if (!amd_hsmp_platdev)
+               return -ENOMEM;
+
+       ret = platform_device_add(amd_hsmp_platdev);
+       if (ret)
+               platform_device_put(amd_hsmp_platdev);
+
+       return ret;
+}
+
 static int __init hsmp_plt_init(void)
 {
        int ret = -ENODEV;
        if (ret)
                return ret;
 
-       amd_hsmp_platdev = platform_device_alloc(DRIVER_NAME, PLATFORM_DEVID_NONE);
-       if (!amd_hsmp_platdev) {
-               ret = -ENOMEM;
-               goto drv_unregister;
-       }
-
-       ret = platform_device_add(amd_hsmp_platdev);
-       if (ret) {
-               platform_device_put(amd_hsmp_platdev);
-               goto drv_unregister;
-       }
-
-       return 0;
+       ret = hsmp_plat_dev_register();
+       if (ret)
+               platform_driver_unregister(&amd_hsmp_driver);
 
-drv_unregister:
-       platform_driver_unregister(&amd_hsmp_driver);
        return ret;
 }