/* Return value: 0 on success / other on failure  */
static int __init ibmvfc_module_init(void)
/* Return value: 0 on success / other on failure  */
static int __init ibmvfc_module_init(void)
{
	int rc;
	if (!firmware_has_feature(FW_FEATURE_VIO))
		return -ENODEV;
	printk(KERN_INFO IBMVFC_NAME": IBM Virtual Fibre Channel Driver version: %s %s\n",
	       IBMVFC_DRIVER_VERSION, IBMVFC_DRIVER_DATE);
	ibmvfc_transport_template = fc_attach_transport(&ibmvfc_transport_functions);
	if (!ibmvfc_transport_template)
		return -ENOMEM;
	rc = vio_register_driver(&ibmvfc_driver);
	if (rc)
		fc_release_transport(ibmvfc_transport_template);
	return rc;
}