1
2
3
4
5
6#include <linux/kernel.h>
7#include <linux/fsl/mc.h>
8
9#include "fsl-mc-private.h"
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28int dpbp_open(struct fsl_mc_io *mc_io,
29 u32 cmd_flags,
30 int dpbp_id,
31 u16 *token)
32{
33 struct fsl_mc_command cmd = { 0 };
34 struct dpbp_cmd_open *cmd_params;
35 int err;
36
37
38 cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN,
39 cmd_flags, 0);
40 cmd_params = (struct dpbp_cmd_open *)cmd.params;
41 cmd_params->dpbp_id = cpu_to_le32(dpbp_id);
42
43
44 err = mc_send_command(mc_io, &cmd);
45 if (err)
46 return err;
47
48
49 *token = mc_cmd_hdr_read_token(&cmd);
50
51 return err;
52}
53EXPORT_SYMBOL_GPL(dpbp_open);
54
55
56
57
58
59
60
61
62
63
64
65
66int dpbp_close(struct fsl_mc_io *mc_io,
67 u32 cmd_flags,
68 u16 token)
69{
70 struct fsl_mc_command cmd = { 0 };
71
72
73 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, cmd_flags,
74 token);
75
76
77 return mc_send_command(mc_io, &cmd);
78}
79EXPORT_SYMBOL_GPL(dpbp_close);
80
81
82
83
84
85
86
87
88
89int dpbp_enable(struct fsl_mc_io *mc_io,
90 u32 cmd_flags,
91 u16 token)
92{
93 struct fsl_mc_command cmd = { 0 };
94
95
96 cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, cmd_flags,
97 token);
98
99
100 return mc_send_command(mc_io, &cmd);
101}
102EXPORT_SYMBOL_GPL(dpbp_enable);
103
104
105
106
107
108
109
110
111
112int dpbp_disable(struct fsl_mc_io *mc_io,
113 u32 cmd_flags,
114 u16 token)
115{
116 struct fsl_mc_command cmd = { 0 };
117
118
119 cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE,
120 cmd_flags, token);
121
122
123 return mc_send_command(mc_io, &cmd);
124}
125EXPORT_SYMBOL_GPL(dpbp_disable);
126
127
128
129
130
131
132
133
134
135int dpbp_reset(struct fsl_mc_io *mc_io,
136 u32 cmd_flags,
137 u16 token)
138{
139 struct fsl_mc_command cmd = { 0 };
140
141
142 cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET,
143 cmd_flags, token);
144
145
146 return mc_send_command(mc_io, &cmd);
147}
148EXPORT_SYMBOL_GPL(dpbp_reset);
149
150
151
152
153
154
155
156
157
158
159
160int dpbp_get_attributes(struct fsl_mc_io *mc_io,
161 u32 cmd_flags,
162 u16 token,
163 struct dpbp_attr *attr)
164{
165 struct fsl_mc_command cmd = { 0 };
166 struct dpbp_rsp_get_attributes *rsp_params;
167 int err;
168
169
170 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR,
171 cmd_flags, token);
172
173
174 err = mc_send_command(mc_io, &cmd);
175 if (err)
176 return err;
177
178
179 rsp_params = (struct dpbp_rsp_get_attributes *)cmd.params;
180 attr->bpid = le16_to_cpu(rsp_params->bpid);
181 attr->id = le32_to_cpu(rsp_params->id);
182
183 return 0;
184}
185EXPORT_SYMBOL_GPL(dpbp_get_attributes);
186