blob: cd3fd50fdd9627addfe9dc521253b572d9362490 [file] [log] [blame]
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -07001/*
2 * Copyright (C) 2013-2015 Freescale Semiconductor
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#include <fsl-mc/fsl_mc_sys.h>
8#include <fsl-mc/fsl_mc_cmd.h>
9#include <fsl-mc/fsl_dpio.h>
10
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053011int dpio_open(struct fsl_mc_io *mc_io,
12 uint32_t cmd_flags,
13 int dpio_id,
14 uint16_t *token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070015{
16 struct mc_command cmd = { 0 };
17 int err;
18
19 /* prepare command */
20 cmd.header = mc_encode_cmd_header(DPIO_CMDID_OPEN,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053021 cmd_flags,
22 0);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070023 DPIO_CMD_OPEN(cmd, dpio_id);
24
25 /* send command to mc*/
26 err = mc_send_command(mc_io, &cmd);
27 if (err)
28 return err;
29
30 /* retrieve response parameters */
31 *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
32
33 return 0;
34}
35
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053036int dpio_close(struct fsl_mc_io *mc_io,
37 uint32_t cmd_flags,
38 uint16_t token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070039{
40 struct mc_command cmd = { 0 };
41
42 /* prepare command */
43 cmd.header = mc_encode_cmd_header(DPIO_CMDID_CLOSE,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053044 cmd_flags,
45 token);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070046
47 /* send command to mc*/
48 return mc_send_command(mc_io, &cmd);
49}
50
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053051int dpio_enable(struct fsl_mc_io *mc_io,
52 uint32_t cmd_flags,
53 uint16_t token)
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070054{
55 struct mc_command cmd = { 0 };
56
57 /* prepare command */
58 cmd.header = mc_encode_cmd_header(DPIO_CMDID_ENABLE,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053059 cmd_flags,
60 token);
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070061
62 /* send command to mc*/
63 return mc_send_command(mc_io, &cmd);
64}
65
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053066int dpio_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(DPIO_CMDID_DISABLE,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053074 cmd_flags,
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -070075 token);
76
77 /* send command to mc*/
78 return mc_send_command(mc_io, &cmd);
79}
80
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +053081int dpio_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(DPIO_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 dpio_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 dpio_attr *attr)
100{
101 struct mc_command cmd = { 0 };
102 int err;
103
104 /* prepare command */
105 cmd.header = mc_encode_cmd_header(DPIO_CMDID_GET_ATTR,
Prabhakar Kushwaha9564df62015-07-07 15:40:06 +0530106 cmd_flags,
Prabhakar Kushwahacfd9fbf2015-03-19 09:20:45 -0700107 token);
108
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 DPIO_RSP_GET_ATTR(cmd, attr);
116
117 return 0;
118}