SemiDrive SSDK Appication Program Interface PTG3.0
sdrv_firewall.h
Go to the documentation of this file.
1
25#ifndef SDRV_FIREWALL_H
26#define SDRV_FIREWALL_H
27
28/***************************************************************************************************
29 * Include header files
30 **************************************************************************************************/
31#include <firewall_hw.h>
32#include <sdrv_common.h>
33#include <spinlock.h>
34
35/***************************************************************************************************
36 * Global Macro definition
37 **************************************************************************************************/
38
40#define FIREWALL_PERMISSION_RW (0x00U)
42#define FIREWALL_PERMISSION_RO (0x01U)
44#define FIREWALL_PERMISSION_WO (0x02U)
46#define FIREWALL_PERMISSION_NONE (0x03U)
47
49#define FIREWALL_UNINIT (0x00U)
51#define FIREWALL_INIT (0x01U)
52
54#define FIREWALL_REG_VALUE_MIN (0x00U)
56#define FIREWALL_REG_VALUE_MAX (0xFFFFFFFFU)
57
59#define FIREWALL_APB_MAC_BASE APB_MAC_BASE
60
61/***************************************************************************************************
62 * Global Types definition
63 **************************************************************************************************/
68{
72 0U),
78 3U),
85 6U),
88 7U),
91 8U),
94 9U),
97 10U),
102 12U),
105 13U),
108 14U),
110
112typedef const uint8_t *sdrv_mac_config_t;
113
117typedef struct mpc_region_cfg
118{
119 uint32_t start_addr;
120 uint32_t end_addr;
121 uint32_t domain0_perms : 4;
123 uint32_t domain1_perms : 4;
125 uint32_t domain2_perms : 4;
127 uint32_t domain3_perms : 4;
129 uint32_t domain4_perms : 4;
131 uint32_t domain5_perms : 4;
133 uint32_t domain6_perms : 4;
135 uint32_t domain7_perms : 4;
138
142typedef struct mpc_memport_cfg
143{
144 uint16_t region_nr;
145 uint16_t base_offset;
149
153typedef struct ppc_addrconfig
154{
175 uint8_t domain6_permission : 2;
176 uint8_t ppc_apbmux_id : 4;
178 uint32_t ppc_start_addr;
179 uint32_t ppc_end_addr;
181
185typedef struct ppc_ipconfig
186{
207 uint8_t domain6_permission : 2;
209 uint8_t ppc_apbmux_id : 4;
212
216typedef struct gpio_channel_cfg
217{
218 const uint16_t *gpio_channel_id;
221
225typedef struct gpio_core_cfg
226{
231 uint8_t gpio_core_id : 4;
235
239typedef struct
240{
241 uint32_t mpc_memport_id : 16;
242 uint32_t mpc_intr_sta : 16;
246
250typedef struct
251{
252 uint32_t ppc_apbmux_ip_id : 16;
253 uint32_t ppc_intr_sta : 16;
257
261typedef struct
262{
264 ppc_errinfo[FIREWALL_PPC_APBMUX_MAXNUM];
267 mpc_errinfo[FIREWALL_MPC_MEMPORT_MAXNUM];
270
272
277
281typedef struct
282{
287 uint32_t memport_num;
290 uint16_t ip_num;
293 uint16_t region_num;
296 uint16_t core_num;
298
303{
304 uint32_t base;
305 int irq;
306 spin_lock_t spinlock; /* firewall spin lock. */
307 uint8_t init_status;
309 void *userdata;
314};
315
316/***************************************************************************************************
317 * Global Function Declarations
318 **************************************************************************************************/
330 const sdrv_firewall_cfg_t *cfg);
331
352 uint8_t domain_id);
353
370
386 void *userdata);
387
401int sdrv_firewall_irq_handler(uint32_t irq, void *ctrl);
402
419 sdrv_firewall_err_t *firewall_err_info);
420
421#endif /* SDRV_FIREWALL_H */
422
423/* End of file */
SemiDrive driver common header file.
@ SDRV_STATUS_GROUP_FIREWALL
Definition: sdrv_common.h:63
int32_t status_t
Type used for all status and error return values.
Definition: sdrv_common.h:82
@ SDRV_STATUS_OK
Definition: sdrv_common.h:72
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
struct mpc_memport_cfg sdrv_mpc_memport_cfg_t
MPC memory port configure.
status_t sdrv_firewall_get_error_info(sdrv_firewall_t *ctrl, sdrv_firewall_err_t *firewall_err_info)
Get firewall illegal access infomation.
status_t sdrv_firewall_set_callback(sdrv_firewall_t *ctrl, sdrv_firewall_callback_t callback, void *userdata)
Set callback function for firewall.
enum sdrv_firewall_err_status sdrv_firewall_err_status_e
Firewall status return code.
status_t sdrv_firewall_assign_domain(sdrv_firewall_t *ctrl, uint8_t master_id, uint8_t domain_id)
Assigns the master to the specified domain.
const uint8_t * sdrv_mac_config_t
The type of configuarion for the MAC module.
Definition: sdrv_firewall.h:112
void(* sdrv_firewall_callback_t)(sdrv_firewall_t *ctrl, void *userdata)
Firewall callback function type.
Definition: sdrv_firewall.h:276
status_t sdrv_firewall_init(sdrv_firewall_t *ctrl, const sdrv_firewall_cfg_t *cfg)
Configure firewall.
struct mpc_region_cfg sdrv_mpc_region_cfg_t
MPC region configure.
struct ppc_addrconfig sdrv_ppc_region_config_t
PPC address configure.
status_t sdrv_firewall_lock_domain_assignment(sdrv_firewall_t *ctrl)
Lock the domain assignment of the master.
int sdrv_firewall_irq_handler(uint32_t irq, void *ctrl)
Handle firewall interrupt.
sdrv_firewall_err_status
Firewall status return code.
Definition: sdrv_firewall.h:68
@ FIREWALL_E_MAC_MASTER_ID
Definition: sdrv_firewall.h:79
@ FIREWALL_E_GPIO_CORE_ID
Definition: sdrv_firewall.h:98
@ FIREWALL_E_MAC_DOMAIN_ID
Definition: sdrv_firewall.h:81
@ FIREWALL_E_GPIO_CHANNEL_NUM
Definition: sdrv_firewall.h:106
@ FIREWALL_E_GPIO_CORE_NUM
Definition: sdrv_firewall.h:103
@ FIREWALL_E_UNINIT
Definition: sdrv_firewall.h:73
@ FIREWALL_E_MAC_LOCKED
Definition: sdrv_firewall.h:83
@ FIREWALL_E_NULL_POINTER
Definition: sdrv_firewall.h:76
@ FIREWALL_E_OK
Definition: sdrv_firewall.h:69
@ FIREWALL_E_GPIO_CHANNEL_ID
Definition: sdrv_firewall.h:100
@ FIREWALL_E_PPC_IP_NUM
Definition: sdrv_firewall.h:92
@ FIREWALL_E_PPC_REGION_NUM
Definition: sdrv_firewall.h:95
@ FIREWALL_E_INIT
Definition: sdrv_firewall.h:70
@ FIREWALL_E_MPC_REGION_NUM
Definition: sdrv_firewall.h:89
@ FIREWALL_E_MPC_PORT_NUM
Definition: sdrv_firewall.h:86
struct gpio_channel_cfg sdrv_gpio_channel_cfg_t
Pin configuration.
struct ppc_ipconfig sdrv_ppc_ip_config_t
PPC ip configure.
struct gpio_core_cfg sdrv_gpio_core_cfg_t
Pin permission for the core.
Pin configuration.
Definition: sdrv_firewall.h:217
uint16_t gpio_channel_num
Definition: sdrv_firewall.h:219
const uint16_t * gpio_channel_id
Definition: sdrv_firewall.h:218
Pin permission for the core.
Definition: sdrv_firewall.h:226
const sdrv_gpio_channel_cfg_t gpio_channel_cfg
Definition: sdrv_firewall.h:233
uint8_t gpio_user_permission
Definition: sdrv_firewall.h:227
uint8_t gpio_core_id
Definition: sdrv_firewall.h:231
uint8_t gpio_privileged_permission
Definition: sdrv_firewall.h:229
MPC memory port configure.
Definition: sdrv_firewall.h:143
uint16_t region_nr
Definition: sdrv_firewall.h:144
uint16_t base_offset
Definition: sdrv_firewall.h:145
const sdrv_mpc_region_cfg_t *const region_config
Definition: sdrv_firewall.h:146
MPC region configure.
Definition: sdrv_firewall.h:118
uint32_t domain3_perms
Definition: sdrv_firewall.h:127
uint32_t domain1_perms
Definition: sdrv_firewall.h:123
uint32_t domain0_perms
Definition: sdrv_firewall.h:121
uint32_t end_addr
Definition: sdrv_firewall.h:120
uint32_t start_addr
Definition: sdrv_firewall.h:119
uint32_t domain6_perms
Definition: sdrv_firewall.h:133
uint32_t domain2_perms
Definition: sdrv_firewall.h:125
uint32_t domain4_perms
Definition: sdrv_firewall.h:129
uint32_t domain5_perms
Definition: sdrv_firewall.h:131
uint32_t domain7_perms
Definition: sdrv_firewall.h:135
PPC address configure.
Definition: sdrv_firewall.h:154
uint8_t domain4_user_permission
Definition: sdrv_firewall.h:167
uint8_t ppc_region_index
Definition: sdrv_firewall.h:177
uint8_t domain4_privileged_permission
Definition: sdrv_firewall.h:169
uint8_t domain6_permission
Definition: sdrv_firewall.h:175
uint8_t domain2_privileged_permission
Definition: sdrv_firewall.h:161
uint8_t ppc_apbmux_id
Definition: sdrv_firewall.h:176
uint8_t domain7_privileged_permission
Definition: sdrv_firewall.h:157
uint8_t domain3_user_permission
Definition: sdrv_firewall.h:163
uint8_t domain2_user_permission
Definition: sdrv_firewall.h:159
uint8_t domain5_privileged_permission
Definition: sdrv_firewall.h:173
uint32_t ppc_end_addr
Definition: sdrv_firewall.h:179
uint8_t domain3_privileged_permission
Definition: sdrv_firewall.h:165
uint8_t domain7_user_permission
Definition: sdrv_firewall.h:155
uint32_t ppc_start_addr
Definition: sdrv_firewall.h:178
uint8_t domain5_user_permission
Definition: sdrv_firewall.h:171
PPC ip configure.
Definition: sdrv_firewall.h:186
uint8_t domain4_user_permission
Definition: sdrv_firewall.h:199
uint8_t domain4_privileged_permission
Definition: sdrv_firewall.h:201
uint8_t domain6_permission
Definition: sdrv_firewall.h:207
uint8_t domain2_privileged_permission
Definition: sdrv_firewall.h:193
uint8_t ppc_apbmux_id
Definition: sdrv_firewall.h:209
uint8_t ppc_apbmux_ip_id
Definition: sdrv_firewall.h:210
uint8_t domain7_privileged_permission
Definition: sdrv_firewall.h:189
uint8_t domain3_user_permission
Definition: sdrv_firewall.h:195
uint8_t domain2_user_permission
Definition: sdrv_firewall.h:191
uint8_t domain5_privileged_permission
Definition: sdrv_firewall.h:205
uint8_t domain3_privileged_permission
Definition: sdrv_firewall.h:197
uint8_t domain7_user_permission
Definition: sdrv_firewall.h:187
uint8_t domain5_user_permission
Definition: sdrv_firewall.h:203
Firewall controller configuration.
Definition: sdrv_firewall.h:282
const sdrv_mac_config_t * mac_cfg
Definition: sdrv_firewall.h:284
const sdrv_gpio_core_cfg_t * io_cfg
Definition: sdrv_firewall.h:295
uint16_t core_num
Definition: sdrv_firewall.h:296
const sdrv_ppc_region_config_t * ppc_region_cfg
Definition: sdrv_firewall.h:292
const sdrv_mpc_memport_cfg_t * mpc_cfg
Definition: sdrv_firewall.h:286
const sdrv_ppc_ip_config_t * ppc_ip_cfg
Definition: sdrv_firewall.h:289
uint16_t ip_num
Definition: sdrv_firewall.h:290
uint16_t region_num
Definition: sdrv_firewall.h:293
uint32_t memport_num
Definition: sdrv_firewall.h:287
Firewall interrupt status.
Definition: sdrv_firewall.h:262
Firewall controller.
Definition: sdrv_firewall.h:303
uint8_t init_status
Definition: sdrv_firewall.h:307
uint32_t base
Definition: sdrv_firewall.h:304
const sdrv_firewall_cfg_t * config
Definition: sdrv_firewall.h:313
sdrv_firewall_callback_t callback
Definition: sdrv_firewall.h:308
sdrv_firewall_err_t error_info
Definition: sdrv_firewall.h:310
int irq
Definition: sdrv_firewall.h:305
spin_lock_t spinlock
Definition: sdrv_firewall.h:306
void * userdata
Definition: sdrv_firewall.h:309
MPC interrupt status.
Definition: sdrv_firewall.h:240
uint32_t mpc_intr_sta
Definition: sdrv_firewall.h:242
uint32_t mpc_memport_id
Definition: sdrv_firewall.h:241
PPC interrupt status.
Definition: sdrv_firewall.h:251
uint32_t ppc_apbmux_ip_id
Definition: sdrv_firewall.h:252
uint32_t ppc_intr_sta
Definition: sdrv_firewall.h:253