1a2a55e51SPrabhakar Kushwaha /*
2a2a55e51SPrabhakar Kushwaha * Freescale Layerscape MC I/O wrapper
3a2a55e51SPrabhakar Kushwaha *
4a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor, Inc.
5a2a55e51SPrabhakar Kushwaha * Author: German Rivera <German.Rivera@freescale.com>
6a2a55e51SPrabhakar Kushwaha *
7a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+
8a2a55e51SPrabhakar Kushwaha */
9a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h>
10a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h>
11a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dpbp.h>
12a2a55e51SPrabhakar Kushwaha
dpbp_open(struct fsl_mc_io * mc_io,uint32_t cmd_flags,int dpbp_id,uint16_t * token)1387457d11SPrabhakar Kushwaha int dpbp_open(struct fsl_mc_io *mc_io,
1487457d11SPrabhakar Kushwaha uint32_t cmd_flags,
1587457d11SPrabhakar Kushwaha int dpbp_id,
1687457d11SPrabhakar Kushwaha uint16_t *token)
17a2a55e51SPrabhakar Kushwaha {
18a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
19a2a55e51SPrabhakar Kushwaha int err;
20a2a55e51SPrabhakar Kushwaha
21a2a55e51SPrabhakar Kushwaha /* prepare command */
22a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN,
2387457d11SPrabhakar Kushwaha cmd_flags,
2487457d11SPrabhakar Kushwaha 0);
25a2a55e51SPrabhakar Kushwaha DPBP_CMD_OPEN(cmd, dpbp_id);
26a2a55e51SPrabhakar Kushwaha
27a2a55e51SPrabhakar Kushwaha /* send command to mc*/
28a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
29a2a55e51SPrabhakar Kushwaha if (err)
30a2a55e51SPrabhakar Kushwaha return err;
31a2a55e51SPrabhakar Kushwaha
32a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
33a2a55e51SPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
34a2a55e51SPrabhakar Kushwaha
35a2a55e51SPrabhakar Kushwaha return err;
36a2a55e51SPrabhakar Kushwaha }
37a2a55e51SPrabhakar Kushwaha
dpbp_close(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)3887457d11SPrabhakar Kushwaha int dpbp_close(struct fsl_mc_io *mc_io,
3987457d11SPrabhakar Kushwaha uint32_t cmd_flags,
4087457d11SPrabhakar Kushwaha uint16_t token)
41a2a55e51SPrabhakar Kushwaha {
42a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
43a2a55e51SPrabhakar Kushwaha
44a2a55e51SPrabhakar Kushwaha /* prepare command */
4587457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, cmd_flags,
46a2a55e51SPrabhakar Kushwaha token);
47a2a55e51SPrabhakar Kushwaha
48a2a55e51SPrabhakar Kushwaha /* send command to mc*/
49a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
50a2a55e51SPrabhakar Kushwaha }
51a2a55e51SPrabhakar Kushwaha
dpbp_create(struct fsl_mc_io * mc_io,uint32_t cmd_flags,const struct dpbp_cfg * cfg,uint16_t * token)52*1ebbe4fcSPrabhakar Kushwaha int dpbp_create(struct fsl_mc_io *mc_io,
53*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags,
54*1ebbe4fcSPrabhakar Kushwaha const struct dpbp_cfg *cfg,
55*1ebbe4fcSPrabhakar Kushwaha uint16_t *token)
56*1ebbe4fcSPrabhakar Kushwaha {
57*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 };
58*1ebbe4fcSPrabhakar Kushwaha int err;
59*1ebbe4fcSPrabhakar Kushwaha
60*1ebbe4fcSPrabhakar Kushwaha (void)(cfg); /* unused */
61*1ebbe4fcSPrabhakar Kushwaha
62*1ebbe4fcSPrabhakar Kushwaha /* prepare command */
63*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_CREATE,
64*1ebbe4fcSPrabhakar Kushwaha cmd_flags,
65*1ebbe4fcSPrabhakar Kushwaha 0);
66*1ebbe4fcSPrabhakar Kushwaha
67*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/
68*1ebbe4fcSPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
69*1ebbe4fcSPrabhakar Kushwaha if (err)
70*1ebbe4fcSPrabhakar Kushwaha return err;
71*1ebbe4fcSPrabhakar Kushwaha
72*1ebbe4fcSPrabhakar Kushwaha /* retrieve response parameters */
73*1ebbe4fcSPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
74*1ebbe4fcSPrabhakar Kushwaha
75*1ebbe4fcSPrabhakar Kushwaha return 0;
76*1ebbe4fcSPrabhakar Kushwaha }
77*1ebbe4fcSPrabhakar Kushwaha
dpbp_destroy(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)78*1ebbe4fcSPrabhakar Kushwaha int dpbp_destroy(struct fsl_mc_io *mc_io,
79*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags,
80*1ebbe4fcSPrabhakar Kushwaha uint16_t token)
81*1ebbe4fcSPrabhakar Kushwaha {
82*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 };
83*1ebbe4fcSPrabhakar Kushwaha
84*1ebbe4fcSPrabhakar Kushwaha /* prepare command */
85*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_DESTROY,
86*1ebbe4fcSPrabhakar Kushwaha cmd_flags,
87*1ebbe4fcSPrabhakar Kushwaha token);
88*1ebbe4fcSPrabhakar Kushwaha
89*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/
90*1ebbe4fcSPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
91*1ebbe4fcSPrabhakar Kushwaha }
92*1ebbe4fcSPrabhakar Kushwaha
dpbp_enable(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)9387457d11SPrabhakar Kushwaha int dpbp_enable(struct fsl_mc_io *mc_io,
9487457d11SPrabhakar Kushwaha uint32_t cmd_flags,
9587457d11SPrabhakar Kushwaha uint16_t token)
96a2a55e51SPrabhakar Kushwaha {
97a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
98a2a55e51SPrabhakar Kushwaha
99a2a55e51SPrabhakar Kushwaha /* prepare command */
10087457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, cmd_flags,
101a2a55e51SPrabhakar Kushwaha token);
102a2a55e51SPrabhakar Kushwaha
103a2a55e51SPrabhakar Kushwaha /* send command to mc*/
104a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
105a2a55e51SPrabhakar Kushwaha }
106a2a55e51SPrabhakar Kushwaha
dpbp_disable(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)10787457d11SPrabhakar Kushwaha int dpbp_disable(struct fsl_mc_io *mc_io,
10887457d11SPrabhakar Kushwaha uint32_t cmd_flags,
10987457d11SPrabhakar Kushwaha uint16_t token)
110a2a55e51SPrabhakar Kushwaha {
111a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
112a2a55e51SPrabhakar Kushwaha
113a2a55e51SPrabhakar Kushwaha /* prepare command */
114a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE,
11587457d11SPrabhakar Kushwaha cmd_flags,
11687457d11SPrabhakar Kushwaha token);
117a2a55e51SPrabhakar Kushwaha
118a2a55e51SPrabhakar Kushwaha /* send command to mc*/
119a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
120a2a55e51SPrabhakar Kushwaha }
121a2a55e51SPrabhakar Kushwaha
dpbp_reset(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)12287457d11SPrabhakar Kushwaha int dpbp_reset(struct fsl_mc_io *mc_io,
12387457d11SPrabhakar Kushwaha uint32_t cmd_flags,
12487457d11SPrabhakar Kushwaha uint16_t token)
125a2a55e51SPrabhakar Kushwaha {
126a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
127a2a55e51SPrabhakar Kushwaha
128a2a55e51SPrabhakar Kushwaha /* prepare command */
129a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET,
13087457d11SPrabhakar Kushwaha cmd_flags,
13187457d11SPrabhakar Kushwaha token);
132a2a55e51SPrabhakar Kushwaha
133a2a55e51SPrabhakar Kushwaha /* send command to mc*/
134a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
135a2a55e51SPrabhakar Kushwaha }
136a2a55e51SPrabhakar Kushwaha
dpbp_get_attributes(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpbp_attr * attr)137a2a55e51SPrabhakar Kushwaha int dpbp_get_attributes(struct fsl_mc_io *mc_io,
13887457d11SPrabhakar Kushwaha uint32_t cmd_flags,
139a2a55e51SPrabhakar Kushwaha uint16_t token,
140a2a55e51SPrabhakar Kushwaha struct dpbp_attr *attr)
141a2a55e51SPrabhakar Kushwaha {
142a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
143a2a55e51SPrabhakar Kushwaha int err;
144a2a55e51SPrabhakar Kushwaha
145a2a55e51SPrabhakar Kushwaha /* prepare command */
146a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR,
14787457d11SPrabhakar Kushwaha cmd_flags,
14887457d11SPrabhakar Kushwaha token);
149a2a55e51SPrabhakar Kushwaha
150a2a55e51SPrabhakar Kushwaha /* send command to mc*/
151a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
152a2a55e51SPrabhakar Kushwaha if (err)
153a2a55e51SPrabhakar Kushwaha return err;
154a2a55e51SPrabhakar Kushwaha
155a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
156a2a55e51SPrabhakar Kushwaha DPBP_RSP_GET_ATTRIBUTES(cmd, attr);
157a2a55e51SPrabhakar Kushwaha
158a2a55e51SPrabhakar Kushwaha return 0;
159a2a55e51SPrabhakar Kushwaha }
160