description: > Implement the Hoth command control interface. methods: - name: SendHostCommand description: > Send a host command to Hoth and return the response. This will block on Hoth completing its internal operations. Critical host commands like LoadTokens are banned. This method should be called from the IPMI HostCommand passthrough. parameters: - name: Command type: array[byte] description: > Data to write to Hoth SPI host command offset. returns: - name: Response type: array[byte] description: > Data read from Hoth SPI host command offset. errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - xyz.openbmc_project.Common.Error.Timeout - name: SendTrustedHostCommand description: > Send a host command to Hoth and return the response. This will block on Hoth completing its internal operations. Critical host commands like LoadTokens are allowed. This method should be called from the BMC. parameters: - name: Command type: array[byte] description: > Data to write to Hoth SPI host command offset. returns: - name: Response type: array[byte] description: > Data read from Hoth SPI host command offset. errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - xyz.openbmc_project.Common.Error.Timeout - name: SendHostCommandAsync description: > Send a host command to Hoth and immediately return without waiting for response. Caller can either poll with calls to GetHostCommandResponse until retrieving the response, or wait for a ResponseReady signal. parameters: - name: Command type: array[byte] description: > Data to write to Hoth SPI host command offset. returns: - name: CallToken type: uint64 description: > The representation for the call made errors: - self.Error.CommandFailure - name: GetHostCommandResponse description: > Read the response from Hoth mailbox. parameters: - name: CallToken type: uint64 description: > The token returned from SendHostCommandAsync() returns: - name: Response type: array[byte] description: > Data read from Hoth SPI host command offset errors: - self.Error.ResponseFailure - self.Error.ResponseNotFound - self.Error.InterfaceError - name: UpdateFirmware description: > Write given firmware data to the Hoth firmware partition in EEPROM. parameters: - name: FirmwareData type: array[byte] description: > Hoth firmware image errors: - self.Error.FirmwareFailure - name: GetFirmwareUpdateStatus description: > Get the status of the firmware update process. returns: - name: Status type: enum[self.FirmwareUpdateStatus] description: > Status of the firmware update - name: InitiatePayload description: > Initiates erasure of the EEPROM staging area. Note that this will lock up access to Hoth for an extended time and may go over the kernel's SPI write timeout. Calling multiple small ErasePayload is recommended. errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - name: GetInitiatePayloadStatus description: > Get the status of the payload initiation process. returns: - name: Status type: enum[self.FirmwareUpdateStatus] description: > Status of the payload initiation - name: ErasePayload description: > Erases the given size starting at the specified offset of the staging partition. parameters: - name: Offset type: uint32 description: > Offset of the staging partition to start erasing from. - name: Size type: uint32 description: > Size of the staging partition to erase. errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - name: SendPayload description: > Chunk and send the binary specified in the image path parameters: - name: ImagePath type: string description: > Firmware image path errors: - self.Error.FirmwareFailure - self.Error.InterfaceError - name: GetSendPayloadStatus description: > Get the status of the send payload process. returns: - name: Status type: enum[self.FirmwareUpdateStatus] description: > Status of the send payload process. - name: VerifyPayload description: > Initiates the verification process without activating the staging area errors: - self.Error.InterfaceError - name: GetVerifyPayloadStatus description: > Get the status of the payload verification process. returns: - name: Status type: enum[self.FirmwareUpdateStatus] description: > Status of the payload verification - name: ActivatePayload description: > Activates the staging area as persistent or non-persistent for next boot if verification was successful. parameters: - name: MakePersistent type: boolean description: > Flag to determine whether to activate the staged image as persistent or non-persistent for next boot. errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - name: GetPayloadSize description: > Determines the max size of the payload region. returns: - name: Size type: uint32 description: > The size of the payload region errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - name: Confirm description: > Prevents hoth from rolling back and using the previous image. When an image can be comfirmed to be working well, this command is given, which disarms the hoth watchdog. errors: - self.Error.CommandFailure - self.Error.ResponseFailure - self.Error.InterfaceError - name: GetTotalBootTime description: > Get total time spending from reset to HVNGOOD. returns: - name: Time type: uint32 description: > Time in microseconds. errors: - self.Error.ResponseFailure - self.Error.ExpectedInfoNotFound - name: GetFirmwareUpdateTime description: > Get time spending in the self update routine. Since a proper self update involves a reset, this time is always expected to be low. returns: - name: Time type: uint32 description: > Time in microseconds. errors: - self.Error.ResponseFailure - self.Error.ExpectedInfoNotFound - name: GetFirmwareMirroringTime description: > Get time spending in mirroing the self-update. This time is a reasonable proxy for the total self update time. returns: - name: Time type: uint32 description: > Time in microseconds. errors: - self.Error.ResponseFailure - self.Error.ExpectedInfoNotFound - name: GetPayloadValidationTime description: > Get time spending in validating the payload, copying mutable regions and/or dealing with failsafe fallback. returns: - name: Time type: uint32 description: > Time in microseconds. errors: - self.Error.ResponseFailure - self.Error.ExpectedInfoNotFound signals: - name: HostCommandResponseReady description: > This signal is broadcast when a response is ready for the call that returned CallToken. properties: - name: CallToken type: uint64 description: > The token returned from SendHostCommandAsync() enumerations: - name: FirmwareUpdateStatus description: > The status of a firmware update through hothd values: - name: "None" description: > No update initiated - name: "InProgress" description: > Update still in progress - name: "Error" description: > Update has failed - name: "Done" description: > Update has completed successfully