Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0-only */
2
3#ifndef __PSP_PLATFORM_ACCESS_H
4#define __PSP_PLATFORM_ACCESS_H
5
6#include <linux/psp.h>
7
8enum psp_platform_access_msg {
9 PSP_CMD_NONE = 0x0,
10 PSP_SFS_GET_FW_VERSIONS,
11 PSP_SFS_UPDATE,
12 PSP_CMD_HSTI_QUERY = 0x14,
13 PSP_I2C_REQ_BUS_CMD = 0x64,
14 PSP_DYNAMIC_BOOST_GET_NONCE,
15 PSP_DYNAMIC_BOOST_SET_UID,
16 PSP_DYNAMIC_BOOST_GET_PARAMETER,
17 PSP_DYNAMIC_BOOST_SET_PARAMETER,
18};
19
20struct psp_req_buffer_hdr {
21 u32 payload_size;
22 u32 status;
23} __packed;
24
25struct psp_request {
26 struct psp_req_buffer_hdr header;
27 void *buf;
28} __packed;
29
30/**
31 * psp_send_platform_access_msg() - Send a message to control platform features
32 *
33 * This function is intended to be used by drivers outside of ccp to communicate
34 * with the platform.
35 *
36 * Returns:
37 * 0: success
38 * -%EBUSY: mailbox in recovery or in use
39 * -%ENODEV: driver not bound with PSP device
40 * -%ETIMEDOUT: request timed out
41 * -%EIO: unknown error (see kernel log)
42 */
43int psp_send_platform_access_msg(enum psp_platform_access_msg, struct psp_request *req);
44
45/**
46 * psp_ring_platform_doorbell() - Ring platform doorbell
47 *
48 * This function is intended to be used by drivers outside of ccp to ring the
49 * platform doorbell with a message.
50 *
51 * Returns:
52 * 0: success
53 * -%EBUSY: mailbox in recovery or in use
54 * -%ENODEV: driver not bound with PSP device
55 * -%ETIMEDOUT: request timed out
56 * -%EIO: error will be stored in result argument
57 */
58int psp_ring_platform_doorbell(int msg, u32 *result);
59
60/**
61 * psp_check_platform_access_status() - Checks whether platform features is ready
62 *
63 * This function is intended to be used by drivers outside of ccp to determine
64 * if platform features has initialized.
65 *
66 * Returns:
67 * 0 platform features is ready
68 * -%ENODEV platform features is not ready or present
69 */
70int psp_check_platform_access_status(void);
71
72#endif /* __PSP_PLATFORM_ACCESS_H */