mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
47 lines
1.9 KiB
ReStructuredText
47 lines
1.9 KiB
ReStructuredText
![]() |
.. 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.
|