1*7ccc4f4eSMario Limonciello /* SPDX-License-Identifier: GPL-2.0-only */ 2*7ccc4f4eSMario Limonciello 3*7ccc4f4eSMario Limonciello #ifndef __PSP_PLATFORM_ACCESS_H 4*7ccc4f4eSMario Limonciello #define __PSP_PLATFORM_ACCESS_H 5*7ccc4f4eSMario Limonciello 6*7ccc4f4eSMario Limonciello #include <linux/psp.h> 7*7ccc4f4eSMario Limonciello 8*7ccc4f4eSMario Limonciello enum psp_platform_access_msg { 9*7ccc4f4eSMario Limonciello PSP_CMD_NONE = 0x0, 10*7ccc4f4eSMario Limonciello }; 11*7ccc4f4eSMario Limonciello 12*7ccc4f4eSMario Limonciello struct psp_req_buffer_hdr { 13*7ccc4f4eSMario Limonciello u32 payload_size; 14*7ccc4f4eSMario Limonciello u32 status; 15*7ccc4f4eSMario Limonciello } __packed; 16*7ccc4f4eSMario Limonciello 17*7ccc4f4eSMario Limonciello struct psp_request { 18*7ccc4f4eSMario Limonciello struct psp_req_buffer_hdr header; 19*7ccc4f4eSMario Limonciello void *buf; 20*7ccc4f4eSMario Limonciello } __packed; 21*7ccc4f4eSMario Limonciello 22*7ccc4f4eSMario Limonciello /** 23*7ccc4f4eSMario Limonciello * psp_send_platform_access_msg() - Send a message to control platform features 24*7ccc4f4eSMario Limonciello * 25*7ccc4f4eSMario Limonciello * This function is intended to be used by drivers outside of ccp to communicate 26*7ccc4f4eSMario Limonciello * with the platform. 27*7ccc4f4eSMario Limonciello * 28*7ccc4f4eSMario Limonciello * Returns: 29*7ccc4f4eSMario Limonciello * 0: success 30*7ccc4f4eSMario Limonciello * -%EBUSY: mailbox in recovery or in use 31*7ccc4f4eSMario Limonciello * -%ENODEV: driver not bound with PSP device 32*7ccc4f4eSMario Limonciello * -%ETIMEDOUT: request timed out 33*7ccc4f4eSMario Limonciello * -%EIO: unknown error (see kernel log) 34*7ccc4f4eSMario Limonciello */ 35*7ccc4f4eSMario Limonciello int psp_send_platform_access_msg(enum psp_platform_access_msg, struct psp_request *req); 36*7ccc4f4eSMario Limonciello 37*7ccc4f4eSMario Limonciello /** 38*7ccc4f4eSMario Limonciello * psp_check_platform_access_status() - Checks whether platform features is ready 39*7ccc4f4eSMario Limonciello * 40*7ccc4f4eSMario Limonciello * This function is intended to be used by drivers outside of ccp to determine 41*7ccc4f4eSMario Limonciello * if platform features has initialized. 42*7ccc4f4eSMario Limonciello * 43*7ccc4f4eSMario Limonciello * Returns: 44*7ccc4f4eSMario Limonciello * 0 platform features is ready 45*7ccc4f4eSMario Limonciello * -%ENODEV platform features is not ready or present 46*7ccc4f4eSMario Limonciello */ 47*7ccc4f4eSMario Limonciello int psp_check_platform_access_status(void); 48*7ccc4f4eSMario Limonciello 49*7ccc4f4eSMario Limonciello #endif /* __PSP_PLATFORM_ACCESS_H */ 50