at master 2.0 kB view raw
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 */