Grzegorz Jaszczyk | c75c9fd | 2020-12-08 15:09:59 +0100 | [diff] [blame] | 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_ */ |