18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 28c2ecf20Sopenharmony_ci// Copyright 2017 IBM Corp. 38c2ecf20Sopenharmony_ci#include <linux/module.h> 48c2ecf20Sopenharmony_ci#include <linux/pci.h> 58c2ecf20Sopenharmony_ci#include <asm/mmu.h> 68c2ecf20Sopenharmony_ci#include "ocxl_internal.h" 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_cistatic int __init init_ocxl(void) 98c2ecf20Sopenharmony_ci{ 108c2ecf20Sopenharmony_ci int rc = 0; 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci if (!tlbie_capable) 138c2ecf20Sopenharmony_ci return -EINVAL; 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci rc = ocxl_file_init(); 168c2ecf20Sopenharmony_ci if (rc) 178c2ecf20Sopenharmony_ci return rc; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci rc = pci_register_driver(&ocxl_pci_driver); 208c2ecf20Sopenharmony_ci if (rc) { 218c2ecf20Sopenharmony_ci ocxl_file_exit(); 228c2ecf20Sopenharmony_ci return rc; 238c2ecf20Sopenharmony_ci } 248c2ecf20Sopenharmony_ci return 0; 258c2ecf20Sopenharmony_ci} 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic void exit_ocxl(void) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci pci_unregister_driver(&ocxl_pci_driver); 308c2ecf20Sopenharmony_ci ocxl_file_exit(); 318c2ecf20Sopenharmony_ci} 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cimodule_init(init_ocxl); 348c2ecf20Sopenharmony_cimodule_exit(exit_ocxl); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Open Coherent Accelerator"); 378c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL"); 38