summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/amd/pds_core/core.c
diff options
context:
space:
mode:
authorShannon Nelson <shannon.nelson@amd.com>2023-04-19 20:04:15 +0300
committerDavid S. Miller <davem@davemloft.net>2023-04-21 10:29:12 +0300
commit523847df1b3718d6286dce0ed1c83742fe0ffa94 (patch)
treec63a0ebb0865397ba73a2db01032529e6d6237f9 /drivers/net/ethernet/amd/pds_core/core.c
parent55435ea7729accb5b8a330de751836c4be524834 (diff)
downloadlinux-523847df1b3718d6286dce0ed1c83742fe0ffa94.tar.xz
pds_core: add devcmd device interfaces
The devcmd interface is the basic connection to the device through the PCI BAR for low level identification and command services. This does the early device initialization and finds the identity data, and adds devcmd routines to be used by later driver bits. Signed-off-by: Shannon Nelson <shannon.nelson@amd.com> Acked-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/amd/pds_core/core.c')
-rw-r--r--drivers/net/ethernet/amd/pds_core/core.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/net/ethernet/amd/pds_core/core.c b/drivers/net/ethernet/amd/pds_core/core.c
new file mode 100644
index 000000000000..80d2ecb045df
--- /dev/null
+++ b/drivers/net/ethernet/amd/pds_core/core.c
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright(c) 2023 Advanced Micro Devices, Inc */
+
+#include "core.h"
+
+int pdsc_setup(struct pdsc *pdsc, bool init)
+{
+ int err = 0;
+
+ if (init)
+ err = pdsc_dev_init(pdsc);
+ else
+ err = pdsc_dev_reinit(pdsc);
+ if (err)
+ return err;
+
+ clear_bit(PDSC_S_FW_DEAD, &pdsc->state);
+ return 0;
+}
+
+void pdsc_teardown(struct pdsc *pdsc, bool removing)
+{
+ pdsc_devcmd_reset(pdsc);
+
+ if (removing) {
+ kfree(pdsc->intr_info);
+ pdsc->intr_info = NULL;
+ }
+
+ if (pdsc->kern_dbpage) {
+ iounmap(pdsc->kern_dbpage);
+ pdsc->kern_dbpage = NULL;
+ }
+
+ set_bit(PDSC_S_FW_DEAD, &pdsc->state);
+}