aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/omap/omap-abe-dsp.h
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/omap/omap-abe-dsp.h')
-rw-r--r--sound/soc/omap/omap-abe-dsp.h177
1 files changed, 177 insertions, 0 deletions
diff --git a/sound/soc/omap/omap-abe-dsp.h b/sound/soc/omap/omap-abe-dsp.h
new file mode 100644
index 0000000..8462290
--- /dev/null
+++ b/sound/soc/omap/omap-abe-dsp.h
@@ -0,0 +1,177 @@
+/*
+ * omap-abe-dsp.h
+ *
+ * Copyright (C) 2010 Texas Instruments
+ *
+ * Contact: Liam Girdwood <lrg@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#ifndef __OMAP_ABE_DSP_H__
+#define __OMAP_ABE_DSP_H__
+
+#define ABE_MIXER(x) (x)
+
+#define MIX_DL1_TONES ABE_MIXER(0)
+#define MIX_DL1_VOICE ABE_MIXER(1)
+#define MIX_DL1_CAPTURE ABE_MIXER(2)
+#define MIX_DL1_MEDIA ABE_MIXER(3)
+#define MIX_DL2_TONES ABE_MIXER(4)
+#define MIX_DL2_VOICE ABE_MIXER(5)
+#define MIX_DL2_CAPTURE ABE_MIXER(6)
+#define MIX_DL2_MEDIA ABE_MIXER(7)
+#define MIX_AUDUL_TONES ABE_MIXER(8)
+#define MIX_AUDUL_MEDIA ABE_MIXER(9)
+#define MIX_AUDUL_CAPTURE ABE_MIXER(10)
+#define MIX_VXREC_TONES ABE_MIXER(11)
+#define MIX_VXREC_VOICE_PLAYBACK ABE_MIXER(12)
+#define MIX_VXREC_VOICE_CAPTURE ABE_MIXER(13)
+#define MIX_VXREC_MEDIA ABE_MIXER(14)
+#define MIX_SDT_CAPTURE ABE_MIXER(15)
+#define MIX_SDT_PLAYBACK ABE_MIXER(16)
+#define MIX_SWITCH_PDM_DL ABE_MIXER(17)
+#define MIX_SWITCH_BT_VX_DL ABE_MIXER(18)
+#define MIX_SWITCH_MM_EXT_DL ABE_MIXER(19)
+#define MIX_DL1_MONO ABE_MIXER(20)
+#define MIX_DL2_MONO ABE_MIXER(21)
+#define MIX_AUDUL_MONO ABE_MIXER(22)
+
+#define ABE_NUM_MONO_MIXERS (MIX_AUDUL_MONO - MIX_DL1_MONO + 1)
+#define ABE_NUM_MIXERS (MIX_AUDUL_MONO + 1)
+
+#define ABE_MUX(x) (x + ABE_NUM_MIXERS)
+
+#define MUX_MM_UL10 ABE_MUX(0)
+#define MUX_MM_UL11 ABE_MUX(1)
+#define MUX_MM_UL12 ABE_MUX(2)
+#define MUX_MM_UL13 ABE_MUX(3)
+#define MUX_MM_UL14 ABE_MUX(4)
+#define MUX_MM_UL15 ABE_MUX(5)
+#define MUX_MM_UL16 ABE_MUX(6)
+#define MUX_MM_UL17 ABE_MUX(7)
+#define MUX_MM_UL20 ABE_MUX(8)
+#define MUX_MM_UL21 ABE_MUX(9)
+#define MUX_VX_UL0 ABE_MUX(10)
+#define MUX_VX_UL1 ABE_MUX(11)
+
+#define ABE_NUM_MUXES (MUX_VX_UL1 - MUX_MM_UL10)
+
+#define ABE_WIDGET(x) (x + ABE_NUM_MIXERS + ABE_NUM_MUXES)
+
+/* ABE AIF Frontend Widgets */
+#define W_AIF_TONES_DL ABE_WIDGET(0)
+#define W_AIF_VX_DL ABE_WIDGET(1)
+#define W_AIF_VX_UL ABE_WIDGET(2)
+#define W_AIF_MM_UL1 ABE_WIDGET(3)
+#define W_AIF_MM_UL2 ABE_WIDGET(4)
+#define W_AIF_MM_DL ABE_WIDGET(5)
+#define W_AIF_MM_DL_LP W_AIF_MM_DL
+#define W_AIF_VIB_DL ABE_WIDGET(6)
+#define W_AIF_MODEM_DL ABE_WIDGET(7)
+#define W_AIF_MODEM_UL ABE_WIDGET(8)
+
+/* ABE AIF Backend Widgets */
+#define W_AIF_PDM_UL1 ABE_WIDGET(9)
+#define W_AIF_PDM_DL1 ABE_WIDGET(10)
+#define W_AIF_PDM_DL2 ABE_WIDGET(11)
+#define W_AIF_PDM_VIB ABE_WIDGET(12)
+#define W_AIF_BT_VX_UL ABE_WIDGET(13)
+#define W_AIF_BT_VX_DL ABE_WIDGET(14)
+#define W_AIF_MM_EXT_UL ABE_WIDGET(15)
+#define W_AIF_MM_EXT_DL ABE_WIDGET(16)
+#define W_AIF_DMIC0 ABE_WIDGET(17)
+#define W_AIF_DMIC1 ABE_WIDGET(18)
+#define W_AIF_DMIC2 ABE_WIDGET(19)
+
+/* ABE ROUTE_UL MUX Widgets */
+#define W_MUX_UL00 ABE_WIDGET(20)
+#define W_MUX_UL01 ABE_WIDGET(21)
+#define W_MUX_UL02 ABE_WIDGET(22)
+#define W_MUX_UL03 ABE_WIDGET(23)
+#define W_MUX_UL04 ABE_WIDGET(24)
+#define W_MUX_UL05 ABE_WIDGET(25)
+#define W_MUX_UL06 ABE_WIDGET(26)
+#define W_MUX_UL07 ABE_WIDGET(27)
+#define W_MUX_UL10 ABE_WIDGET(28)
+#define W_MUX_UL11 ABE_WIDGET(29)
+#define W_MUX_VX00 ABE_WIDGET(30)
+#define W_MUX_VX01 ABE_WIDGET(31)
+
+/* ABE Volume and Mixer Widgets */
+#define W_MIXER_DL1 ABE_WIDGET(32)
+#define W_MIXER_DL2 ABE_WIDGET(33)
+#define W_VOLUME_DL1 ABE_WIDGET(34)
+#define W_MIXER_AUDIO_UL ABE_WIDGET(35)
+#define W_MIXER_VX_REC ABE_WIDGET(36)
+#define W_MIXER_SDT ABE_WIDGET(37)
+#define W_VSWITCH_DL1_PDM ABE_WIDGET(38)
+#define W_VSWITCH_DL1_BT_VX ABE_WIDGET(39)
+#define W_VSWITCH_DL1_MM_EXT ABE_WIDGET(40)
+
+#define ABE_NUM_WIDGETS (W_VSWITCH_DL1_MM_EXT - W_AIF_TONES_DL)
+#define ABE_WIDGET_LAST W_VSWITCH_DL1_MM_EXT
+
+#define ABE_NUM_DAPM_REG \
+ (ABE_NUM_MIXERS + ABE_NUM_MUXES + ABE_NUM_WIDGETS)
+
+#define ABE_VIRTUAL_SWITCH 0
+#define ABE_ROUTES_UL 14
+
+// TODO: OPP bitmask - Use HAL version after update
+#define ABE_OPP_25 0
+#define ABE_OPP_50 1
+#define ABE_OPP_100 2
+
+/* TODO: size in bytes of debug options */
+#define ABE_DBG_FLAG1_SIZE 0
+#define ABE_DBG_FLAG2_SIZE 0
+#define ABE_DBG_FLAG3_SIZE 0
+
+/* TODO: Pong start offset of DMEM */
+/* Ping pong buffer DMEM offset */
+#define ABE_DMEM_BASE_OFFSET_PING_PONG 0x4000
+
+/* Gain value conversion */
+#define ABE_MAX_GAIN 12000
+#define ABE_GAIN_SCALE 100
+#define abe_gain_to_val(gain) ((val + ABE_MAX_GAIN) / ABE_GAIN_SCALE)
+#define abe_val_to_gain(val) (-ABE_MAX_GAIN + (val * ABE_GAIN_SCALE))
+
+/* Firmware coefficients and equalizers */
+#define ABE_MAX_FW_SIZE (1024 * 128)
+#define ABE_MAX_COEFF_SIZE (1024 * 4)
+#define ABE_COEFF_NAME_SIZE 20
+#define ABE_COEFF_TEXT_SIZE 20
+#define ABE_COEFF_NUM_TEXTS 10
+#define ABE_MAX_EQU 10
+#define ABE_MAX_PROFILES 30
+
+#define OMAP_ABE_OPP25 0
+#define OMAP_ABE_OPP50 1
+#define OMAP_ABE_OPP100 2
+#define OMAP_ABE_OPP_COUNT 3
+
+void abe_dsp_shutdown(void);
+void abe_dsp_pm_get(void);
+void abe_dsp_pm_put(void);
+int abe_add_opp_req(struct device *dev, int opp);
+int abe_remove_opp_req(struct device *dev);
+void abe_dsp_set_power_mode(int mode);
+void abe_dsp_set_hs_offset(int left, int right, int mult);
+void abe_dsp_set_hf_offset(int left, int right);
+
+#endif /* End of __OMAP_ABE_DSP_H__ */