Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/firewire/iso-resources.h
26378 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef SOUND_FIREWIRE_ISO_RESOURCES_H_INCLUDED
3
#define SOUND_FIREWIRE_ISO_RESOURCES_H_INCLUDED
4
5
#include <linux/mutex.h>
6
#include <linux/types.h>
7
8
struct fw_unit;
9
10
/**
11
* struct fw_iso_resources - manages channel/bandwidth allocation
12
* @channels_mask: if the device does not support all channel numbers, set this
13
* bit mask to something else than the default (all ones)
14
*
15
* This structure manages (de)allocation of isochronous resources (channel and
16
* bandwidth) for one isochronous stream.
17
*/
18
struct fw_iso_resources {
19
u64 channels_mask;
20
/* private: */
21
struct fw_unit *unit;
22
struct mutex mutex;
23
unsigned int channel;
24
unsigned int bandwidth; /* in bandwidth units, without overhead */
25
unsigned int bandwidth_overhead;
26
int generation; /* in which allocation is valid */
27
bool allocated;
28
};
29
30
int fw_iso_resources_init(struct fw_iso_resources *r,
31
struct fw_unit *unit);
32
void fw_iso_resources_destroy(struct fw_iso_resources *r);
33
34
int fw_iso_resources_allocate(struct fw_iso_resources *r,
35
unsigned int max_payload_bytes, int speed);
36
int fw_iso_resources_update(struct fw_iso_resources *r);
37
void fw_iso_resources_free(struct fw_iso_resources *r);
38
39
#endif
40
41