New upstream version 18.11-rc1
[deb_dpdk.git] / drivers / bus / fslmc / mc / fsl_dpbp_cmd.h
1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2  *
3  * Copyright 2013-2016 Freescale Semiconductor Inc.
4  * Copyright 2016-2017 NXP
5  *
6  */
7 #ifndef _FSL_DPBP_CMD_H
8 #define _FSL_DPBP_CMD_H
9
10 /* DPBP Version */
11 #define DPBP_VER_MAJOR                          3
12 #define DPBP_VER_MINOR                          4
13
14 /* Command versioning */
15 #define DPBP_CMD_BASE_VERSION                   1
16 #define DPBP_CMD_VERSION_2                      2
17 #define DPBP_CMD_ID_OFFSET                      4
18
19 #define DPBP_CMD(id)    ((id << DPBP_CMD_ID_OFFSET) | DPBP_CMD_BASE_VERSION)
20 #define DPBP_CMD_V2(id) ((id << DPBP_CMD_ID_OFFSET) | DPBP_CMD_VERSION_2)
21
22 /* Command IDs */
23 #define DPBP_CMDID_CLOSE                DPBP_CMD(0x800)
24 #define DPBP_CMDID_OPEN                 DPBP_CMD(0x804)
25 #define DPBP_CMDID_CREATE               DPBP_CMD(0x904)
26 #define DPBP_CMDID_DESTROY              DPBP_CMD(0x984)
27 #define DPBP_CMDID_GET_API_VERSION      DPBP_CMD(0xa04)
28
29 #define DPBP_CMDID_ENABLE               DPBP_CMD(0x002)
30 #define DPBP_CMDID_DISABLE              DPBP_CMD(0x003)
31 #define DPBP_CMDID_GET_ATTR             DPBP_CMD(0x004)
32 #define DPBP_CMDID_RESET                DPBP_CMD(0x005)
33 #define DPBP_CMDID_IS_ENABLED           DPBP_CMD(0x006)
34
35 #define DPBP_CMDID_SET_IRQ_ENABLE       DPBP_CMD(0x012)
36 #define DPBP_CMDID_GET_IRQ_ENABLE       DPBP_CMD(0x013)
37 #define DPBP_CMDID_SET_IRQ_MASK         DPBP_CMD(0x014)
38 #define DPBP_CMDID_GET_IRQ_MASK         DPBP_CMD(0x015)
39 #define DPBP_CMDID_GET_IRQ_STATUS       DPBP_CMD(0x016)
40 #define DPBP_CMDID_CLEAR_IRQ_STATUS     DPBP_CMD(0x017)
41
42 #define DPBP_CMDID_SET_NOTIFICATIONS    DPBP_CMD_V2(0x1b0)
43 #define DPBP_CMDID_GET_NOTIFICATIONS    DPBP_CMD_V2(0x1b1)
44
45 #define DPBP_CMDID_GET_FREE_BUFFERS_NUM DPBP_CMD(0x1b2)
46
47 #pragma pack(push, 1)
48 struct dpbp_cmd_open {
49         uint32_t dpbp_id;
50 };
51
52 struct dpbp_cmd_destroy {
53         uint32_t object_id;
54 };
55
56 #define DPBP_ENABLE                     0x1
57
58 struct dpbp_rsp_is_enabled {
59         uint8_t enabled;
60 };
61
62 struct dpbp_rsp_get_attributes {
63         uint16_t pad;
64         uint16_t bpid;
65         uint32_t id;
66 };
67
68 struct dpbp_cmd_set_notifications {
69         uint32_t depletion_entry;
70         uint32_t depletion_exit;
71         uint32_t surplus_entry;
72         uint32_t surplus_exit;
73         uint32_t options;
74         uint16_t pad[2];
75         uint64_t message_ctx;
76         uint64_t message_iova;
77 };
78
79 struct dpbp_rsp_get_notifications {
80         uint32_t depletion_entry;
81         uint32_t depletion_exit;
82         uint32_t surplus_entry;
83         uint32_t surplus_exit;
84         uint32_t options;
85         uint16_t pad[2];
86         uint64_t message_ctx;
87         uint64_t message_iova;
88 };
89
90 struct dpbp_rsp_get_api_version {
91         uint16_t major;
92         uint16_t minor;
93 };
94
95 struct dpbp_rsp_get_num_free_bufs {
96         uint32_t num_free_bufs;
97 };
98
99 #pragma pack(pop)
100 #endif /* _FSL_DPBP_CMD_H */