1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
6 #include <linux/kernel.h>
7 #include <linux/fsl/mc.h>
9 #include "fsl-mc-private.h"
11 static int fsl_mc_get_open_cmd_id(const char *type
)
17 { DPRTC_CMDID_OPEN
, "dprtc" },
18 { DPRC_CMDID_OPEN
, "dprc" },
19 { DPNI_CMDID_OPEN
, "dpni" },
20 { DPIO_CMDID_OPEN
, "dpio" },
21 { DPSW_CMDID_OPEN
, "dpsw" },
22 { DPBP_CMDID_OPEN
, "dpbp" },
23 { DPCON_CMDID_OPEN
, "dpcon" },
24 { DPMCP_CMDID_OPEN
, "dpmcp" },
25 { DPMAC_CMDID_OPEN
, "dpmac" },
26 { DPSECI_CMDID_OPEN
, "dpseci" },
27 { DPDMUX_CMDID_OPEN
, "dpdmux" },
28 { DPDCEI_CMDID_OPEN
, "dpdcei" },
29 { DPAIOP_CMDID_OPEN
, "dpaiop" },
30 { DPCI_CMDID_OPEN
, "dpci" },
31 { DPDMAI_CMDID_OPEN
, "dpdmai" },
32 { DPDBG_CMDID_OPEN
, "dpdbg" },
37 for (i
= 0; dev_ids
[i
].type
; i
++)
38 if (!strcmp(dev_ids
[i
].type
, type
))
39 return dev_ids
[i
].cmd_id
;
44 int fsl_mc_obj_open(struct fsl_mc_io
*mc_io
,
50 struct fsl_mc_command cmd
= { 0 };
51 struct fsl_mc_obj_cmd_open
*cmd_params
;
53 int cmd_id
= fsl_mc_get_open_cmd_id(obj_type
);
59 cmd
.header
= mc_encode_cmd_header(cmd_id
, cmd_flags
, 0);
60 cmd_params
= (struct fsl_mc_obj_cmd_open
*)cmd
.params
;
61 cmd_params
->obj_id
= cpu_to_le32(obj_id
);
63 /* send command to mc*/
64 err
= mc_send_command(mc_io
, &cmd
);
68 /* retrieve response parameters */
69 *token
= mc_cmd_hdr_read_token(&cmd
);
73 EXPORT_SYMBOL_GPL(fsl_mc_obj_open
);
75 int fsl_mc_obj_close(struct fsl_mc_io
*mc_io
,
79 struct fsl_mc_command cmd
= { 0 };
82 cmd
.header
= mc_encode_cmd_header(OBJ_CMDID_CLOSE
, cmd_flags
,
85 /* send command to mc*/
86 return mc_send_command(mc_io
, &cmd
);
88 EXPORT_SYMBOL_GPL(fsl_mc_obj_close
);
90 int fsl_mc_obj_reset(struct fsl_mc_io
*mc_io
,
94 struct fsl_mc_command cmd
= { 0 };
97 cmd
.header
= mc_encode_cmd_header(OBJ_CMDID_RESET
, cmd_flags
,
100 /* send command to mc*/
101 return mc_send_command(mc_io
, &cmd
);
103 EXPORT_SYMBOL_GPL(fsl_mc_obj_reset
);