162fc25fbSWeidong Wang // SPDX-License-Identifier: GPL-2.0-only 262fc25fbSWeidong Wang // 362fc25fbSWeidong Wang // aw88395.h -- ALSA SoC AW88395 codec support 462fc25fbSWeidong Wang // 562fc25fbSWeidong Wang // Copyright (c) 2022-2023 AWINIC Technology CO., LTD 662fc25fbSWeidong Wang // 762fc25fbSWeidong Wang // Author: Bruce zhao <zhaolei@awinic.com> 862fc25fbSWeidong Wang // 962fc25fbSWeidong Wang 1062fc25fbSWeidong Wang #ifndef __AW88395_H__ 1162fc25fbSWeidong Wang #define __AW88395_H__ 1262fc25fbSWeidong Wang 1362fc25fbSWeidong Wang #define AW88395_CHIP_ID_REG (0x00) 1462fc25fbSWeidong Wang #define AW88395_START_RETRIES (5) 1562fc25fbSWeidong Wang #define AW88395_START_WORK_DELAY_MS (0) 1662fc25fbSWeidong Wang 1762fc25fbSWeidong Wang #define AW88395_DSP_16_DATA_MASK (0x0000ffff) 1862fc25fbSWeidong Wang 19*6a4c3ce3SWeidong Wang #define AW88395_I2C_NAME "aw88395" 2062fc25fbSWeidong Wang 2162fc25fbSWeidong Wang #define AW88395_RATES (SNDRV_PCM_RATE_8000_48000 | \ 2262fc25fbSWeidong Wang SNDRV_PCM_RATE_96000) 2362fc25fbSWeidong Wang #define AW88395_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ 2462fc25fbSWeidong Wang SNDRV_PCM_FMTBIT_S24_LE | \ 2562fc25fbSWeidong Wang SNDRV_PCM_FMTBIT_S32_LE) 2662fc25fbSWeidong Wang 2762fc25fbSWeidong Wang #define FADE_TIME_MAX 100000 2862fc25fbSWeidong Wang #define FADE_TIME_MIN 0 2962fc25fbSWeidong Wang 3062fc25fbSWeidong Wang #define AW88395_PROFILE_EXT(xname, profile_info, profile_get, profile_set) \ 3162fc25fbSWeidong Wang { \ 3262fc25fbSWeidong Wang .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \ 3362fc25fbSWeidong Wang .name = xname, \ 3462fc25fbSWeidong Wang .info = profile_info, \ 3562fc25fbSWeidong Wang .get = profile_get, \ 3662fc25fbSWeidong Wang .put = profile_set, \ 3762fc25fbSWeidong Wang } 3862fc25fbSWeidong Wang 3962fc25fbSWeidong Wang enum { 4062fc25fbSWeidong Wang AW88395_SYNC_START = 0, 4162fc25fbSWeidong Wang AW88395_ASYNC_START, 4262fc25fbSWeidong Wang }; 4362fc25fbSWeidong Wang 4462fc25fbSWeidong Wang enum { 4562fc25fbSWeidong Wang AW88395_STREAM_CLOSE = 0, 4662fc25fbSWeidong Wang AW88395_STREAM_OPEN, 4762fc25fbSWeidong Wang }; 4862fc25fbSWeidong Wang 4962fc25fbSWeidong Wang struct aw88395 { 5062fc25fbSWeidong Wang struct aw_device *aw_pa; 5162fc25fbSWeidong Wang struct mutex lock; 5262fc25fbSWeidong Wang struct gpio_desc *reset_gpio; 5362fc25fbSWeidong Wang struct delayed_work start_work; 5462fc25fbSWeidong Wang struct regmap *regmap; 5562fc25fbSWeidong Wang struct aw_container *aw_cfg; 5662fc25fbSWeidong Wang }; 5762fc25fbSWeidong Wang 5862fc25fbSWeidong Wang #endif 59