1a2a55e51SPrabhakar Kushwaha /*
2a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor
3a2a55e51SPrabhakar Kushwaha *
4a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+
5a2a55e51SPrabhakar Kushwaha */
6a2a55e51SPrabhakar Kushwaha
7a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h>
8a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h>
9a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dpio.h>
10a2a55e51SPrabhakar Kushwaha
dpio_open(struct fsl_mc_io * mc_io,uint32_t cmd_flags,int dpio_id,uint16_t * token)1187457d11SPrabhakar Kushwaha int dpio_open(struct fsl_mc_io *mc_io,
1287457d11SPrabhakar Kushwaha uint32_t cmd_flags,
1387457d11SPrabhakar Kushwaha int dpio_id,
1487457d11SPrabhakar Kushwaha uint16_t *token)
15a2a55e51SPrabhakar Kushwaha {
16a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
17a2a55e51SPrabhakar Kushwaha int err;
18a2a55e51SPrabhakar Kushwaha
19a2a55e51SPrabhakar Kushwaha /* prepare command */
20a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_OPEN,
2187457d11SPrabhakar Kushwaha cmd_flags,
2287457d11SPrabhakar Kushwaha 0);
23a2a55e51SPrabhakar Kushwaha DPIO_CMD_OPEN(cmd, dpio_id);
24a2a55e51SPrabhakar Kushwaha
25a2a55e51SPrabhakar Kushwaha /* send command to mc*/
26a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
27a2a55e51SPrabhakar Kushwaha if (err)
28a2a55e51SPrabhakar Kushwaha return err;
29a2a55e51SPrabhakar Kushwaha
30a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
31a2a55e51SPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
32a2a55e51SPrabhakar Kushwaha
33a2a55e51SPrabhakar Kushwaha return 0;
34a2a55e51SPrabhakar Kushwaha }
35a2a55e51SPrabhakar Kushwaha
dpio_close(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)3687457d11SPrabhakar Kushwaha int dpio_close(struct fsl_mc_io *mc_io,
3787457d11SPrabhakar Kushwaha uint32_t cmd_flags,
3887457d11SPrabhakar Kushwaha uint16_t token)
39a2a55e51SPrabhakar Kushwaha {
40a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
41a2a55e51SPrabhakar Kushwaha
42a2a55e51SPrabhakar Kushwaha /* prepare command */
43a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_CLOSE,
4487457d11SPrabhakar Kushwaha cmd_flags,
45a2a55e51SPrabhakar Kushwaha token);
46a2a55e51SPrabhakar Kushwaha
47a2a55e51SPrabhakar Kushwaha /* send command to mc*/
48a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
49a2a55e51SPrabhakar Kushwaha }
50a2a55e51SPrabhakar Kushwaha
dpio_create(struct fsl_mc_io * mc_io,uint32_t cmd_flags,const struct dpio_cfg * cfg,uint16_t * token)51*1ebbe4fcSPrabhakar Kushwaha int dpio_create(struct fsl_mc_io *mc_io,
52*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags,
53*1ebbe4fcSPrabhakar Kushwaha const struct dpio_cfg *cfg,
54*1ebbe4fcSPrabhakar Kushwaha uint16_t *token)
55*1ebbe4fcSPrabhakar Kushwaha {
56*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 };
57*1ebbe4fcSPrabhakar Kushwaha int err;
58*1ebbe4fcSPrabhakar Kushwaha
59*1ebbe4fcSPrabhakar Kushwaha /* prepare command */
60*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_CREATE,
61*1ebbe4fcSPrabhakar Kushwaha cmd_flags,
62*1ebbe4fcSPrabhakar Kushwaha 0);
63*1ebbe4fcSPrabhakar Kushwaha DPIO_CMD_CREATE(cmd, cfg);
64*1ebbe4fcSPrabhakar Kushwaha
65*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/
66*1ebbe4fcSPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
67*1ebbe4fcSPrabhakar Kushwaha if (err)
68*1ebbe4fcSPrabhakar Kushwaha return err;
69*1ebbe4fcSPrabhakar Kushwaha
70*1ebbe4fcSPrabhakar Kushwaha /* retrieve response parameters */
71*1ebbe4fcSPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
72*1ebbe4fcSPrabhakar Kushwaha
73*1ebbe4fcSPrabhakar Kushwaha return 0;
74*1ebbe4fcSPrabhakar Kushwaha }
75*1ebbe4fcSPrabhakar Kushwaha
dpio_destroy(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)76*1ebbe4fcSPrabhakar Kushwaha int dpio_destroy(struct fsl_mc_io *mc_io,
77*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags,
78*1ebbe4fcSPrabhakar Kushwaha uint16_t token)
79*1ebbe4fcSPrabhakar Kushwaha {
80*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 };
81*1ebbe4fcSPrabhakar Kushwaha
82*1ebbe4fcSPrabhakar Kushwaha /* prepare command */
83*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_DESTROY,
84*1ebbe4fcSPrabhakar Kushwaha cmd_flags,
85*1ebbe4fcSPrabhakar Kushwaha token);
86*1ebbe4fcSPrabhakar Kushwaha
87*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/
88*1ebbe4fcSPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
89*1ebbe4fcSPrabhakar Kushwaha }
90*1ebbe4fcSPrabhakar Kushwaha
dpio_enable(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)9187457d11SPrabhakar Kushwaha int dpio_enable(struct fsl_mc_io *mc_io,
9287457d11SPrabhakar Kushwaha uint32_t cmd_flags,
9387457d11SPrabhakar Kushwaha uint16_t token)
9487457d11SPrabhakar Kushwaha {
9587457d11SPrabhakar Kushwaha struct mc_command cmd = { 0 };
9687457d11SPrabhakar Kushwaha
9787457d11SPrabhakar Kushwaha /* prepare command */
9887457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_ENABLE,
9987457d11SPrabhakar Kushwaha cmd_flags,
10087457d11SPrabhakar Kushwaha token);
10187457d11SPrabhakar Kushwaha
10287457d11SPrabhakar Kushwaha /* send command to mc*/
10387457d11SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
10487457d11SPrabhakar Kushwaha }
10587457d11SPrabhakar Kushwaha
dpio_disable(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)10687457d11SPrabhakar Kushwaha int dpio_disable(struct fsl_mc_io *mc_io,
10787457d11SPrabhakar Kushwaha uint32_t cmd_flags,
10887457d11SPrabhakar Kushwaha uint16_t token)
10987457d11SPrabhakar Kushwaha {
11087457d11SPrabhakar Kushwaha struct mc_command cmd = { 0 };
11187457d11SPrabhakar Kushwaha
11287457d11SPrabhakar Kushwaha /* prepare command */
11387457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_DISABLE,
11487457d11SPrabhakar Kushwaha cmd_flags,
11587457d11SPrabhakar Kushwaha token);
11687457d11SPrabhakar Kushwaha
11787457d11SPrabhakar Kushwaha /* send command to mc*/
11887457d11SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
11987457d11SPrabhakar Kushwaha }
12087457d11SPrabhakar Kushwaha
dpio_reset(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)12187457d11SPrabhakar Kushwaha int dpio_reset(struct fsl_mc_io *mc_io,
12287457d11SPrabhakar Kushwaha uint32_t cmd_flags,
12387457d11SPrabhakar Kushwaha uint16_t token)
124a2a55e51SPrabhakar Kushwaha {
125a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
126a2a55e51SPrabhakar Kushwaha
127a2a55e51SPrabhakar Kushwaha /* prepare command */
128a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_RESET,
12987457d11SPrabhakar Kushwaha cmd_flags,
13087457d11SPrabhakar Kushwaha token);
131a2a55e51SPrabhakar Kushwaha
132a2a55e51SPrabhakar Kushwaha /* send command to mc*/
133a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
134a2a55e51SPrabhakar Kushwaha }
135a2a55e51SPrabhakar Kushwaha
dpio_get_attributes(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpio_attr * attr)136a2a55e51SPrabhakar Kushwaha int dpio_get_attributes(struct fsl_mc_io *mc_io,
13787457d11SPrabhakar Kushwaha uint32_t cmd_flags,
138a2a55e51SPrabhakar Kushwaha uint16_t token,
139a2a55e51SPrabhakar Kushwaha struct dpio_attr *attr)
140a2a55e51SPrabhakar Kushwaha {
141a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
142a2a55e51SPrabhakar Kushwaha int err;
143a2a55e51SPrabhakar Kushwaha
144a2a55e51SPrabhakar Kushwaha /* prepare command */
145a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_GET_ATTR,
14687457d11SPrabhakar Kushwaha cmd_flags,
147a2a55e51SPrabhakar Kushwaha token);
148a2a55e51SPrabhakar Kushwaha
149a2a55e51SPrabhakar Kushwaha /* send command to mc*/
150a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
151a2a55e51SPrabhakar Kushwaha if (err)
152a2a55e51SPrabhakar Kushwaha return err;
153a2a55e51SPrabhakar Kushwaha
154a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
155a2a55e51SPrabhakar Kushwaha DPIO_RSP_GET_ATTR(cmd, attr);
156a2a55e51SPrabhakar Kushwaha
157a2a55e51SPrabhakar Kushwaha return 0;
158a2a55e51SPrabhakar Kushwaha }
159