diff options
author | Shannon Nelson <shannon.nelson@amd.com> | 2023-04-19 20:04:15 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2023-04-21 10:29:12 +0300 |
commit | 523847df1b3718d6286dce0ed1c83742fe0ffa94 (patch) | |
tree | c63a0ebb0865397ba73a2db01032529e6d6237f9 /drivers/net/ethernet/amd/pds_core/core.c | |
parent | 55435ea7729accb5b8a330de751836c4be524834 (diff) | |
download | linux-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.c | 36 |
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); +} |