162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * u_uac2.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Utility definitions for UAC2 function 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright (c) 2014 Samsung Electronics Co., Ltd. 862306a36Sopenharmony_ci * http://www.samsung.com 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com> 1162306a36Sopenharmony_ci */ 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#ifndef U_UAC2_H 1462306a36Sopenharmony_ci#define U_UAC2_H 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <linux/usb/composite.h> 1762306a36Sopenharmony_ci#include "uac_common.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define UAC2_DEF_PCHMASK 0x3 2062306a36Sopenharmony_ci#define UAC2_DEF_PSRATE 48000 2162306a36Sopenharmony_ci#define UAC2_DEF_PSSIZE 2 2262306a36Sopenharmony_ci#define UAC2_DEF_PHSBINT 0 2362306a36Sopenharmony_ci#define UAC2_DEF_CCHMASK 0x3 2462306a36Sopenharmony_ci#define UAC2_DEF_CSRATE 64000 2562306a36Sopenharmony_ci#define UAC2_DEF_CSSIZE 2 2662306a36Sopenharmony_ci#define UAC2_DEF_CHSBINT 0 2762306a36Sopenharmony_ci#define UAC2_DEF_CSYNC USB_ENDPOINT_SYNC_ASYNC 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#define UAC2_DEF_MUTE_PRESENT 1 3062306a36Sopenharmony_ci#define UAC2_DEF_VOLUME_PRESENT 1 3162306a36Sopenharmony_ci#define UAC2_DEF_MIN_DB (-100*256) /* -100 dB */ 3262306a36Sopenharmony_ci#define UAC2_DEF_MAX_DB 0 /* 0 dB */ 3362306a36Sopenharmony_ci#define UAC2_DEF_RES_DB (1*256) /* 1 dB */ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define UAC2_DEF_REQ_NUM 2 3662306a36Sopenharmony_ci#define UAC2_DEF_INT_REQ_NUM 10 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct f_uac2_opts { 3962306a36Sopenharmony_ci struct usb_function_instance func_inst; 4062306a36Sopenharmony_ci int p_chmask; 4162306a36Sopenharmony_ci int p_srates[UAC_MAX_RATES]; 4262306a36Sopenharmony_ci int p_ssize; 4362306a36Sopenharmony_ci u8 p_hs_bint; 4462306a36Sopenharmony_ci int c_chmask; 4562306a36Sopenharmony_ci int c_srates[UAC_MAX_RATES]; 4662306a36Sopenharmony_ci int c_ssize; 4762306a36Sopenharmony_ci int c_sync; 4862306a36Sopenharmony_ci u8 c_hs_bint; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci bool p_mute_present; 5162306a36Sopenharmony_ci bool p_volume_present; 5262306a36Sopenharmony_ci s16 p_volume_min; 5362306a36Sopenharmony_ci s16 p_volume_max; 5462306a36Sopenharmony_ci s16 p_volume_res; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci bool c_mute_present; 5762306a36Sopenharmony_ci bool c_volume_present; 5862306a36Sopenharmony_ci s16 c_volume_min; 5962306a36Sopenharmony_ci s16 c_volume_max; 6062306a36Sopenharmony_ci s16 c_volume_res; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci int req_number; 6362306a36Sopenharmony_ci int fb_max; 6462306a36Sopenharmony_ci bool bound; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci char function_name[32]; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci struct mutex lock; 6962306a36Sopenharmony_ci int refcnt; 7062306a36Sopenharmony_ci}; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#endif 73