/* Module related routines Prepare to be unloaded. Free IRQ's and release all resources. This is called just before this module is unloaded. It is not called, if the usage count is !0, so we don't need to check for that.  */
static void __exit ctcm_exit(void)
/* Module related routines Prepare to be unloaded. Free IRQ's and release all resources. This is called just before this module is unloaded. It is not called, if the usage count is !0, so we don't need to check for that.  */
static void __exit ctcm_exit(void)
{
	driver_remove_file(&ctcm_group_driver.driver, &driver_attr_group);
	ccwgroup_driver_unregister(&ctcm_group_driver);
	ccw_driver_unregister(&ctcm_ccw_driver);
	root_device_unregister(ctcm_root_dev);
	ctcm_unregister_dbf_views();
	pr_info("CTCM driver unloaded\n");
}