linux/sound/soc/codecs/da7219-aad.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * da7219-aad.h - DA7322 ASoC AAD Driver
 *
 * Copyright (c) 2015 Dialog Semiconductor Ltd.
 *
 * Author: Adam Thomson <[email protected]>
 */

#ifndef __DA7219_AAD_H
#define __DA7219_AAD_H

#include <linux/timer.h>
#include <linux/mutex.h>
#include <sound/soc.h>
#include <sound/jack.h>
#include <sound/da7219-aad.h>

/*
 * Registers
 */

#define DA7219_ACCDET_STATUS_A
#define DA7219_ACCDET_STATUS_B
#define DA7219_ACCDET_IRQ_EVENT_A
#define DA7219_ACCDET_IRQ_EVENT_B
#define DA7219_ACCDET_IRQ_MASK_A
#define DA7219_ACCDET_IRQ_MASK_B
#define DA7219_ACCDET_CONFIG_1
#define DA7219_ACCDET_CONFIG_2
#define DA7219_ACCDET_CONFIG_3
#define DA7219_ACCDET_CONFIG_4
#define DA7219_ACCDET_CONFIG_5
#define DA7219_ACCDET_CONFIG_6
#define DA7219_ACCDET_CONFIG_7
#define DA7219_ACCDET_CONFIG_8


/*
 * Bit Fields
 */

/* DA7219_ACCDET_STATUS_A = 0xC0 */
#define DA7219_JACK_INSERTION_STS_SHIFT
#define DA7219_JACK_INSERTION_STS_MASK
#define DA7219_JACK_TYPE_STS_SHIFT
#define DA7219_JACK_TYPE_STS_MASK
#define DA7219_JACK_PIN_ORDER_STS_SHIFT
#define DA7219_JACK_PIN_ORDER_STS_MASK
#define DA7219_MICBIAS_UP_STS_SHIFT
#define DA7219_MICBIAS_UP_STS_MASK

/* DA7219_ACCDET_STATUS_B = 0xC1 */
#define DA7219_BUTTON_TYPE_STS_SHIFT
#define DA7219_BUTTON_TYPE_STS_MASK

/* DA7219_ACCDET_IRQ_EVENT_A = 0xC2 */
#define DA7219_E_JACK_INSERTED_SHIFT
#define DA7219_E_JACK_INSERTED_MASK
#define DA7219_E_JACK_REMOVED_SHIFT
#define DA7219_E_JACK_REMOVED_MASK
#define DA7219_E_JACK_DETECT_COMPLETE_SHIFT
#define DA7219_E_JACK_DETECT_COMPLETE_MASK

/* DA7219_ACCDET_IRQ_EVENT_B = 0xC3 */
#define DA7219_E_BUTTON_A_PRESSED_SHIFT
#define DA7219_E_BUTTON_A_PRESSED_MASK
#define DA7219_E_BUTTON_B_PRESSED_SHIFT
#define DA7219_E_BUTTON_B_PRESSED_MASK
#define DA7219_E_BUTTON_C_PRESSED_SHIFT
#define DA7219_E_BUTTON_C_PRESSED_MASK
#define DA7219_E_BUTTON_D_PRESSED_SHIFT
#define DA7219_E_BUTTON_D_PRESSED_MASK
#define DA7219_E_BUTTON_D_RELEASED_SHIFT
#define DA7219_E_BUTTON_D_RELEASED_MASK
#define DA7219_E_BUTTON_C_RELEASED_SHIFT
#define DA7219_E_BUTTON_C_RELEASED_MASK
#define DA7219_E_BUTTON_B_RELEASED_SHIFT
#define DA7219_E_BUTTON_B_RELEASED_MASK
#define DA7219_E_BUTTON_A_RELEASED_SHIFT
#define DA7219_E_BUTTON_A_RELEASED_MASK

/* DA7219_ACCDET_IRQ_MASK_A = 0xC4 */
#define DA7219_M_JACK_INSERTED_SHIFT
#define DA7219_M_JACK_INSERTED_MASK
#define DA7219_M_JACK_REMOVED_SHIFT
#define DA7219_M_JACK_REMOVED_MASK
#define DA7219_M_JACK_DETECT_COMPLETE_SHIFT
#define DA7219_M_JACK_DETECT_COMPLETE_MASK

/* DA7219_ACCDET_IRQ_MASK_B = 0xC5 */
#define DA7219_M_BUTTON_A_PRESSED_SHIFT
#define DA7219_M_BUTTON_A_PRESSED_MASK
#define DA7219_M_BUTTON_B_PRESSED_SHIFT
#define DA7219_M_BUTTON_B_PRESSED_MASK
#define DA7219_M_BUTTON_C_PRESSED_SHIFT
#define DA7219_M_BUTTON_C_PRESSED_MASK
#define DA7219_M_BUTTON_D_PRESSED_SHIFT
#define DA7219_M_BUTTON_D_PRESSED_MASK
#define DA7219_M_BUTTON_D_RELEASED_SHIFT
#define DA7219_M_BUTTON_D_RELEASED_MASK
#define DA7219_M_BUTTON_C_RELEASED_SHIFT
#define DA7219_M_BUTTON_C_RELEASED_MASK
#define DA7219_M_BUTTON_B_RELEASED_SHIFT
#define DA7219_M_BUTTON_B_RELEASED_MASK
#define DA7219_M_BUTTON_A_RELEASED_SHIFT
#define DA7219_M_BUTTON_A_RELEASED_MASK

