blob: 8d2f9820a3ddb5bcf3571f60dd2ca1ba75269c71 [file] [log] [blame]
Edison Ai48b2d9e2019-06-24 14:39:45 +08001/*
Kevin Pengc6d74502020-03-04 16:55:37 +08002 * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
Edison Ai48b2d9e2019-06-24 14:39:45 +08003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8{{utilities.donotedit_warning}}
9
10#ifndef __PSA_MANIFEST_{{file_name.upper()}}_H__
11#define __PSA_MANIFEST_{{file_name.upper()}}_H__
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
Edison Ai48b2d9e2019-06-24 14:39:45 +080017{% if attr.tfm_partition_ipc %}
18 {% set ns = namespace(iterator_counter=0) %}
19 {% if manifest.services %}
20 {% for service in manifest.services %}
Edison Ai45b22552019-10-12 11:05:57 +080021#define {{"%-55s"|format(service.name + "_SIGNAL")}} (1U << ({{"%d"|format(ns.iterator_counter)}} + 4))
Edison Ai48b2d9e2019-06-24 14:39:45 +080022 {% set ns.iterator_counter = ns.iterator_counter + 1 %}
23 {% endfor %}
24 {% endif %}
25 {% if ns.iterator_counter > 28 %}
26
27#error "Too many signals!"
28 {% endif %}
29{% endif %}
30{% if manifest.irqs %}
31
32 {% set irq_ns = namespace(irq_iterator_counter=27) %}
33 {% for irq in manifest.irqs %}
Edison Ai45b22552019-10-12 11:05:57 +080034#define {{"%-55s"|format(irq.signal)}} (1U << ({{"%d"|format(irq_ns.irq_iterator_counter)}} + 4))
Edison Ai48b2d9e2019-06-24 14:39:45 +080035 {% set irq_ns.irq_iterator_counter = irq_ns.irq_iterator_counter - 1 %}
36 {% endfor %}
37 {% if attr.tfm_partition_ipc %}
38 {% if (ns.iterator_counter - 1) >= (irq_ns.irq_iterator_counter + 1) %}
39
40#error "Secure service and IRQ signal values overlap!"
41 {% endif %}
42 {% else %}
43 {% if (irq_ns.irq_iterator_counter + 1) < 0 %}
44
45#error "Too many IRQ signals!"
46 {% endif %}
47 {% endif %}
Edison Ai3d1ee702019-11-21 15:46:54 +080048{% else %}
49 {# If no RoT Service is defined in the services attribute, then at least one IRQ must be declared. #}
50 {% if attr.tfm_partition_ipc %}
51 {% if (manifest.services is not defined) or ((manifest.services | length()) == 0) %}
52#error "At least one IRQ must be declared!"
53 {% endif %}
54 {% endif %}
Edison Ai48b2d9e2019-06-24 14:39:45 +080055{% endif %}
56
Edison Ai48b2d9e2019-06-24 14:39:45 +080057#ifdef __cplusplus
58}
59#endif
60
61#endif /* __PSA_MANIFEST_{{file_name.upper()}}_H__ */