98 lines
2.0 KiB
C
98 lines
2.0 KiB
C
|
/*
|
||
|
* 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 <sound/maxim_dsm.h>
|
||
|
|
||
|
#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__ */
|