xref: /rk3399_rockchip-uboot/drivers/net/fsl-mc/dpbp.c (revision 1670c8c219f6e47de624b4ed557b5a995265cd40)
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