| .. SPDX-License-Identifier: GPL-2.0 |
| |
| ================ |
| fwctl pds driver |
| ================ |
| |
| :Author: Shannon Nelson |
| |
| Overview |
| ======== |
| |
| The PDS Core device makes a fwctl service available through an |
| auxiliary_device named pds_core.fwctl.N. The pds_fwctl driver binds to |
| this device and registers itself with the fwctl subsystem. The resulting |
| userspace interface is used by an application that is a part of the |
| AMD Pensando software package for the Distributed Service Card (DSC). |
| |
| The pds_fwctl driver has little knowledge of the firmware's internals. |
| It only knows how to send commands through pds_core's message queue to the |
| firmware for fwctl requests. The set of fwctl operations available |
| depends on the firmware in the DSC, and the userspace application |
| version must match the firmware so that they can talk to each other. |
| |
| When a connection is created the pds_fwctl driver requests from the |
| firmware a list of firmware object endpoints, and for each endpoint the |
| driver requests a list of operations for that endpoint. |
| |
| Each operation description includes a firmware defined command attribute |
| that maps to the FWCTL scope levels. The driver translates those firmware |
| values into the FWCTL scope values which can then be used for filtering the |
| scoped user requests. |
| |
| pds_fwctl User API |
| ================== |
| |
| Each RPC request includes the target endpoint and the operation id, and in |
| and out buffer lengths and pointers. The driver verifies the existence |
| of the requested endpoint and operations, then checks the request scope |
| against the required scope of the operation. The request is then put |
| together with the request data and sent through pds_core's message queue |
| to the firmware, and the results are returned to the caller. |
| |
| The RPC endpoints, operations, and buffer contents are defined by the |
| particular firmware package in the device, which varies across the |
| available product configurations. The details are available in the |
| specific product SDK documentation. |