blob: 8ee9c31716108f727dd4e2bee428380276889b6a [file] [log] [blame]
Grzegorz Jaszczykc75c9fd2020-12-08 15:09:59 +01001/* 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 */
24struct 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 */
40struct 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_ */