// SPDX-License-Identifier: GPL-2.0 /* Copyright(c) 2023 Advanced Micro Devices, Inc */ #include <linux/pci.h> #include "core.h" #include <linux/pds/pds_auxbus.h> /** * pds_client_register - Link the client to the firmware * @pf: ptr to the PF driver's private data struct * @devname: name that includes service into, e.g. pds_core.vDPA * * Return: positive client ID (ci) on success, or * negative for error */ int pds_client_register(struct pdsc *pf, char *devname) { … } EXPORT_SYMBOL_GPL(…); /** * pds_client_unregister - Unlink the client from the firmware * @pf: ptr to the PF driver's private data struct * @client_id: id returned from pds_client_register() * * Return: 0 on success, or * negative for error */ int pds_client_unregister(struct pdsc *pf, u16 client_id) { … } EXPORT_SYMBOL_GPL(…); /** * pds_client_adminq_cmd - Process an adminq request for the client * @padev: ptr to the client device * @req: ptr to buffer with request * @req_len: length of actual struct used for request * @resp: ptr to buffer where answer is to be copied * @flags: optional flags from pds_core_adminq_flags * * Return: 0 on success, or * negative for error * * Client sends pointers to request and response buffers * Core copies request data into pds_core_client_request_cmd * Core sets other fields as needed * Core posts to AdminQ * Core copies completion data into response buffer */ int pds_client_adminq_cmd(struct pds_auxiliary_dev *padev, union pds_core_adminq_cmd *req, size_t req_len, union pds_core_adminq_comp *resp, u64 flags) { … } EXPORT_SYMBOL_GPL(…); static void pdsc_auxbus_dev_release(struct device *dev) { … } static struct pds_auxiliary_dev *pdsc_auxbus_dev_register(struct pdsc *cf, struct pdsc *pf, u16 client_id, char *name) { … } int pdsc_auxbus_dev_del(struct pdsc *cf, struct pdsc *pf) { … } int pdsc_auxbus_dev_add(struct pdsc *cf, struct pdsc *pf) { … }