1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #ifndef SYNQUACER_CONFIG_H
9 #define SYNQUACER_CONFIG_H
10 
11 #include "synquacer_mmap.h"
12 
13 #include <stdbool.h>
14 #include <stdint.h>
15 
16 #define THRESHOLD_TYPE_UNR (0)
17 #define THRESHOLD_TYPE_UCR (1)
18 #define THRESHOLD_TYPE_UNC (2)
19 #define THRESHOLD_TYPE_NUM_MAX (3)
20 
21 #define SENSOR_NUM_MAX (256)
22 
23 #define PARTITION_NUM_MAX (8 * 8)
24 
25 #define check_valid_bit(bitmap, pos) (((bitmap) & (1 << (pos))) != 0)
26 #define dram_ecc_is_enabled() (eeprom_config.pec_ecc_status != 0)
27 
28 struct unused_eeprom_config_head_part_t {
29     uint8_t mac_addr[8];
30     uint32_t hm_me_addr_high;
31     uint32_t hm_me_addr_low;
32     uint32_t hm_me_size;
33     uint32_t mh_me_addr_high;
34     uint32_t mh_me_addr_low;
35     uint32_t mh_me_size;
36     uint32_t packet_me_addr_low;
37     uint32_t packet_me_size;
38     uint32_t magic_word;
39     uint8_t reserved_212[212];
40     uint32_t reserved_1;
41     uint32_t reserved_2;
42 };
43 
44 #define EEPROM_CONFIG_T_START_OFFSET \
45     sizeof(struct unused_eeprom_config_head_part_t)
46 
47 struct nat_config {
48     uint8_t valid;
49     uint8_t reserved[3];
50     uint8_t ext_ipaddr[4];
51 };
52 
53 typedef struct {
54     uint32_t system_composition;
55 
56     uint8_t reverved_1;
57     uint8_t reserved_valid_sbb_after[3];
58     uint8_t reserved_8[8];
59     uint8_t reverved_1_1;
60     uint8_t reverved_1_2;
61 
62     uint8_t reserved_2[2];
63 
64     uint8_t reverved_1_3;
65     uint8_t reverved_1_4;
66     uint8_t reverved_1_5;
67 
68     uint8_t reserved_1[1];
69 
70     uint64_t reserved_8_2;
71     uint64_t reserved_8_3;
72     uint8_t pcie_cache_snoop_valid[2];
73     uint8_t reverved_1_6;
74 
75     uint8_t reserved_205[205];
76 
77     uint8_t reverved_1_7[8][8];
78 
79     uint8_t reserved_192[192];
80 
81     uint8_t reverved_1_8[8][8][8];
82 
83     uint8_t reverved_1_9;
84     uint8_t reverved_1_10[7];
85     uint8_t reverved_1_11[8];
86     uint8_t reverved_1_12[8][8];
87 
88     uint8_t reserved_176[176];
89 
90     uint8_t reverved_1_13[PARTITION_NUM_MAX][8];
91 
92     uint8_t sbb_ecc_status;
93     uint8_t pec_ecc_status;
94 
95     uint8_t reserved_before_sensor_threshold[0x1300 - 0x802];
96 
97     uint8_t sensor_thresh[THRESHOLD_TYPE_NUM_MAX][SENSOR_NUM_MAX];
98 } eeprom_config_t;
99 
100 extern eeprom_config_t eeprom_config;
101 
102 #endif /* SYNQUACER_CONFIG_H */
103