blob: 662b9ef342fbbf89b0d3d05cfbcb1968653f088d [file] [log] [blame]
/*
* Copyright (C) 2020 Intel Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __IA_CSS_RBM_MANIFEST_TYPES_H
#define __IA_CSS_RBM_MANIFEST_TYPES_H
#include "ia_css_rbm.h"
#include "vied_nci_psys_resource_model.h"
#ifndef VIED_NCI_RBM_MAX_MUX_COUNT
#error Please define VIED_NCI_RBM_MAX_MUX_COUNT
#endif
#ifndef VIED_NCI_RBM_MAX_VALIDATION_RULE_COUNT
#error Please define VIED_NCI_RBM_MAX_VALIDATION_RULE_COUNT
#endif
#ifndef VIED_NCI_RBM_MAX_TERMINAL_DESC_COUNT
#error Please define VIED_NCI_RBM_MAX_TERMINAL_DESC_COUNT
#endif
#ifndef N_PADDING_UINT8_IN_RBM_MANIFEST
#error Please define N_PADDING_UINT8_IN_RBM_MANIFEST
#endif
#define SIZE_OF_RBM_MUX_DESC_S ( \
(4 * IA_CSS_UINT8_T_BITS))
typedef struct ia_css_rbm_mux_desc_s {
uint8_t gp_dev_id;
uint8_t mux_id;
uint8_t offset;
uint8_t size_bits;
} ia_css_rbm_mux_desc_t;
#define SIZE_OF_RBM_VALIDATION_RULE_DESC_S ( \
(1 * IA_CSS_RBM_BITS) \
+ (1 * IA_CSS_UINT32_T_BITS))
typedef struct ia_css_rbm_validation_rule_s {
ia_css_rbm_t match; /* RBM is an array of 32 bit elements */
uint32_t expected_value;
} ia_css_rbm_validation_rule_t;
#define SIZE_OF_RBM_TERMINAL_ROUTING_DESC_S ( \
(4 * IA_CSS_UINT8_T_BITS))
typedef struct ia_css_rbm_terminal_routing_desc_s {
uint8_t terminal_id;
uint8_t connection_state;
uint8_t mux_id;
uint8_t state;
} ia_css_rbm_terminal_routing_desc_t;
#define SIZE_OF_RBM_MANIFEST_S ( \
(VIED_NCI_RBM_MAX_MUX_COUNT * SIZE_OF_RBM_MUX_DESC_S) \
+ (VIED_NCI_RBM_MAX_VALIDATION_RULE_COUNT * SIZE_OF_RBM_VALIDATION_RULE_DESC_S) \
+ (VIED_NCI_RBM_MAX_TERMINAL_DESC_COUNT * SIZE_OF_RBM_TERMINAL_ROUTING_DESC_S) \
+ (3 * IA_CSS_UINT16_T_BITS) \
+ (N_PADDING_UINT8_IN_RBM_MANIFEST * IA_CSS_UINT8_T_BITS))
typedef struct ia_css_rbm_manifest_s {
#if VIED_NCI_RBM_MAX_VALIDATION_RULE_COUNT > 0
ia_css_rbm_validation_rule_t
validation_rules[VIED_NCI_RBM_MAX_VALIDATION_RULE_COUNT];
#endif
uint16_t mux_desc_count;
uint16_t validation_rule_count;
uint16_t terminal_routing_desc_count;
#if VIED_NCI_RBM_MAX_MUX_COUNT > 0
ia_css_rbm_mux_desc_t
mux_desc[VIED_NCI_RBM_MAX_MUX_COUNT];
#endif
#if VIED_NCI_RBM_MAX_TERMINAL_DESC_COUNT > 0
ia_css_rbm_terminal_routing_desc_t
terminal_routing_desc[VIED_NCI_RBM_MAX_TERMINAL_DESC_COUNT];
#endif
#if N_PADDING_UINT8_IN_RBM_MANIFEST > 0
uint8_t padding[N_PADDING_UINT8_IN_RBM_MANIFEST];
#endif
} ia_css_rbm_manifest_t;
#endif /* __IA_CSS_RBM_MANIFEST_TYPES_H */