49 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * PCC (Platform Communications Channel) methods4 */5 6#ifndef _PCC_H7#define _PCC_H8 9#include <linux/mailbox_controller.h>10#include <linux/mailbox_client.h>11 12struct pcc_mbox_chan {13 struct mbox_chan *mchan;14 u64 shmem_base_addr;15 u64 shmem_size;16 u32 latency;17 u32 max_access_rate;18 u16 min_turnaround_time;19};20 21/* Generic Communications Channel Shared Memory Region */22#define PCC_SIGNATURE 0x5043430023/* Generic Communications Channel Command Field */24#define PCC_CMD_GENERATE_DB_INTR BIT(15)25/* Generic Communications Channel Status Field */26#define PCC_STATUS_CMD_COMPLETE BIT(0)27#define PCC_STATUS_SCI_DOORBELL BIT(1)28#define PCC_STATUS_ERROR BIT(2)29#define PCC_STATUS_PLATFORM_NOTIFY BIT(3)30/* Initiator Responder Communications Channel Flags */31#define PCC_CMD_COMPLETION_NOTIFY BIT(0)32 33#define MAX_PCC_SUBSPACES 25634 35#ifdef CONFIG_PCC36extern struct pcc_mbox_chan *37pcc_mbox_request_channel(struct mbox_client *cl, int subspace_id);38extern void pcc_mbox_free_channel(struct pcc_mbox_chan *chan);39#else40static inline struct pcc_mbox_chan *41pcc_mbox_request_channel(struct mbox_client *cl, int subspace_id)42{43 return ERR_PTR(-ENODEV);44}45static inline void pcc_mbox_free_channel(struct pcc_mbox_chan *chan) { }46#endif47 48#endif /* _PCC_H */49