1 // SPDX-License-Identifier: GPL-2.0+
3 * Freescale Layerscape MC I/O wrapper
5 * Copyright 2013-2016 Freescale Semiconductor, Inc.
8 #include <fsl-mc/fsl_mc_sys.h>
9 #include <fsl-mc/fsl_mc_cmd.h>
10 #include <fsl-mc/fsl_dpbp.h>
12 int dpbp_open(struct fsl_mc_io *mc_io,
17 struct mc_command cmd = { 0 };
21 cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN,
24 DPBP_CMD_OPEN(cmd, dpbp_id);
26 /* send command to mc*/
27 err = mc_send_command(mc_io, &cmd);
31 /* retrieve response parameters */
32 *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
37 int dpbp_close(struct fsl_mc_io *mc_io,
41 struct mc_command cmd = { 0 };
44 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, cmd_flags,
47 /* send command to mc*/
48 return mc_send_command(mc_io, &cmd);
51 int dpbp_create(struct fsl_mc_io *mc_io,
54 const struct dpbp_cfg *cfg,
57 struct mc_command cmd = { 0 };
60 (void)(cfg); /* unused */
63 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CREATE,
67 /* send command to mc*/
68 err = mc_send_command(mc_io, &cmd);
72 /* retrieve response parameters */
73 MC_CMD_READ_OBJ_ID(cmd, *obj_id);
78 int dpbp_destroy(struct fsl_mc_io *mc_io,
83 struct mc_command cmd = { 0 };
86 cmd.header = mc_encode_cmd_header(DPBP_CMDID_DESTROY,
90 /* set object id to destroy */
91 CMD_DESTROY_SET_OBJ_ID_PARAM0(cmd, obj_id);
93 /* send command to mc*/
94 return mc_send_command(mc_io, &cmd);
97 int dpbp_enable(struct fsl_mc_io *mc_io,
101 struct mc_command cmd = { 0 };
103 /* prepare command */
104 cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, cmd_flags,
107 /* send command to mc*/
108 return mc_send_command(mc_io, &cmd);
111 int dpbp_disable(struct fsl_mc_io *mc_io,
115 struct mc_command cmd = { 0 };
117 /* prepare command */
118 cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE,
122 /* send command to mc*/
123 return mc_send_command(mc_io, &cmd);
126 int dpbp_reset(struct fsl_mc_io *mc_io,
130 struct mc_command cmd = { 0 };
132 /* prepare command */
133 cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET,
137 /* send command to mc*/
138 return mc_send_command(mc_io, &cmd);
141 int dpbp_get_attributes(struct fsl_mc_io *mc_io,
144 struct dpbp_attr *attr)
146 struct mc_command cmd = { 0 };
149 /* prepare command */
150 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR,
154 /* send command to mc*/
155 err = mc_send_command(mc_io, &cmd);
159 /* retrieve response parameters */
160 DPBP_RSP_GET_ATTRIBUTES(cmd, attr);
165 int dpbp_get_api_version(struct fsl_mc_io *mc_io,
170 struct mc_command cmd = { 0 };
173 /* prepare command */
174 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_API_VERSION,
177 /* send command to mc */
178 err = mc_send_command(mc_io, &cmd);
182 /* retrieve response parameters */
183 mc_cmd_read_api_version(&cmd, major_ver, minor_ver);