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