1f213f4b5SHaojian Zhuang /* 2f213f4b5SHaojian Zhuang * 88pm860x-codec.h -- 88PM860x ALSA SoC Audio Driver 3f213f4b5SHaojian Zhuang * 4f213f4b5SHaojian Zhuang * Copyright 2010 Marvell International Ltd. 5f213f4b5SHaojian Zhuang * Haojian Zhuang <haojian.zhuang@marvell.com> 6f213f4b5SHaojian Zhuang * 7f213f4b5SHaojian Zhuang * This program is free software; you can redistribute it and/or modify 8f213f4b5SHaojian Zhuang * it under the terms of the GNU General Public License version 2 as 9f213f4b5SHaojian Zhuang * published by the Free Software Foundation. 10f213f4b5SHaojian Zhuang */ 11f213f4b5SHaojian Zhuang 12f213f4b5SHaojian Zhuang #ifndef __88PM860X_H 13f213f4b5SHaojian Zhuang #define __88PM860X_H 14f213f4b5SHaojian Zhuang 15f213f4b5SHaojian Zhuang /* The offset of these registers are 0xb0 */ 16f213f4b5SHaojian Zhuang #define PM860X_PCM_IFACE_1 0x00 17f213f4b5SHaojian Zhuang #define PM860X_PCM_IFACE_2 0x01 18f213f4b5SHaojian Zhuang #define PM860X_PCM_IFACE_3 0x02 19f213f4b5SHaojian Zhuang #define PM860X_PCM_RATE 0x03 20f213f4b5SHaojian Zhuang #define PM860X_EC_PATH 0x04 21f213f4b5SHaojian Zhuang #define PM860X_SIDETONE_L_GAIN 0x05 22f213f4b5SHaojian Zhuang #define PM860X_SIDETONE_R_GAIN 0x06 23f213f4b5SHaojian Zhuang #define PM860X_SIDETONE_SHIFT 0x07 24f213f4b5SHaojian Zhuang #define PM860X_ADC_OFFSET_1 0x08 25f213f4b5SHaojian Zhuang #define PM860X_ADC_OFFSET_2 0x09 26f213f4b5SHaojian Zhuang #define PM860X_DMIC_DELAY 0x0a 27f213f4b5SHaojian Zhuang 28f213f4b5SHaojian Zhuang #define PM860X_I2S_IFACE_1 0x0b 29f213f4b5SHaojian Zhuang #define PM860X_I2S_IFACE_2 0x0c 30f213f4b5SHaojian Zhuang #define PM860X_I2S_IFACE_3 0x0d 31f213f4b5SHaojian Zhuang #define PM860X_I2S_IFACE_4 0x0e 32f213f4b5SHaojian Zhuang #define PM860X_EQUALIZER_N0_1 0x0f 33f213f4b5SHaojian Zhuang #define PM860X_EQUALIZER_N0_2 0x10 34f213f4b5SHaojian Zhuang #define PM860X_EQUALIZER_N1_1 0x11 35f213f4b5SHaojian Zhuang #define PM860X_EQUALIZER_N1_2 0x12 36f213f4b5SHaojian Zhuang #define PM860X_EQUALIZER_D1_1 0x13 37f213f4b5SHaojian Zhuang #define PM860X_EQUALIZER_D1_2 0x14 38f213f4b5SHaojian Zhuang #define PM860X_LOFI_GAIN_LEFT 0x15 39f213f4b5SHaojian Zhuang #define PM860X_LOFI_GAIN_RIGHT 0x16 40f213f4b5SHaojian Zhuang #define PM860X_HIFIL_GAIN_LEFT 0x17 41f213f4b5SHaojian Zhuang #define PM860X_HIFIL_GAIN_RIGHT 0x18 42f213f4b5SHaojian Zhuang #define PM860X_HIFIR_GAIN_LEFT 0x19 43f213f4b5SHaojian Zhuang #define PM860X_HIFIR_GAIN_RIGHT 0x1a 44f213f4b5SHaojian Zhuang #define PM860X_DAC_OFFSET 0x1b 45f213f4b5SHaojian Zhuang #define PM860X_OFFSET_LEFT_1 0x1c 46f213f4b5SHaojian Zhuang #define PM860X_OFFSET_LEFT_2 0x1d 47f213f4b5SHaojian Zhuang #define PM860X_OFFSET_RIGHT_1 0x1e 48f213f4b5SHaojian Zhuang #define PM860X_OFFSET_RIGHT_2 0x1f 49f213f4b5SHaojian Zhuang #define PM860X_ADC_ANA_1 0x20 50f213f4b5SHaojian Zhuang #define PM860X_ADC_ANA_2 0x21 51f213f4b5SHaojian Zhuang #define PM860X_ADC_ANA_3 0x22 52f213f4b5SHaojian Zhuang #define PM860X_ADC_ANA_4 0x23 53f213f4b5SHaojian Zhuang #define PM860X_ANA_TO_ANA 0x24 54f213f4b5SHaojian Zhuang #define PM860X_HS1_CTRL 0x25 55f213f4b5SHaojian Zhuang #define PM860X_HS2_CTRL 0x26 56f213f4b5SHaojian Zhuang #define PM860X_LO1_CTRL 0x27 57f213f4b5SHaojian Zhuang #define PM860X_LO2_CTRL 0x28 58f213f4b5SHaojian Zhuang #define PM860X_EAR_CTRL_1 0x29 59f213f4b5SHaojian Zhuang #define PM860X_EAR_CTRL_2 0x2a 60f213f4b5SHaojian Zhuang #define PM860X_AUDIO_SUPPLIES_1 0x2b 61f213f4b5SHaojian Zhuang #define PM860X_AUDIO_SUPPLIES_2 0x2c 62f213f4b5SHaojian Zhuang #define PM860X_ADC_EN_1 0x2d 63f213f4b5SHaojian Zhuang #define PM860X_ADC_EN_2 0x2e 64f213f4b5SHaojian Zhuang #define PM860X_DAC_EN_1 0x2f 65f213f4b5SHaojian Zhuang #define PM860X_DAC_EN_2 0x31 66f213f4b5SHaojian Zhuang #define PM860X_AUDIO_CAL_1 0x32 67f213f4b5SHaojian Zhuang #define PM860X_AUDIO_CAL_2 0x33 68f213f4b5SHaojian Zhuang #define PM860X_AUDIO_CAL_3 0x34 69f213f4b5SHaojian Zhuang #define PM860X_AUDIO_CAL_4 0x35 70f213f4b5SHaojian Zhuang #define PM860X_AUDIO_CAL_5 0x36 71f213f4b5SHaojian Zhuang #define PM860X_ANA_INPUT_SEL_1 0x37 72f213f4b5SHaojian Zhuang #define PM860X_ANA_INPUT_SEL_2 0x38 73f213f4b5SHaojian Zhuang 74f213f4b5SHaojian Zhuang #define PM860X_PCM_IFACE_4 0x39 75f213f4b5SHaojian Zhuang #define PM860X_I2S_IFACE_5 0x3a 76f213f4b5SHaojian Zhuang 77f213f4b5SHaojian Zhuang #define PM860X_SHORTS 0x3b 78f213f4b5SHaojian Zhuang #define PM860X_PLL_ADJ_1 0x3c 79f213f4b5SHaojian Zhuang #define PM860X_PLL_ADJ_2 0x3d 80f213f4b5SHaojian Zhuang 81f213f4b5SHaojian Zhuang /* bits definition */ 82f213f4b5SHaojian Zhuang #define PM860X_CLK_DIR_IN 0 83f213f4b5SHaojian Zhuang #define PM860X_CLK_DIR_OUT 1 84f213f4b5SHaojian Zhuang 85f213f4b5SHaojian Zhuang #define PM860X_DET_HEADSET (1 << 0) 86f213f4b5SHaojian Zhuang #define PM860X_DET_MIC (1 << 1) 87f213f4b5SHaojian Zhuang #define PM860X_DET_HOOK (1 << 2) 88f213f4b5SHaojian Zhuang #define PM860X_SHORT_HEADSET (1 << 3) 89f213f4b5SHaojian Zhuang #define PM860X_SHORT_LINEOUT (1 << 4) 90f213f4b5SHaojian Zhuang #define PM860X_DET_MASK 0x1F 91f213f4b5SHaojian Zhuang 92f213f4b5SHaojian Zhuang extern int pm860x_hs_jack_detect(struct snd_soc_codec *, struct snd_soc_jack *, 93f213f4b5SHaojian Zhuang int, int, int, int); 94f213f4b5SHaojian Zhuang extern int pm860x_mic_jack_detect(struct snd_soc_codec *, struct snd_soc_jack *, 95f213f4b5SHaojian Zhuang int); 96f213f4b5SHaojian Zhuang 97f213f4b5SHaojian Zhuang #endif /* __88PM860X_H */ 98