1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2018-11-14 ZeroFree first implementation 9 * 2019-07-28 Ernest perfect player, add record and other APIs 10 */ 11 12 #ifndef __DRV_WM8978_H__ 13 #define __DRV_WM8978_H__ 14 15 #include <rtthread.h> 16 #include <rtdevice.h> 17 18 enum data_fomat_select 19 { 20 RIGHT_FOMAT_SELECT, 21 LEFT_FOMAT_SELECT, 22 I2S_FOMAT_SELECT, 23 PCM_FOMAT_SELECT, 24 }; 25 26 rt_err_t wm8978_init(struct rt_i2c_bus_device *dev); 27 void wm8978_player_start(struct rt_i2c_bus_device *dev); 28 void wm8978_record_start(struct rt_i2c_bus_device *dev); 29 30 int wm8978_set_volume(struct rt_i2c_bus_device *dev, int vol); 31 32 void wm8978_reset(struct rt_i2c_bus_device *dev); 33 /* enable ADC/DAC */ 34 void wm8978_ADC_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool); 35 void wm8978_DAC_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool); 36 37 void wm8978_mic_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool); 38 void wm8978_linein_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool); 39 void wm8978_aux_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool); 40 void wm8978_linein_gain(struct rt_i2c_bus_device *dev, rt_uint8_t value); 41 void wm8978_aux_gain(struct rt_i2c_bus_device *dev, rt_uint8_t value); 42 void wm8978_mic_gain(struct rt_i2c_bus_device *dev, rt_uint8_t gain); 43 void wm8978_output_set(struct rt_i2c_bus_device *dev, rt_bool_t dac, rt_bool_t bypass); 44 void wm8978_hpvol_set(struct rt_i2c_bus_device *dev, rt_uint8_t volume); 45 void wm8978_spkvol_set(struct rt_i2c_bus_device *dev, rt_uint8_t volume); 46 47 /* set interface mode */ 48 void wm8978_interface_cfg(struct rt_i2c_bus_device *dev, enum data_fomat_select fmt, rt_uint32_t bitBand); 49 50 void wm8978_mute_enabled(struct rt_i2c_bus_device *dev, rt_bool_t enable); 51 rt_err_t wm8978_set_EQ1(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain); 52 rt_err_t wm8978_set_EQ2(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain); 53 rt_err_t wm8978_set_EQ3(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain); 54 rt_err_t wm8978_set_EQ4(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain); 55 rt_err_t wm8978_set_EQ5(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain); 56 void wm8978_3D_Set(struct rt_i2c_bus_device *dev, rt_uint8_t depth); 57 58 #endif 59