162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * u_uac1.h - Utility definitions for UAC1 function 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2016 Ruslan Bilovol <ruslan.bilovol@gmail.com> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __U_UAC1_H 962306a36Sopenharmony_ci#define __U_UAC1_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/usb/composite.h> 1262306a36Sopenharmony_ci#include "uac_common.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define UAC1_OUT_EP_MAX_PACKET_SIZE 200 1562306a36Sopenharmony_ci#define UAC1_DEF_CCHMASK 0x3 1662306a36Sopenharmony_ci#define UAC1_DEF_CSRATE 48000 1762306a36Sopenharmony_ci#define UAC1_DEF_CSSIZE 2 1862306a36Sopenharmony_ci#define UAC1_DEF_PCHMASK 0x3 1962306a36Sopenharmony_ci#define UAC1_DEF_PSRATE 48000 2062306a36Sopenharmony_ci#define UAC1_DEF_PSSIZE 2 2162306a36Sopenharmony_ci#define UAC1_DEF_REQ_NUM 2 2262306a36Sopenharmony_ci#define UAC1_DEF_INT_REQ_NUM 10 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#define UAC1_DEF_MUTE_PRESENT 1 2562306a36Sopenharmony_ci#define UAC1_DEF_VOLUME_PRESENT 1 2662306a36Sopenharmony_ci#define UAC1_DEF_MIN_DB (-100*256) /* -100 dB */ 2762306a36Sopenharmony_ci#define UAC1_DEF_MAX_DB 0 /* 0 dB */ 2862306a36Sopenharmony_ci#define UAC1_DEF_RES_DB (1*256) /* 1 dB */ 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_cistruct f_uac1_opts { 3262306a36Sopenharmony_ci struct usb_function_instance func_inst; 3362306a36Sopenharmony_ci int c_chmask; 3462306a36Sopenharmony_ci int c_srates[UAC_MAX_RATES]; 3562306a36Sopenharmony_ci int c_ssize; 3662306a36Sopenharmony_ci int p_chmask; 3762306a36Sopenharmony_ci int p_srates[UAC_MAX_RATES]; 3862306a36Sopenharmony_ci int p_ssize; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci bool p_mute_present; 4162306a36Sopenharmony_ci bool p_volume_present; 4262306a36Sopenharmony_ci s16 p_volume_min; 4362306a36Sopenharmony_ci s16 p_volume_max; 4462306a36Sopenharmony_ci s16 p_volume_res; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci bool c_mute_present; 4762306a36Sopenharmony_ci bool c_volume_present; 4862306a36Sopenharmony_ci s16 c_volume_min; 4962306a36Sopenharmony_ci s16 c_volume_max; 5062306a36Sopenharmony_ci s16 c_volume_res; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci int req_number; 5362306a36Sopenharmony_ci unsigned bound:1; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci char function_name[32]; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci struct mutex lock; 5862306a36Sopenharmony_ci int refcnt; 5962306a36Sopenharmony_ci}; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci#endif /* __U_UAC1_H */ 62