brintos

brintos / linux-shallow public Read only

0
0
Text · 2.6 KiB · 5fbd0db Raw
100 lines · c
1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)2/*3 * Copyright 2013-2016 Freescale Semiconductor Inc.4 *5 */6#include <linux/kernel.h>7#include <linux/fsl/mc.h>8 9#include "fsl-mc-private.h"10 11/**12 * dpmcp_open() - Open a control session for the specified object.13 * @mc_io:	Pointer to MC portal's I/O object14 * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'15 * @dpmcp_id:	DPMCP unique ID16 * @token:	Returned token; use in subsequent API calls17 *18 * This function can be used to open a control session for an19 * already created object; an object may have been declared in20 * the DPL or by calling the dpmcp_create function.21 * This function returns a unique authentication token,22 * associated with the specific object ID and the specific MC23 * portal; this token must be used in all subsequent commands for24 * this specific object25 *26 * Return:	'0' on Success; Error code otherwise.27 */28int dpmcp_open(struct fsl_mc_io *mc_io,29	       u32 cmd_flags,30	       int dpmcp_id,31	       u16 *token)32{33	struct fsl_mc_command cmd = { 0 };34	struct dpmcp_cmd_open *cmd_params;35	int err;36 37	/* prepare command */38	cmd.header = mc_encode_cmd_header(DPMCP_CMDID_OPEN,39					  cmd_flags, 0);40	cmd_params = (struct dpmcp_cmd_open *)cmd.params;41	cmd_params->dpmcp_id = cpu_to_le32(dpmcp_id);42 43	/* send command to mc*/44	err = mc_send_command(mc_io, &cmd);45	if (err)46		return err;47 48	/* retrieve response parameters */49	*token = mc_cmd_hdr_read_token(&cmd);50 51	return err;52}53 54/**55 * dpmcp_close() - Close the control session of the object56 * @mc_io:	Pointer to MC portal's I/O object57 * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'58 * @token:	Token of DPMCP object59 *60 * After this function is called, no further operations are61 * allowed on the object without opening a new control session.62 *63 * Return:	'0' on Success; Error code otherwise.64 */65int dpmcp_close(struct fsl_mc_io *mc_io,66		u32 cmd_flags,67		u16 token)68{69	struct fsl_mc_command cmd = { 0 };70 71	/* prepare command */72	cmd.header = mc_encode_cmd_header(DPMCP_CMDID_CLOSE,73					  cmd_flags, token);74 75	/* send command to mc*/76	return mc_send_command(mc_io, &cmd);77}78 79/**80 * dpmcp_reset() - Reset the DPMCP, returns the object to initial state.81 * @mc_io:	Pointer to MC portal's I/O object82 * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'83 * @token:	Token of DPMCP object84 *85 * Return:	'0' on Success; Error code otherwise.86 */87int dpmcp_reset(struct fsl_mc_io *mc_io,88		u32 cmd_flags,89		u16 token)90{91	struct fsl_mc_command cmd = { 0 };92 93	/* prepare command */94	cmd.header = mc_encode_cmd_header(DPMCP_CMDID_RESET,95					  cmd_flags, token);96 97	/* send command to mc*/98	return mc_send_command(mc_io, &cmd);99}100