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