xref: /linux/drivers/remoteproc/pru_rproc.h (revision a1c3be890440a1769ed6f822376a3e3ab0d42994)
1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2 /*
3  * PRUSS Remote Processor specific types
4  *
5  * Copyright (C) 2014-2020 Texas Instruments Incorporated - https://www.ti.com/
6  *	Suman Anna <s-anna@ti.com>
7  */
8 
9 #ifndef _PRU_RPROC_H_
10 #define _PRU_RPROC_H_
11 
12 /**
13  * struct pruss_int_map - PRU system events _to_ channel and host mapping
14  * @event: number of the system event
15  * @chnl: channel number assigned to a given @event
16  * @host: host number assigned to a given @chnl
17  *
18  * PRU system events are mapped to channels, and these channels are mapped
19  * to host interrupts. Events can be mapped to channels in a one-to-one or
20  * many-to-one ratio (multiple events per channel), and channels can be
21  * mapped to host interrupts in a one-to-one or many-to-one ratio (multiple
22  * channels per interrupt).
23  */
24 struct pruss_int_map {
25 	u8 event;
26 	u8 chnl;
27 	u8 host;
28 };
29 
30 /**
31  * struct pru_irq_rsc - PRU firmware section header for IRQ data
32  * @type: resource type
33  * @num_evts: number of described events
34  * @pru_intc_map: PRU interrupt routing description
35  *
36  * The PRU firmware blob can contain optional .pru_irq_map ELF section, which
37  * provides the PRUSS interrupt mapping description. The pru_irq_rsc struct
38  * describes resource entry format.
39  */
40 struct pru_irq_rsc {
41 	u8 type;
42 	u8 num_evts;
43 	struct pruss_int_map pru_intc_map[];
44 } __packed;
45 
46 #endif	/* _PRU_RPROC_H_ */
47