| .. SPDX-License-Identifier: GPL-2.0-only | 
|   | 
| ========================= | 
| Driver-specific callbacks | 
| ========================= | 
|   | 
| The ``pldmfw`` module relies on the device driver for implementing device | 
| specific behavior using the following operations. | 
|   | 
| ``.match_record`` | 
| ----------------- | 
|   | 
| The ``.match_record`` operation is used to determine whether a given PLDM | 
| record matches the device being updated. This requires comparing the record | 
| descriptors in the record with information from the device. Many record | 
| descriptors are defined by the PLDM standard, but it is also allowed for | 
| devices to implement their own descriptors. | 
|   | 
| The ``.match_record`` operation should return true if a given record matches | 
| the device. | 
|   | 
| ``.send_package_data`` | 
| ---------------------- | 
|   | 
| The ``.send_package_data`` operation is used to send the device-specific | 
| package data in a record to the device firmware. If the matching record | 
| provides package data, ``pldmfw`` will call the ``.send_package_data`` | 
| function with a pointer to the package data and with the package data | 
| length. The device driver should send this data to firmware. | 
|   | 
| ``.send_component_table`` | 
| ------------------------- | 
|   | 
| The ``.send_component_table`` operation is used to forward component | 
| information to the device. It is called once for each applicable component, | 
| that is, for each component indicated by the matching record. The | 
| device driver should send the component information to the device firmware, | 
| and wait for a response. The provided transfer flag indicates whether this | 
| is the first, last, or a middle component, and is expected to be forwarded | 
| to firmware as part of the component table information. The driver should an | 
| error in the case when the firmware indicates that the component cannot be | 
| updated, or return zero if the component can be updated. | 
|   | 
| ``.flash_component`` | 
| -------------------- | 
|   | 
| The ``.flash_component`` operation is used to inform the device driver to | 
| flash a given component. The driver must perform any steps necessary to send | 
| the component data to the device. | 
|   | 
| ``.finalize_update`` | 
| -------------------- | 
|   | 
| The ``.finalize_update`` operation is used by the ``pldmfw`` library in | 
| order to allow the device driver to perform any remaining device specific | 
| logic needed to finish the update. |