.shutdown       = pvr_shutdown,
 };
 
+static void pvr_dummy_release(struct device *dev)
+{
+}
+
+static struct sgx_platform_data pvr_pdata;
+
+static struct platform_device pvr_device = {
+       .name           = DRVNAME,
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &pvr_pdata,
+               .release        = pvr_dummy_release,
+       }
+};
+
 static int __init pvr_init(void)
 {
        int error;
        if (error < 0)
                goto err4;
 
+       pvr_pdata.fclock_max = 200000000;
+       error = platform_device_register(&pvr_device);
+       if (error < 0)
+               goto err5;
+
        pvr_init_events();
 
        return 0;
 
+err5:
+       platform_driver_unregister(&pvr_driver);
 err4:
        PVRMMapCleanup();
        LinuxBridgeDeInit();
        pvr_exit_events();
 
        platform_driver_unregister(&pvr_driver);
+       platform_device_unregister(&pvr_device);
 
        PVRMMapCleanup();
        LinuxMMCleanup();