sound/firewire/fireworks/fireworks.h

Source file repositories/reference/linux-study-clean/sound/firewire/fireworks/fireworks.h

File Facts

System
Linux kernel
Corpus path
sound/firewire/fireworks/fireworks.h
Extension
.h
Size
6603 bytes
Lines
228
Domain
Driver Families
Bucket
sound/firewire
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct snd_efw_phys_grp {
	u8 type;	/* see enum snd_efw_grp_type */
	u8 count;
} __packed;

struct snd_efw {
	struct snd_card *card;
	struct fw_unit *unit;
	int card_index;

	struct mutex mutex;
	spinlock_t lock;

	/* for transaction */
	u32 seqnum;
	bool resp_addr_changable;

	/* for quirks */
	bool is_af9;
	bool is_fireworks3;
	u32 firmware_version;

	unsigned int midi_in_ports;
	unsigned int midi_out_ports;

	unsigned int supported_sampling_rate;
	unsigned int pcm_capture_channels[SND_EFW_MULTIPLIER_MODES];
	unsigned int pcm_playback_channels[SND_EFW_MULTIPLIER_MODES];

	struct amdtp_stream tx_stream;
	struct amdtp_stream rx_stream;
	struct cmp_connection out_conn;
	struct cmp_connection in_conn;
	unsigned int substreams_counter;

	/* hardware metering parameters */
	unsigned int phys_out;
	unsigned int phys_in;
	unsigned int phys_out_grp_count;
	unsigned int phys_in_grp_count;
	struct snd_efw_phys_grp phys_out_grps[HWINFO_MAX_CAPS_GROUPS];
	struct snd_efw_phys_grp phys_in_grps[HWINFO_MAX_CAPS_GROUPS];

	/* for uapi */
	int dev_lock_count;
	bool dev_lock_changed;
	wait_queue_head_t hwdep_wait;

	/* response queue */
	u8 *resp_buf;
	u8 *pull_ptr;
	u8 *push_ptr;

	struct amdtp_domain domain;
};

int snd_efw_transaction_cmd(struct fw_unit *unit,
			    const void *cmd, unsigned int size);
int snd_efw_transaction_run(struct fw_unit *unit,
			    const void *cmd, unsigned int cmd_size,
			    void *resp, unsigned int resp_size);
int snd_efw_transaction_register(void);
void snd_efw_transaction_unregister(void);
void snd_efw_transaction_bus_reset(struct fw_unit *unit);
void snd_efw_transaction_add_instance(struct snd_efw *efw);
void snd_efw_transaction_remove_instance(struct snd_efw *efw);

struct snd_efw_hwinfo {
	u32 flags;
	u32 guid_hi;
	u32 guid_lo;
	u32 type;
	u32 version;
	char vendor_name[HWINFO_NAME_SIZE_BYTES];
	char model_name[HWINFO_NAME_SIZE_BYTES];
	u32 supported_clocks;
	u32 amdtp_rx_pcm_channels;
	u32 amdtp_tx_pcm_channels;
	u32 phys_out;
	u32 phys_in;
	u32 phys_out_grp_count;
	struct snd_efw_phys_grp phys_out_grps[HWINFO_MAX_CAPS_GROUPS];
	u32 phys_in_grp_count;
	struct snd_efw_phys_grp phys_in_grps[HWINFO_MAX_CAPS_GROUPS];
	u32 midi_out_ports;
	u32 midi_in_ports;
	u32 max_sample_rate;
	u32 min_sample_rate;
	u32 dsp_version;
	u32 arm_version;

Annotation

Implementation Notes