summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/audioout-imx233.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/audioout-imx233.h')
-rw-r--r--firmware/target/arm/imx233/audioout-imx233.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/audioout-imx233.h b/firmware/target/arm/imx233/audioout-imx233.h
index 913e633de0..cd997e7d31 100644
--- a/firmware/target/arm/imx233/audioout-imx233.h
+++ b/firmware/target/arm/imx233/audioout-imx233.h
@@ -23,5 +23,100 @@
23 23
24#include "config.h" 24#include "config.h"
25#include "cpu.h" 25#include "cpu.h"
26#include "system.h"
27
28#define HW_AUDIOOUT_BASE 0x80048000
29
30#define HW_AUDIOOUT_CTRL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x0))
31#define HW_AUDIOOUT_CTRL__RUN (1 << 0)
32#define HW_AUDIOOUT_CTRL__FIFO_ERROR_IRQ_EN (1 << 1)
33#define HW_AUDIOOUT_CTRL__FIFO_OVERFLOW_IRQ (1 << 2)
34#define HW_AUDIOOUT_CTRL__FIFO_UNDERFLOW_IRQ (1 << 3)
35#define HW_AUDIOOUT_CTRL__WORD_LENGTH (1 << 6)
36#define HW_AUDIOOUT_CTRL__SS3D_EFFECT_BP 8
37#define HW_AUDIOOUT_CTRL__SS3D_EFFECT_BM (3 << 8)
38#define HW_AUDIOOUT_CTRL__SS3D_EFFECT_OFF (0 << 8)
39#define HW_AUDIOOUT_CTRL__SS3D_EFFECT_3 (1 << 8)
40#define HW_AUDIOOUT_CTRL__SS3D_EFFECT_4P5 (2 << 8)
41#define HW_AUDIOOUT_CTRL__SS3D_EFFECT_6 (3 << 8)
42#define HW_AUDIOOUT_CTRL__DMAWAIT_COUNT_BP 16
43#define HW_AUDIOOUT_CTRL__DMAWAIT_COUNT_BM (0x1f << 16)
44
45#define HW_AUDIOOUT_DACSRR (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x20))
46#define HW_AUDIOOUT_DACSRR__SRC_FRAC_BP 0
47#define HW_AUDIOOUT_DACSRR__SRC_FRAC_BM (0x1ff << 0)
48#define HW_AUDIOOUT_DACSRR__SRC_INT_BP 16
49#define HW_AUDIOOUT_DACSRR__SRC_INT_BM (0x1f << 16)
50#define HW_AUDIOOUT_DACSRR__SRC_HOLD_BP 24
51#define HW_AUDIOOUT_DACSRR__SRC_HOLD_BM (0x7 << 24)
52#define HW_AUDIOOUT_DACSRR__BASEMULT_BP 28
53#define HW_AUDIOOUT_DACSRR__BASEMULT_BM (0x7 << 28)
54#define HW_AUDIOOUT_DACSRR__OSR (1 << 31)
55
56#define HW_AUDIOOUT_DACVOLUME (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x30))
57#define HW_AUDIOOUT_DACVOLUME__VOLUME_RIGHT_BP 0
58#define HW_AUDIOOUT_DACVOLUME__VOLUME_RIGHT_BM 0xff
59#define HW_AUDIOOUT_DACVOLUME__MUTE_RIGHT (1 << 8)
60#define HW_AUDIOOUT_DACVOLUME__VOLUME_UPDATE_RIGHT (1 << 12)
61#define HW_AUDIOOUT_DACVOLUME__VOLUME_LEFT_BP 16
62#define HW_AUDIOOUT_DACVOLUME__VOLUME_LEFT_BM (0xff << 16)
63#define HW_AUDIOOUT_DACVOLUME__MUTE_LEFT (1 << 24)
64#define HW_AUDIOOUT_DACVOLUME__EN_ZCD (1 << 25)
65#define HW_AUDIOOUT_DACVOLUME__VOLUME_UPDATE_LEFT (1 << 28)
66
67#define HW_AUDIOOUT_DACDEBUG (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x40))
68#define HW_AUDIOOUT_DACDEBUG__FIFO_STATUS 1
69
70
71#define HW_AUDIOOUT_HPVOL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x50))
72#define HW_AUDIOOUT_HPVOL__VOL_RIGHT_BP 0
73#define HW_AUDIOOUT_HPVOL__VOL_RIGHT_BM (0x7f << 0)
74#define HW_AUDIOOUT_HPVOL__VOL_LEFT_BP 8
75#define HW_AUDIOOUT_HPVOL__VOL_LEFT_BM (0x7f << 8)
76#define HW_AUDIOOUT_HPVOL__SELECT (1 << 16)
77#define HW_AUDIOOUT_HPVOL__MUTE (1 << 24)
78#define HW_AUDIOOUT_HPVOL__EN_MSTR_ZCD (1 << 25)
79
80#define HW_AUDIOOUT_PWRDN (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x70))
81#define HW_AUDIOOUT_PWRDN__HEADPHONE (1 << 0)
82#define HW_AUDIOOUT_PWRDN__CAPLESS (1 << 4)
83#define HW_AUDIOOUT_PWRDN__ADC (1 << 8)
84#define HW_AUDIOOUT_PWRDN__DAC (1 << 12)
85#define HW_AUDIOOUT_PWRDN__RIGHT_ADC (1 << 16)
86#define HW_AUDIOOUT_PWRDN__SPEAKER (1 << 24)
87
88#define HW_AUDIOOUT_REFCTRL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x80))
89#define HW_AUDIOOUT_REFCTRL__LOW_PWR (1 << 19)
90
91#define HW_AUDIOOUT_ANACTRL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x90))
92#define HW_AUDIOOUT_ANACTRL__HP_CLASSAB (1 << 4)
93#define HW_AUDIOOUT_ANACTRL__HP_HOLD_GND (1 << 5)
94#define HW_AUDIOOUT_ANACTRL__SHORTMODE_LR_BP 17
95#define HW_AUDIOOUT_ANACTRL__SHORTMODE_LR_BM (3 << 17)
96#define HW_AUDIOOUT_ANACTRL__SHORTMODE_CM_BP 20
97#define HW_AUDIOOUT_ANACTRL__SHORTMODE_CM_BM (3 << 20)
98#define HW_AUDIOOUT_ANACTRL__SHORT_LR_STS (1 << 24)
99#define HW_AUDIOOUT_ANACTRL__SHORT_CM_STS (1 << 28)
100
101#define HW_AUDIOOUT_ANACLKCTRL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0xe0))
102#define HW_AUDIOOUT_ANACLKCTRL__DACDIV_BP 0
103#define HW_AUDIOOUT_ANACLKCTRL__DACDIV_BM (7 << 0)
104#define HW_AUDIOOUT_ANACLKCTRL__CLKGATE (1 << 31)
105
106#define HW_AUDIOOUT_DATA (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0xf0))
107
108#define HW_AUDIOOUT_VERSION (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x200))
109
110
111void imx233_audioout_preinit(void);
112void imx233_audioout_postinit(void);
113void imx233_audioout_close(void);
114/* volume in half dB */
115void imx233_audioout_set_dac_vol(int vol_l, int vol_r);
116void imx233_audioout_set_hp_vol(int vol_l, int vol_r);
117/* frequency index, NOT the frequency itself */
118void imx233_audioout_set_freq(int fsel);
119/* select between DAC and Line1 */
120void imx233_audiout_select_hp_input(bool line1);
26 121
27#endif /* __audioout_imx233__ */ 122#endif /* __audioout_imx233__ */