/* * Platform data for MAX98506 * * Copyright 2013-2015 Maxim Integrated Products * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * */ #ifndef __SOUND_MAX98506_PDATA_H__ #define __SOUND_MAX98506_PDATA_H__ #include #define MAX98506_I2C_ADDR 0x62 #define MAX98506_I2C_ADDR_S (MAX98506_I2C_ADDR >> 1) /* MAX98506 volume step */ enum volume_step { MAX98506_VSTEP_0 = 0, MAX98506_VSTEP_1, MAX98506_VSTEP_2, MAX98506_VSTEP_3, MAX98506_VSTEP_4, MAX98506_VSTEP_5, MAX98506_VSTEP_6, MAX98506_VSTEP_7, MAX98506_VSTEP_8, MAX98506_VSTEP_9, MAX98506_VSTEP_10, MAX98506_VSTEP_11, MAX98506_VSTEP_12, MAX98506_VSTEP_13, MAX98506_VSTEP_14, MAX98506_VSTEP_15, MAX98506_VSTEP_MAX, }; /* MAX98506 one stop mode */ enum one_stop_mode { MAX98506_OSM_MONO_L = 0, MAX98506_OSM_MONO_R, MAX98506_OSM_RCV_L, MAX98506_OSM_RCV_R, MAX98506_OSM_STEREO, MAX98506_OSM_STEREO_MODE2, MAX98506_OSM_MAX, }; #ifdef CONFIG_SND_SOC_MAXIM_DSM_CAL extern struct class *g_class; #else struct class *g_class; #endif /* CONFIG_SND_SOC_MAXIM_DSM_CAL */ struct max98506_volume_step_info { int length; int vol_step; int adc_thres; unsigned int boost_step[MAX98506_VSTEP_MAX]; bool adc_status; }; struct max98506_pc_active { u32 capture_active; u32 playback_active:1; }; #ifdef CONFIG_SND_SOC_MAXIM_DSM #define MAX98506_PINFO_SZ PARAM_OFFSET_MAX #else #define MAX98506_PINFO_SZ 6 #endif /* CONFIG_SND_SOC_MAXIM_DSM */ struct max98506_pdata { int sysclk; u32 spk_gain; u32 vmon_slot; bool i2c_pull_up; #ifdef USE_MAX98506_IRQ int irq; #endif /* USE_MAX98506_IRQ */ uint32_t pinfo[MAX98506_PINFO_SZ]; const uint32_t *reg_arr; uint32_t reg_arr_len; int sub_reg; int interleave; int osm; uint32_t boostv; uint32_t rev_id; bool nodsm; }; #endif /* __SOUND_MAX98506_PDATA_H__ */