brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · 26ab880 Raw
54 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef SOUND_FIREWIRE_CMP_H_INCLUDED3#define SOUND_FIREWIRE_CMP_H_INCLUDED4 5#include <linux/mutex.h>6#include <linux/types.h>7#include "iso-resources.h"8 9struct fw_unit;10 11enum cmp_direction {12	CMP_INPUT = 0,13	CMP_OUTPUT,14};15 16/**17 * struct cmp_connection - manages an isochronous connection to a device18 * @speed: the connection's actual speed19 *20 * This structure manages (using CMP) an isochronous stream between the local21 * computer and a device's input plug (iPCR) and output plug (oPCR).22 *23 * There is no corresponding oPCR created on the local computer, so it is not24 * possible to overlay connections on top of this one.25 */26struct cmp_connection {27	int speed;28	/* private: */29	bool connected;30	struct mutex mutex;31	struct fw_iso_resources resources;32	__be32 last_pcr_value;33	unsigned int pcr_index;34	unsigned int max_speed;35	enum cmp_direction direction;36};37 38int cmp_connection_init(struct cmp_connection *connection,39			struct fw_unit *unit,40			enum cmp_direction direction,41			unsigned int pcr_index);42int cmp_connection_check_used(struct cmp_connection *connection, bool *used);43void cmp_connection_destroy(struct cmp_connection *connection);44 45int cmp_connection_reserve(struct cmp_connection *connection,46			   unsigned int max_payload);47void cmp_connection_release(struct cmp_connection *connection);48 49int cmp_connection_establish(struct cmp_connection *connection);50int cmp_connection_update(struct cmp_connection *connection);51void cmp_connection_break(struct cmp_connection *connection);52 53#endif54