122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef __SOUND_HDSPM_H
722851890Sopenharmony_ci#define __SOUND_HDSPM_H
822851890Sopenharmony_ci#include <linux/types.h>
922851890Sopenharmony_ci#define HDSPM_MAX_CHANNELS      64
1022851890Sopenharmony_cienum hdspm_io_type {
1122851890Sopenharmony_ci	MADI,
1222851890Sopenharmony_ci	MADIface,
1322851890Sopenharmony_ci	AIO,
1422851890Sopenharmony_ci	AES32,
1522851890Sopenharmony_ci	RayDAT
1622851890Sopenharmony_ci};
1722851890Sopenharmony_cienum hdspm_speed {
1822851890Sopenharmony_ci	ss,
1922851890Sopenharmony_ci	ds,
2022851890Sopenharmony_ci	qs
2122851890Sopenharmony_ci};
2222851890Sopenharmony_cistruct hdspm_peak_rms {
2322851890Sopenharmony_ci	__u32 input_peaks[64];
2422851890Sopenharmony_ci	__u32 playback_peaks[64];
2522851890Sopenharmony_ci	__u32 output_peaks[64];
2622851890Sopenharmony_ci	__u64 input_rms[64];
2722851890Sopenharmony_ci	__u64 playback_rms[64];
2822851890Sopenharmony_ci	__u64 output_rms[64];
2922851890Sopenharmony_ci	__u8 speed;
3022851890Sopenharmony_ci	int status2;
3122851890Sopenharmony_ci};
3222851890Sopenharmony_ci#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS \
3322851890Sopenharmony_ci	_IOR('H', 0x42, struct hdspm_peak_rms)
3422851890Sopenharmony_cistruct hdspm_config {
3522851890Sopenharmony_ci	unsigned char pref_sync_ref;
3622851890Sopenharmony_ci	unsigned char wordclock_sync_check;
3722851890Sopenharmony_ci	unsigned char madi_sync_check;
3822851890Sopenharmony_ci	unsigned int system_sample_rate;
3922851890Sopenharmony_ci	unsigned int autosync_sample_rate;
4022851890Sopenharmony_ci	unsigned char system_clock_mode;
4122851890Sopenharmony_ci	unsigned char clock_source;
4222851890Sopenharmony_ci	unsigned char autosync_ref;
4322851890Sopenharmony_ci	unsigned char line_out;
4422851890Sopenharmony_ci	unsigned int passthru;
4522851890Sopenharmony_ci	unsigned int analog_out;
4622851890Sopenharmony_ci};
4722851890Sopenharmony_ci#define SNDRV_HDSPM_IOCTL_GET_CONFIG \
4822851890Sopenharmony_ci	_IOR('H', 0x41, struct hdspm_config)
4922851890Sopenharmony_cienum hdspm_ltc_format {
5022851890Sopenharmony_ci	format_invalid,
5122851890Sopenharmony_ci	fps_24,
5222851890Sopenharmony_ci	fps_25,
5322851890Sopenharmony_ci	fps_2997,
5422851890Sopenharmony_ci	fps_30
5522851890Sopenharmony_ci};
5622851890Sopenharmony_cienum hdspm_ltc_frame {
5722851890Sopenharmony_ci	frame_invalid,
5822851890Sopenharmony_ci	drop_frame,
5922851890Sopenharmony_ci	full_frame
6022851890Sopenharmony_ci};
6122851890Sopenharmony_cienum hdspm_ltc_input_format {
6222851890Sopenharmony_ci	ntsc,
6322851890Sopenharmony_ci	pal,
6422851890Sopenharmony_ci	no_video
6522851890Sopenharmony_ci};
6622851890Sopenharmony_cistruct hdspm_ltc {
6722851890Sopenharmony_ci	unsigned int ltc;
6822851890Sopenharmony_ci	enum hdspm_ltc_format format;
6922851890Sopenharmony_ci	enum hdspm_ltc_frame frame;
7022851890Sopenharmony_ci	enum hdspm_ltc_input_format input_format;
7122851890Sopenharmony_ci};
7222851890Sopenharmony_ci#define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_ltc)
7322851890Sopenharmony_cienum hdspm_sync {
7422851890Sopenharmony_ci	hdspm_sync_no_lock = 0,
7522851890Sopenharmony_ci	hdspm_sync_lock = 1,
7622851890Sopenharmony_ci	hdspm_sync_sync = 2
7722851890Sopenharmony_ci};
7822851890Sopenharmony_cienum hdspm_madi_input {
7922851890Sopenharmony_ci	hdspm_input_optical = 0,
8022851890Sopenharmony_ci	hdspm_input_coax = 1
8122851890Sopenharmony_ci};
8222851890Sopenharmony_cienum hdspm_madi_channel_format {
8322851890Sopenharmony_ci	hdspm_format_ch_64 = 0,
8422851890Sopenharmony_ci	hdspm_format_ch_56 = 1
8522851890Sopenharmony_ci};
8622851890Sopenharmony_cienum hdspm_madi_frame_format {
8722851890Sopenharmony_ci	hdspm_frame_48 = 0,
8822851890Sopenharmony_ci	hdspm_frame_96 = 1
8922851890Sopenharmony_ci};
9022851890Sopenharmony_cienum hdspm_syncsource {
9122851890Sopenharmony_ci	syncsource_wc = 0,
9222851890Sopenharmony_ci	syncsource_madi = 1,
9322851890Sopenharmony_ci	syncsource_tco = 2,
9422851890Sopenharmony_ci	syncsource_sync = 3,
9522851890Sopenharmony_ci	syncsource_none = 4
9622851890Sopenharmony_ci};
9722851890Sopenharmony_cistruct hdspm_status {
9822851890Sopenharmony_ci	__u8 card_type;
9922851890Sopenharmony_ci	enum hdspm_syncsource autosync_source;
10022851890Sopenharmony_ci	__u64 card_clock;
10122851890Sopenharmony_ci	__u32 master_period;
10222851890Sopenharmony_ci	union {
10322851890Sopenharmony_ci		struct {
10422851890Sopenharmony_ci			__u8 sync_wc;
10522851890Sopenharmony_ci			__u8 sync_madi;
10622851890Sopenharmony_ci			__u8 sync_tco;
10722851890Sopenharmony_ci			__u8 sync_in;
10822851890Sopenharmony_ci			__u8 madi_input;
10922851890Sopenharmony_ci			__u8 channel_format;
11022851890Sopenharmony_ci			__u8 frame_format;
11122851890Sopenharmony_ci		} madi;
11222851890Sopenharmony_ci	} card_specific;
11322851890Sopenharmony_ci};
11422851890Sopenharmony_ci#define SNDRV_HDSPM_IOCTL_GET_STATUS \
11522851890Sopenharmony_ci	_IOR('H', 0x47, struct hdspm_status)
11622851890Sopenharmony_ci#define HDSPM_ADDON_TCO 1
11722851890Sopenharmony_cistruct hdspm_version {
11822851890Sopenharmony_ci	__u8 card_type;
11922851890Sopenharmony_ci	char cardname[20];
12022851890Sopenharmony_ci	unsigned int serial;
12122851890Sopenharmony_ci	unsigned short firmware_rev;
12222851890Sopenharmony_ci	int addons;
12322851890Sopenharmony_ci};
12422851890Sopenharmony_ci#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
12522851890Sopenharmony_ci#define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
12622851890Sopenharmony_cistruct hdspm_channelfader {
12722851890Sopenharmony_ci	unsigned int in[HDSPM_MIXER_CHANNELS];
12822851890Sopenharmony_ci	unsigned int pb[HDSPM_MIXER_CHANNELS];
12922851890Sopenharmony_ci};
13022851890Sopenharmony_cistruct hdspm_mixer {
13122851890Sopenharmony_ci	struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
13222851890Sopenharmony_ci};
13322851890Sopenharmony_cistruct hdspm_mixer_ioctl {
13422851890Sopenharmony_ci	struct hdspm_mixer *mixer;
13522851890Sopenharmony_ci};
13622851890Sopenharmony_ci#define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl)
13722851890Sopenharmony_citypedef struct hdspm_peak_rms hdspm_peak_rms_t;
13822851890Sopenharmony_citypedef struct hdspm_config_info hdspm_config_info_t;
13922851890Sopenharmony_citypedef struct hdspm_version hdspm_version_t;
14022851890Sopenharmony_citypedef struct hdspm_channelfader snd_hdspm_channelfader_t;
14122851890Sopenharmony_citypedef struct hdspm_mixer hdspm_mixer_t;
14222851890Sopenharmony_ci#endif
143