1 // SPDX-License-Identifier: GPL-2.0 2 /* Copyright(c) 2023 Advanced Micro Devices, Inc */ 3 4 #include "core.h" 5 6 int pdsc_setup(struct pdsc *pdsc, bool init) 7 { 8 int err = 0; 9 10 if (init) 11 err = pdsc_dev_init(pdsc); 12 else 13 err = pdsc_dev_reinit(pdsc); 14 if (err) 15 return err; 16 17 clear_bit(PDSC_S_FW_DEAD, &pdsc->state); 18 return 0; 19 } 20 21 void pdsc_teardown(struct pdsc *pdsc, bool removing) 22 { 23 pdsc_devcmd_reset(pdsc); 24 25 if (removing) { 26 kfree(pdsc->intr_info); 27 pdsc->intr_info = NULL; 28 } 29 30 if (pdsc->kern_dbpage) { 31 iounmap(pdsc->kern_dbpage); 32 pdsc->kern_dbpage = NULL; 33 } 34 35 set_bit(PDSC_S_FW_DEAD, &pdsc->state); 36 } 37