/* DA7219_ACCDET_CONFIG_1 = 0xC6 */
#define DA7219_ACCDET_EN_SHIFT
#define DA7219_ACCDET_EN_MASK
#define DA7219_BUTTON_CONFIG_SHIFT
#define DA7219_BUTTON_CONFIG_MASK
#define DA7219_MIC_DET_THRESH_SHIFT
#define DA7219_MIC_DET_THRESH_MASK
#define DA7219_JACK_TYPE_DET_EN_SHIFT
#define DA7219_JACK_TYPE_DET_EN_MASK
#define DA7219_PIN_ORDER_DET_EN_SHIFT
#define DA7219_PIN_ORDER_DET_EN_MASK

/* DA7219_ACCDET_CONFIG_2 = 0xC7 */
#define DA7219_ACCDET_PAUSE_SHIFT
#define DA7219_ACCDET_PAUSE_MASK
#define DA7219_JACKDET_DEBOUNCE_SHIFT
#define DA7219_JACKDET_DEBOUNCE_MASK
#define DA7219_JACK_DETECT_RATE_SHIFT
#define DA7219_JACK_DETECT_RATE_MASK
#define DA7219_JACKDET_REM_DEB_SHIFT
#define DA7219_JACKDET_REM_DEB_MASK

/* DA7219_ACCDET_CONFIG_3 = 0xC8 */
#define DA7219_A_D_BUTTON_THRESH_SHIFT
#define DA7219_A_D_BUTTON_THRESH_MASK

/* DA7219_ACCDET_CONFIG_4 = 0xC9 */
#define DA7219_D_B_BUTTON_THRESH_SHIFT
#define DA7219_D_B_BUTTON_THRESH_MASK

/* DA7219_ACCDET_CONFIG_5 = 0xCA */
#define DA7219_B_C_BUTTON_THRESH_SHIFT
#define DA7219_B_C_BUTTON_THRESH_MASK

/* DA7219_ACCDET_CONFIG_6 = 0xCB */
#define DA7219_C_MIC_BUTTON_THRESH_SHIFT
#define DA7219_C_MIC_BUTTON_THRESH_MASK

/* DA7219_ACCDET_CONFIG_7 = 0xCC */
#define DA7219_BUTTON_AVERAGE_SHIFT
#define DA7219_BUTTON_AVERAGE_MASK
#define DA7219_ADC_1_BIT_REPEAT_SHIFT
#define DA7219_ADC_1_BIT_REPEAT_MASK
#define DA7219_PIN_ORDER_FORCE_SHIFT
#define DA7219_PIN_ORDER_FORCE_MASK
#define DA7219_JACK_TYPE_FORCE_SHIFT
#define DA7219_JACK_TYPE_FORCE_MASK

/* DA7219_ACCDET_CONFIG_8 = 0xCD */
#define DA7219_HPTEST_EN_SHIFT
#define DA7219_HPTEST_EN_MASK
#define DA7219_HPTEST_RES_SEL_SHIFT
#define DA7219_HPTEST_RES_SEL_MASK
#define DA7219_HPTEST_RES_SEL_1KOHMS
#define DA7219_HPTEST_COMP_SHIFT
#define DA7219_HPTEST_COMP_MASK


#define DA7219_AAD_MAX_BUTTONS
#define DA7219_AAD_REPORT_ALL_MASK

#define DA7219_AAD_MICBIAS_CHK_DELAY
#define DA7219_AAD_MICBIAS_CHK_RETRIES

#define DA7219_AAD_HPTEST_RAMP_FREQ
#define DA7219_AAD_HPTEST_RAMP_FREQ_INT_OSC
#define DA7219_AAD_HPTEST_PERIOD
#define DA7219_AAD_HPTEST_INT_OSC_PATH_DELAY

enum da7219_aad_event_regs {};

/* Private data */
struct da7219_aad_priv {};

/* AAD control */
void da7219_aad_jack_det(struct snd_soc_component *component, struct snd_soc_jack *jack);

/* Suspend/Resume */
void da7219_aad_suspend(struct snd_soc_component *component);
void da7219_aad_resume(struct snd_soc_component *component);

/* Init/Exit */
int da7219_aad_init(struct snd_soc_component *component);
void da7219_aad_exit(struct snd_soc_component *component);

/* I2C Probe */
int da7219_aad_probe(struct i2c_client *i2c);

#endif /* __DA7219_AAD_H */