blob: b6282a5511036da981f685aefa5ac7044b67d61f [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2011, 2013, 2015-2019, The Linux Foundation. All rights reserved.
*/
/*
* Function and data structure declarations.
*/
#ifndef _SPS_CORE_H_
#define _SPS_CORE_H_
#include <linux/types.h> /* u32 */
#include <linux/mutex.h> /* mutex */
#include <linux/list.h> /* list_head */
#include "spsi.h"
#include "sps_bam.h"
/* Connection state definitions */
#define SPS_STATE_DEF(x) ('S' | ('P' << 8) | ('S' << 16) | ((x) << 24))
#define IS_SPS_STATE_OK(x) \
(((x)->client_state & 0x00ffffff) == SPS_STATE_DEF(0))
/* Configuration indicating satellite connection */
#define SPS_CONFIG_SATELLITE 0x11111111
/* Client connection state */
#define SPS_STATE_DISCONNECT 0
#define SPS_STATE_ALLOCATE SPS_STATE_DEF(1)
#define SPS_STATE_CONNECT SPS_STATE_DEF(2)
#define SPS_STATE_ENABLE SPS_STATE_DEF(3)
#define SPS_STATE_DISABLE SPS_STATE_DEF(4)
/**
* Find the BAM device from the handle
*
* This function finds a BAM device in the BAM registration list that
* matches the specified device handle.
*
* @h - device handle of the BAM
*
* @return - pointer to the BAM device struct, or NULL on error
*
*/
struct sps_bam *sps_h2bam(unsigned long h);
/**
* Initialize resource manager module
*
* This function initializes the resource manager module.
*
* @rm - pointer to resource manager struct
*
* @options - driver options bitflags (see SPS_OPT_*)
*
* @return 0 on success, negative value on error
*
*/
int sps_rm_init(struct sps_rm *rm, u32 options);
/**
* De-initialize resource manager module
*
* This function de-initializes the resource manager module.
*
*/
void sps_rm_de_init(void);
/**
* Initialize client state context
*
* This function initializes a client state context struct.
*
* @connect - pointer to client connection state struct
*
*/
void sps_rm_config_init(struct sps_connect *connect);
/**
* Process connection state change
*
* This function processes a connection state change.
*
* @pipe - pointer to pipe context
*
* @state - new state for connection
*
* @return 0 on success, negative value on error
*
*/
int sps_rm_state_change(struct sps_pipe *pipe, u32 state);
#endif /* _SPS_CORE_H_ */