#ifndef SOUND_FIREWIRE_CMP_H_INCLUDED
#define SOUND_FIREWIRE_CMP_H_INCLUDED

#include <linux/mutex.h>
#include <linux/types.h>
#include "iso-resources.h"

struct fw_unit;

enum cmp_direction {
	CMP_INPUT = 0,
	CMP_OUTPUT,
};

/**
 * struct cmp_connection - manages an isochronous connection to a device
 * @speed: the connection's actual speed
 *
 * This structure manages (using CMP) an isochronous stream between the local
 * computer and a device's input plug (iPCR) and output plug (oPCR).
 *
 * There is no corresponding oPCR created on the local computer, so it is not
 * possible to overlay connections on top of this one.
 */
struct cmp_connection {
	int speed;
	/* private: */
	bool connected;
	struct mutex mutex;
	struct fw_iso_resources resources;
	__be32 last_pcr_value;
	unsigned int pcr_index;
	unsigned int max_speed;
	enum cmp_direction direction;
};

int cmp_connection_init(struct cmp_connection *connection,
			struct fw_unit *unit,
			enum cmp_direction direction,
			unsigned int pcr_index);
int cmp_connection_check_used(struct cmp_connection *connection, bool *used);
void cmp_connection_destroy(struct cmp_connection *connection);

int cmp_connection_establish(struct cmp_connection *connection,
			     unsigned int max_payload);
int cmp_connection_update(struct cmp_connection *connection);
void cmp_connection_break(struct cmp_connection *connection);

#endif
ch'/></form></td></tr>
<tr><td class='sub'>net-next plumbings</td><td class='sub right'>Tobias Klauser</td></tr></table>
<table class='tabs'><tr><td>
<a href='/cgit.cgi/linux/net-next.git/'>summary</a><a href='/cgit.cgi/linux/net-next.git/refs/?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>refs</a><a class='active' href='/cgit.cgi/linux/net-next.git/log/tools/perf/Documentation/perf-timechart.txt'>log</a><a href='/cgit.cgi/linux/net-next.git/tree/tools/perf/Documentation/perf-timechart.txt?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/tools/perf/Documentation/perf-timechart.txt?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/tools/perf/Documentation/perf-timechart.txt?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/tools/perf/Documentation/perf-timechart.txt'>
<input type='hidden' name='id' value='891aa1e0f13c3aaa756c69b343d6ab6f3357009b'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>tools</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/perf?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>perf</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/perf/Documentation?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>Documentation</a>/<a href='/cgit.cgi/linux/net-next.git/log/tools/perf/Documentation/perf-timechart.txt?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b'>perf-timechart.txt</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/tools/perf/Documentation/perf-timechart.txt?id=891aa1e0f13c3aaa756c69b343d6ab6f3357009b&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>