1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
3 * Copyright 2013-2016 Freescale Semiconductor Inc.
4 * Copyright 2018-2021 NXP
7 #ifndef _FSL_DPDMUX_CMD_H
8 #define _FSL_DPDMUX_CMD_H
11 #define DPDMUX_VER_MAJOR 6
12 #define DPDMUX_VER_MINOR 9
14 #define DPDMUX_CMD_BASE_VERSION 1
15 #define DPDMUX_CMD_VERSION_2 2
16 #define DPDMUX_CMD_VERSION_3 3
17 #define DPDMUX_CMD_VERSION_4 4
18 #define DPDMUX_CMD_ID_OFFSET 4
20 #define DPDMUX_CMD(id) (((id) << DPDMUX_CMD_ID_OFFSET) |\
21 DPDMUX_CMD_BASE_VERSION)
22 #define DPDMUX_CMD_V2(id) (((id) << DPDMUX_CMD_ID_OFFSET) | \
24 #define DPDMUX_CMD_V3(id) (((id) << DPDMUX_CMD_ID_OFFSET) |\
26 #define DPDMUX_CMD_V4(id) (((id) << DPDMUX_CMD_ID_OFFSET) |\
30 #define DPDMUX_CMDID_CLOSE DPDMUX_CMD(0x800)
31 #define DPDMUX_CMDID_OPEN DPDMUX_CMD(0x806)
32 #define DPDMUX_CMDID_CREATE DPDMUX_CMD_V4(0x906)
33 #define DPDMUX_CMDID_DESTROY DPDMUX_CMD(0x986)
34 #define DPDMUX_CMDID_GET_API_VERSION DPDMUX_CMD(0xa06)
36 #define DPDMUX_CMDID_ENABLE DPDMUX_CMD(0x002)
37 #define DPDMUX_CMDID_DISABLE DPDMUX_CMD(0x003)
38 #define DPDMUX_CMDID_GET_ATTR DPDMUX_CMD_V2(0x004)
39 #define DPDMUX_CMDID_RESET DPDMUX_CMD(0x005)
40 #define DPDMUX_CMDID_IS_ENABLED DPDMUX_CMD(0x006)
41 #define DPDMUX_CMDID_SET_MAX_FRAME_LENGTH DPDMUX_CMD(0x0a1)
43 #define DPDMUX_CMDID_UL_RESET_COUNTERS DPDMUX_CMD(0x0a3)
45 #define DPDMUX_CMDID_IF_SET_ACCEPTED_FRAMES DPDMUX_CMD(0x0a7)
46 #define DPDMUX_CMDID_IF_GET_ATTR DPDMUX_CMD(0x0a8)
47 #define DPDMUX_CMDID_IF_ENABLE DPDMUX_CMD(0x0a9)
48 #define DPDMUX_CMDID_IF_DISABLE DPDMUX_CMD(0x0aa)
50 #define DPDMUX_CMDID_IF_ADD_L2_RULE DPDMUX_CMD(0x0b0)
51 #define DPDMUX_CMDID_IF_REMOVE_L2_RULE DPDMUX_CMD(0x0b1)
52 #define DPDMUX_CMDID_IF_GET_COUNTER DPDMUX_CMD(0x0b2)
53 #define DPDMUX_CMDID_IF_SET_LINK_CFG DPDMUX_CMD_V2(0x0b3)
54 #define DPDMUX_CMDID_IF_GET_LINK_STATE DPDMUX_CMD_V2(0x0b4)
56 #define DPDMUX_CMDID_SET_CUSTOM_KEY DPDMUX_CMD(0x0b5)
57 #define DPDMUX_CMDID_ADD_CUSTOM_CLS_ENTRY DPDMUX_CMD_V2(0x0b6)
58 #define DPDMUX_CMDID_REMOVE_CUSTOM_CLS_ENTRY DPDMUX_CMD(0x0b7)
60 #define DPDMUX_CMDID_IF_SET_DEFAULT DPDMUX_CMD(0x0b8)
61 #define DPDMUX_CMDID_IF_GET_DEFAULT DPDMUX_CMD(0x0b9)
63 #define DPDMUX_CMDID_SET_RESETABLE DPDMUX_CMD(0x0ba)
64 #define DPDMUX_CMDID_GET_RESETABLE DPDMUX_CMD(0x0bb)
65 #define DPDMUX_CMDID_SET_ERRORS_BEHAVIOR DPDMUX_CMD(0x0bf)
67 #define DPDMUX_MASK(field) \
68 GENMASK(DPDMUX_##field##_SHIFT + DPDMUX_##field##_SIZE - 1, \
69 DPDMUX_##field##_SHIFT)
70 #define dpdmux_set_field(var, field, val) \
71 ((var) |= (((val) << DPDMUX_##field##_SHIFT) & DPDMUX_MASK(field)))
72 #define dpdmux_get_field(var, field) \
73 (((var) & DPDMUX_MASK(field)) >> DPDMUX_##field##_SHIFT)
76 struct dpdmux_cmd_open {
80 struct dpdmux_cmd_create {
87 uint16_t adv_max_dmat_entries;
88 uint16_t adv_max_mc_groups;
89 uint16_t adv_max_vlan_ids;
95 struct dpdmux_cmd_destroy {
99 #define DPDMUX_ENABLE_SHIFT 0
100 #define DPDMUX_ENABLE_SIZE 1
101 #define DPDMUX_IS_DEFAULT_SHIFT 1
102 #define DPDMUX_IS_DEFAULT_SIZE 1
104 struct dpdmux_rsp_is_enabled {
108 struct dpdmux_rsp_get_attr {
123 struct dpdmux_cmd_set_max_frame_length {
124 uint16_t max_frame_length;
127 #define DPDMUX_ACCEPTED_FRAMES_TYPE_SHIFT 0
128 #define DPDMUX_ACCEPTED_FRAMES_TYPE_SIZE 4
129 #define DPDMUX_UNACCEPTED_FRAMES_ACTION_SHIFT 4
130 #define DPDMUX_UNACCEPTED_FRAMES_ACTION_SIZE 4
132 struct dpdmux_cmd_if_set_accepted_frames {
134 uint8_t frames_options;
137 struct dpdmux_cmd_if {
141 struct dpdmux_rsp_if_get_attr {
145 uint8_t accepted_frames_type;
149 struct dpdmux_cmd_if_l2_rule {
162 struct dpdmux_cmd_if_get_counter {
164 uint8_t counter_type;
167 struct dpdmux_rsp_if_get_counter {
172 struct dpdmux_cmd_if_set_link_cfg {
180 uint64_t advertising;
183 struct dpdmux_cmd_if_get_link_state {
187 #define DPDMUX_UP_SHIFT 0
188 #define DPDMUX_UP_SIZE 1
189 #define DPDMUX_STATE_VALID_SHIFT 1
190 #define DPDMUX_STATE_VALID_SIZE 1
191 struct dpdmux_rsp_if_get_link_state {
201 uint64_t advertising;
204 struct dpdmux_rsp_get_api_version {
209 struct dpdmux_set_custom_key {
211 uint64_t key_cfg_iova;
214 struct dpdmux_cmd_add_custom_cls_entry {
217 uint16_t entry_index;
223 struct dpdmux_cmd_remove_custom_cls_entry {
231 #define DPDMUX_SKIP_RESET_FLAGS_SHIFT 0
232 #define DPDMUX_SKIP_RESET_FLAGS_SIZE 3
234 struct dpdmux_cmd_set_skip_reset_flags {
235 uint8_t skip_reset_flags;
238 struct dpdmux_rsp_get_skip_reset_flags {
239 uint8_t skip_reset_flags;
242 #define DPDMUX_ERROR_ACTION_SHIFT 0
243 #define DPDMUX_ERROR_ACTION_SIZE 4
245 struct dpdmux_cmd_set_errors_behavior {
252 #endif /* _FSL_DPDMUX_CMD_H */