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