Linux Audio

Check our new training course

Loading...
v5.4
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * PCC (Platform Communications Channel) methods
 4 */
 5
 6#ifndef _PCC_H
 7#define _PCC_H
 8
 9#include <linux/mailbox_controller.h>
10#include <linux/mailbox_client.h>
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12#define MAX_PCC_SUBSPACES	256
 
 
13#ifdef CONFIG_PCC
14extern struct mbox_chan *pcc_mbox_request_channel(struct mbox_client *cl,
15						  int subspace_id);
16extern void pcc_mbox_free_channel(struct mbox_chan *chan);
 
17#else
18static inline struct mbox_chan *pcc_mbox_request_channel(struct mbox_client *cl,
19							 int subspace_id)
20{
21	return ERR_PTR(-ENODEV);
22}
23static inline void pcc_mbox_free_channel(struct mbox_chan *chan) { }
 
 
 
 
24#endif
25
26#endif /* _PCC_H */
v6.13.7
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * PCC (Platform Communications Channel) methods
 4 */
 5
 6#ifndef _PCC_H
 7#define _PCC_H
 8
 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	void __iomem *shmem;
16	u64 shmem_size;
17	u32 latency;
18	u32 max_access_rate;
19	u16 min_turnaround_time;
20};
21
22/* Generic Communications Channel Shared Memory Region */
23#define PCC_SIGNATURE			0x50434300
24/* Generic Communications Channel Command Field */
25#define PCC_CMD_GENERATE_DB_INTR	BIT(15)
26/* Generic Communications Channel Status Field */
27#define PCC_STATUS_CMD_COMPLETE		BIT(0)
28#define PCC_STATUS_SCI_DOORBELL		BIT(1)
29#define PCC_STATUS_ERROR		BIT(2)
30#define PCC_STATUS_PLATFORM_NOTIFY	BIT(3)
31/* Initiator Responder Communications Channel Flags */
32#define PCC_CMD_COMPLETION_NOTIFY	BIT(0)
33
34#define MAX_PCC_SUBSPACES	256
35#define PCC_ACK_FLAG_MASK	0x1
36
37#ifdef CONFIG_PCC
38extern struct pcc_mbox_chan *
39pcc_mbox_request_channel(struct mbox_client *cl, int subspace_id);
40extern void pcc_mbox_free_channel(struct pcc_mbox_chan *chan);
41extern int pcc_mbox_ioremap(struct mbox_chan *chan);
42#else
43static inline struct pcc_mbox_chan *
44pcc_mbox_request_channel(struct mbox_client *cl, int subspace_id)
45{
46	return ERR_PTR(-ENODEV);
47}
48static inline void pcc_mbox_free_channel(struct pcc_mbox_chan *chan) { }
49static inline int pcc_mbox_ioremap(struct mbox_chan *chan)
50{
51	return 0;
52};
53#endif
54
55#endif /* _PCC_H */