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