1/* 2 * linux/drivers/s390/crypto/zcrypt_mono.c 3 * 4 * zcrypt 2.1.0 5 * 6 * Copyright (C) 2001, 2006 IBM Corporation 7 * Author(s): Robert Burroughs 8 * Eric Rossman (edrossma@us.ibm.com) 9 * 10 * Hotplug & misc device support: Jochen Roehrig (roehrig@de.ibm.com) 11 * Major cleanup & driver split: Martin Schwidefsky <schwidefsky@de.ibm.com> 12 * 13 * This program is free software; you can redistribute it and/or modify 14 * it under the terms of the GNU General Public License as published by 15 * the Free Software Foundation; either version 2, or (at your option) 16 * any later version. 17 * 18 * This program is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 * GNU General Public License for more details. 22 * 23 * You should have received a copy of the GNU General Public License 24 * along with this program; if not, write to the Free Software 25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 26 */ 27 28#include <linux/module.h> 29#include <linux/init.h> 30#include <linux/interrupt.h> 31#include <linux/miscdevice.h> 32#include <linux/fs.h> 33#include <linux/proc_fs.h> 34#include <linux/compat.h> 35#include <asm/atomic.h> 36#include <asm/uaccess.h> 37 38#include "ap_bus.h" 39#include "zcrypt_api.h" 40#include "zcrypt_pcica.h" 41#include "zcrypt_pcicc.h" 42#include "zcrypt_pcixcc.h" 43#include "zcrypt_cex2a.h" 44 45/** 46 * The module initialization code. 47 */ 48int __init zcrypt_init(void) 49{ 50 int rc; 51 52 rc = ap_module_init(); 53 if (rc) 54 goto out; 55 rc = zcrypt_api_init(); 56 if (rc) 57 goto out_ap; 58 rc = zcrypt_pcica_init(); 59 if (rc) 60 goto out_api; 61 rc = zcrypt_pcicc_init(); 62 if (rc) 63 goto out_pcica; 64 rc = zcrypt_pcixcc_init(); 65 if (rc) 66 goto out_pcicc; 67 rc = zcrypt_cex2a_init(); 68 if (rc) 69 goto out_pcixcc; 70 return 0; 71 72out_pcixcc: 73 zcrypt_pcixcc_exit(); 74out_pcicc: 75 zcrypt_pcicc_exit(); 76out_pcica: 77 zcrypt_pcica_exit(); 78out_api: 79 zcrypt_api_exit(); 80out_ap: 81 ap_module_exit(); 82out: 83 return rc; 84} 85 86/** 87 * The module termination code. 88 */ 89void __exit zcrypt_exit(void) 90{ 91 zcrypt_cex2a_exit(); 92 zcrypt_pcixcc_exit(); 93 zcrypt_pcicc_exit(); 94 zcrypt_pcica_exit(); 95 zcrypt_api_exit(); 96 ap_module_exit(); 97} 98 99module_init(zcrypt_init); 100module_exit(zcrypt_exit); 101