if (ret)
                goto exit_nfc_init;
 
+       dev_info(this->dev, "driver registered.\n");
+
        return 0;
 
 exit_nfc_init:
 exit_acquire_resources:
        platform_set_drvdata(pdev, NULL);
        kfree(this);
+       dev_err(this->dev, "driver registration failed: %d\n", ret);
+
        return ret;
 }
 
-static int __exit gpmi_nand_remove(struct platform_device *pdev)
+static int __devexit gpmi_nand_remove(struct platform_device *pdev)
 {
        struct gpmi_nand_data *this = platform_get_drvdata(pdev);
 
                .of_match_table = gpmi_nand_id_table,
        },
        .probe   = gpmi_nand_probe,
-       .remove  = __exit_p(gpmi_nand_remove),
+       .remove  = __devexit_p(gpmi_nand_remove),
        .id_table = gpmi_ids,
 };
-
-static int __init gpmi_nand_init(void)
-{
-       int err;
-
-       err = platform_driver_register(&gpmi_nand_driver);
-       if (err == 0)
-               pr_info("driver registered.\n");
-       else
-               pr_err("driver registration failed.\n");
-       return err;
-}
-
-static void __exit gpmi_nand_exit(void)
-{
-       platform_driver_unregister(&gpmi_nand_driver);
-}
-
-module_init(gpmi_nand_init);
-module_exit(gpmi_nand_exit);
+module_platform_driver(gpmi_nand_driver);
 
 MODULE_AUTHOR("Freescale Semiconductor, Inc.");
 MODULE_DESCRIPTION("i.MX GPMI NAND Flash Controller Driver");