static int __init nsm_driver_init()

in nsm-driver/nsm.c [666:707]


static int __init nsm_driver_init(void)
{
	int rc;

	mutex_init(&nsm_lock);
	init_waitqueue_head(&nsm_waitqueue);

	rc = misc_register(&nsm_driver_miscdevice);

	if (rc) {
		pr_err("NSM driver initialization error: %d.\n", rc);
		return rc;
	}

	pr_debug("NSM driver version = 10.%d.\n",
		NSM_DEV_MINOR);

	nsm_dev = NULL;
	rc = register_virtio_driver(&virtio_nsm_driver);
	if (rc) {
		pr_err("NSM driver initialization error: %d.\n", rc);
		goto err_unreg_misc;
	}

	rc = hwrng_register(&nsm_hwrng);
	if (rc) {
		pr_err("NSM RNG initialization error: %d.\n", rc);
		goto err_unreg_hwrng;
	}

	pr_debug("NSM device ID = %X.\n",
	    virtio_nsm_driver.id_table[0].device);

	return rc;

err_unreg_hwrng:
	hwrng_unregister(&nsm_hwrng);
err_unreg_misc:
	misc_deregister(&nsm_driver_miscdevice);
	nsm_dev = NULL;
	return rc;
}