1*6f05e69eSGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 28f933b10SRalf Hoppe /* 38f933b10SRalf Hoppe * HMC Drive DVD Module 48f933b10SRalf Hoppe * 58f933b10SRalf Hoppe * Copyright IBM Corp. 2013 68f933b10SRalf Hoppe * Author(s): Ralf Hoppe (rhoppe@de.ibm.com) 78f933b10SRalf Hoppe */ 88f933b10SRalf Hoppe 98f933b10SRalf Hoppe #define KMSG_COMPONENT "hmcdrv" 108f933b10SRalf Hoppe #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt 118f933b10SRalf Hoppe 128f933b10SRalf Hoppe #include <linux/kernel.h> 138f933b10SRalf Hoppe #include <linux/module.h> 148f933b10SRalf Hoppe #include <linux/moduleparam.h> 158f933b10SRalf Hoppe #include <linux/stat.h> 168f933b10SRalf Hoppe 178f933b10SRalf Hoppe #include "hmcdrv_ftp.h" 188f933b10SRalf Hoppe #include "hmcdrv_dev.h" 198f933b10SRalf Hoppe #include "hmcdrv_cache.h" 208f933b10SRalf Hoppe 218f933b10SRalf Hoppe MODULE_LICENSE("GPL"); 228f933b10SRalf Hoppe MODULE_AUTHOR("Copyright 2013 IBM Corporation"); 238f933b10SRalf Hoppe MODULE_DESCRIPTION("HMC drive DVD access"); 248f933b10SRalf Hoppe 258f933b10SRalf Hoppe /* 268f933b10SRalf Hoppe * module parameter 'cachesize' 278f933b10SRalf Hoppe */ 288f933b10SRalf Hoppe static size_t hmcdrv_mod_cachesize = HMCDRV_CACHE_SIZE_DFLT; 298f933b10SRalf Hoppe module_param_named(cachesize, hmcdrv_mod_cachesize, ulong, S_IRUGO); 308f933b10SRalf Hoppe 318f933b10SRalf Hoppe /** 328f933b10SRalf Hoppe * hmcdrv_mod_init() - module init function 338f933b10SRalf Hoppe */ 348f933b10SRalf Hoppe static int __init hmcdrv_mod_init(void) 358f933b10SRalf Hoppe { 368f933b10SRalf Hoppe int rc = hmcdrv_ftp_probe(); /* perform w/o cache */ 378f933b10SRalf Hoppe 388f933b10SRalf Hoppe if (rc) 398f933b10SRalf Hoppe return rc; 408f933b10SRalf Hoppe 418f933b10SRalf Hoppe rc = hmcdrv_cache_startup(hmcdrv_mod_cachesize); 428f933b10SRalf Hoppe 438f933b10SRalf Hoppe if (rc) 448f933b10SRalf Hoppe return rc; 458f933b10SRalf Hoppe 468f933b10SRalf Hoppe rc = hmcdrv_dev_init(); 478f933b10SRalf Hoppe 488f933b10SRalf Hoppe if (rc) 498f933b10SRalf Hoppe hmcdrv_cache_shutdown(); 508f933b10SRalf Hoppe 518f933b10SRalf Hoppe return rc; 528f933b10SRalf Hoppe } 538f933b10SRalf Hoppe 548f933b10SRalf Hoppe /** 558f933b10SRalf Hoppe * hmcdrv_mod_exit() - module exit function 568f933b10SRalf Hoppe */ 578f933b10SRalf Hoppe static void __exit hmcdrv_mod_exit(void) 588f933b10SRalf Hoppe { 598f933b10SRalf Hoppe hmcdrv_dev_exit(); 608f933b10SRalf Hoppe hmcdrv_cache_shutdown(); 618f933b10SRalf Hoppe } 628f933b10SRalf Hoppe 638f933b10SRalf Hoppe module_init(hmcdrv_mod_init); 648f933b10SRalf Hoppe module_exit(hmcdrv_mod_exit); 65