mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
82f9327f77
Older systems will not populate the security attributes in the capabilities register. The PSP on these systems, however, does have a command to get the security attributes. Use this command during ccp startup to populate the attributes if they're missing. Closes: https://github.com/fwupd/fwupd/issues/5284 Closes: https://github.com/fwupd/fwupd/issues/5675 Closes: https://github.com/fwupd/fwupd/issues/6253 Closes: https://github.com/fwupd/fwupd/issues/7280 Closes: https://github.com/fwupd/fwupd/issues/6323 Closes: https://github.com/fwupd/fwupd/discussions/5433 Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Acked-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
71 lines
1.9 KiB
C
71 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
#ifndef __PSP_PLATFORM_ACCESS_H
|
|
#define __PSP_PLATFORM_ACCESS_H
|
|
|
|
#include <linux/psp.h>
|
|
|
|
enum psp_platform_access_msg {
|
|
PSP_CMD_NONE = 0x0,
|
|
PSP_CMD_HSTI_QUERY = 0x14,
|
|
PSP_I2C_REQ_BUS_CMD = 0x64,
|
|
PSP_DYNAMIC_BOOST_GET_NONCE,
|
|
PSP_DYNAMIC_BOOST_SET_UID,
|
|
PSP_DYNAMIC_BOOST_GET_PARAMETER,
|
|
PSP_DYNAMIC_BOOST_SET_PARAMETER,
|
|
};
|
|
|
|
struct psp_req_buffer_hdr {
|
|
u32 payload_size;
|
|
u32 status;
|
|
} __packed;
|
|
|
|
struct psp_request {
|
|
struct psp_req_buffer_hdr header;
|
|
void *buf;
|
|
} __packed;
|
|
|
|
/**
|
|
* psp_send_platform_access_msg() - Send a message to control platform features
|
|
*
|
|
* This function is intended to be used by drivers outside of ccp to communicate
|
|
* with the platform.
|
|
*
|
|
* Returns:
|
|
* 0: success
|
|
* -%EBUSY: mailbox in recovery or in use
|
|
* -%ENODEV: driver not bound with PSP device
|
|
* -%ETIMEDOUT: request timed out
|
|
* -%EIO: unknown error (see kernel log)
|
|
*/
|
|
int psp_send_platform_access_msg(enum psp_platform_access_msg, struct psp_request *req);
|
|
|
|
/**
|
|
* psp_ring_platform_doorbell() - Ring platform doorbell
|
|
*
|
|
* This function is intended to be used by drivers outside of ccp to ring the
|
|
* platform doorbell with a message.
|
|
*
|
|
* Returns:
|
|
* 0: success
|
|
* -%EBUSY: mailbox in recovery or in use
|
|
* -%ENODEV: driver not bound with PSP device
|
|
* -%ETIMEDOUT: request timed out
|
|
* -%EIO: error will be stored in result argument
|
|
*/
|
|
int psp_ring_platform_doorbell(int msg, u32 *result);
|
|
|
|
/**
|
|
* psp_check_platform_access_status() - Checks whether platform features is ready
|
|
*
|
|
* This function is intended to be used by drivers outside of ccp to determine
|
|
* if platform features has initialized.
|
|
*
|
|
* Returns:
|
|
* 0 platform features is ready
|
|
* -%ENODEV platform features is not ready or present
|
|
*/
|
|
int psp_check_platform_access_status(void);
|
|
|
|
#endif /* __PSP_PLATFORM_ACCESS_H */
|