blob: 1517a70083811d689bcdffc35a8880f496974150 [file] [log] [blame]
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -07001/*
2 * Freescale Layerscape MC I/O wrapper
3 *
4 * Copyright (C) 2013-2015 Freescale Semiconductor, Inc.
5 * Author: German Rivera <German.Rivera@freescale.com>
6 *
7 * SPDX-License-Identifier: GPL-2.0+
8 */
9#include <fsl-mc/fsl_mc_sys.h>
10#include <fsl-mc/fsl_mc_cmd.h>
11#include <fsl-mc/fsl_dpbp.h>
12
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053013int dpbp_open(struct fsl_mc_io *mc_io,
14 uint32_t cmd_flags,
15 int dpbp_id,
16 uint16_t *token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070017{
18 struct mc_command cmd = { 0 };
19 int err;
20
21 /* prepare command */
22 cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053023 cmd_flags,
24 0);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070025 DPBP_CMD_OPEN(cmd, dpbp_id);
26
27 /* send command to mc*/
28 err = mc_send_command(mc_io, &cmd);
29 if (err)
30 return err;
31
32 /* retrieve response parameters */
33 *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
34
35 return err;
36}
37
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053038int dpbp_close(struct fsl_mc_io *mc_io,
39 uint32_t cmd_flags,
40 uint16_t token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070041{
42 struct mc_command cmd = { 0 };
43
44 /* prepare command */
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053045 cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, cmd_flags,
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070046 token);
47
48 /* send command to mc*/
49 return mc_send_command(mc_io, &cmd);
50}
51
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053052int dpbp_enable(struct fsl_mc_io *mc_io,
53 uint32_t cmd_flags,
54 uint16_t token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070055{
56 struct mc_command cmd = { 0 };
57
58 /* prepare command */
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053059 cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, cmd_flags,
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070060 token);
61
62 /* send command to mc*/
63 return mc_send_command(mc_io, &cmd);
64}
65
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053066int dpbp_disable(struct fsl_mc_io *mc_io,
67 uint32_t cmd_flags,
68 uint16_t token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070069{
70 struct mc_command cmd = { 0 };
71
72 /* prepare command */
73 cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053074 cmd_flags,
75 token);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070076
77 /* send command to mc*/
78 return mc_send_command(mc_io, &cmd);
79}
80
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053081int dpbp_reset(struct fsl_mc_io *mc_io,
82 uint32_t cmd_flags,
83 uint16_t token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070084{
85 struct mc_command cmd = { 0 };
86
87 /* prepare command */
88 cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053089 cmd_flags,
90 token);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070091
92 /* send command to mc*/
93 return mc_send_command(mc_io, &cmd);
94}
95
96int dpbp_get_attributes(struct fsl_mc_io *mc_io,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053097 uint32_t cmd_flags,
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070098 uint16_t token,
99 struct dpbp_attr *attr)
100{
101 struct mc_command cmd = { 0 };
102 int err;
103
104 /* prepare command */
105 cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +0530106 cmd_flags,
107 token);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -0700108
109 /* send command to mc*/
110 err = mc_send_command(mc_io, &cmd);
111 if (err)
112 return err;
113
114 /* retrieve response parameters */
115 DPBP_RSP_GET_ATTRIBUTES(cmd, attr);
116
117 return 0;
118}