1c04cf9e1SMario Limonciello /* SPDX-License-Identifier: GPL-2.0-only */ 2c04cf9e1SMario Limonciello /* 3c04cf9e1SMario Limonciello * AMD Platform Security Processor (PSP) Dynamic Boost Control support 4c04cf9e1SMario Limonciello * 5c04cf9e1SMario Limonciello * Copyright (C) 2023 Advanced Micro Devices, Inc. 6c04cf9e1SMario Limonciello * 7c04cf9e1SMario Limonciello * Author: Mario Limonciello <mario.limonciello@amd.com> 8c04cf9e1SMario Limonciello */ 9c04cf9e1SMario Limonciello 10c04cf9e1SMario Limonciello #ifndef __DBC_H__ 11c04cf9e1SMario Limonciello #define __DBC_H__ 12c04cf9e1SMario Limonciello 13c04cf9e1SMario Limonciello #include <uapi/linux/psp-dbc.h> 14c04cf9e1SMario Limonciello 15c04cf9e1SMario Limonciello #include <linux/device.h> 16c04cf9e1SMario Limonciello #include <linux/miscdevice.h> 17c04cf9e1SMario Limonciello #include <linux/psp-platform-access.h> 18c04cf9e1SMario Limonciello 19c04cf9e1SMario Limonciello #include "psp-dev.h" 20c04cf9e1SMario Limonciello 21c04cf9e1SMario Limonciello struct psp_dbc_device { 22c04cf9e1SMario Limonciello struct device *dev; 23*0470bb1bSMario Limonciello struct psp_device *psp; 24c04cf9e1SMario Limonciello 25c04cf9e1SMario Limonciello union dbc_buffer *mbox; 26c04cf9e1SMario Limonciello 27c04cf9e1SMario Limonciello struct mutex ioctl_mutex; 28c04cf9e1SMario Limonciello 29c04cf9e1SMario Limonciello struct miscdevice char_dev; 302ac85e22SMario Limonciello 312ac85e22SMario Limonciello /* used to abstract communication path */ 322ac85e22SMario Limonciello bool use_ext; 332ac85e22SMario Limonciello u32 header_size; 342ac85e22SMario Limonciello u32 *payload_size; 352ac85e22SMario Limonciello u32 *result; 362ac85e22SMario Limonciello void *payload; 37c04cf9e1SMario Limonciello }; 38c04cf9e1SMario Limonciello 39c04cf9e1SMario Limonciello union dbc_buffer { 402ac85e22SMario Limonciello struct psp_request pa_req; 41*0470bb1bSMario Limonciello struct psp_ext_request ext_req; 42c04cf9e1SMario Limonciello }; 43c04cf9e1SMario Limonciello 44c04cf9e1SMario Limonciello void dbc_dev_destroy(struct psp_device *psp); 45c04cf9e1SMario Limonciello int dbc_dev_init(struct psp_device *psp); 46c04cf9e1SMario Limonciello 47c04cf9e1SMario Limonciello #endif /* __DBC_H */ 48