summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/imx233/audioin-imx233.h83
-rw-r--r--firmware/target/arm/imx233/pcm-imx233.c3
2 files changed, 84 insertions, 2 deletions
diff --git a/firmware/target/arm/imx233/audioin-imx233.h b/firmware/target/arm/imx233/audioin-imx233.h
index c13f7cef56..4875c8da45 100644
--- a/firmware/target/arm/imx233/audioin-imx233.h
+++ b/firmware/target/arm/imx233/audioin-imx233.h
@@ -24,6 +24,89 @@
24#include "config.h" 24#include "config.h"
25#include "cpu.h" 25#include "cpu.h"
26 26
27#define HW_AUDIOIN_BASE 0x8004c000
28
29#define HW_AUDIOIN_CTRL (*(volatile uint32_t *)(HW_AUDIOIN_BASE + 0x0))
30#define HW_AUDIOIN_CTRL__RUN (1 << 0)
31#define HW_AUDIOIN_CTRL__FIFO_ERROR_IRQ_EN (1 << 1)
32#define HW_AUDIOIN_CTRL__FIFO_OVERFLOW_IRQ (1 << 2)
33#define HW_AUDIOIN_CTRL__FIFO_UNDERFLOW_IRQ (1 << 3)
34#define HW_AUDIOIN_CTRL__LOOPBACK (1 << 4)
35#define HW_AUDIOIN_CTRL__WORD_LENGTH (1 << 5)
36#define HW_AUDIOIN_CTRL__HPF_ENABLE (1 << 6)
37#define HW_AUDIOIN_CTRL__OFFSET_ENABLE (1 << 7)
38#define HW_AUDIOIN_CTRL__INVERT_1BIT (1 << 8)
39#define HW_AUDIOIN_CTRL__EDGE_SYNC (1 << 9)
40#define HW_AUDIOIN_CTRL__LR_SWAP (1 << 10)
41#define HW_AUDIOIN_CTRL__DMAWAIT_COUNT_BP 16
42#define HW_AUDIOIN_CTRL__DMAWAIT_COUNT_BM (0x1f << 16)
43
44#define HW_AUDIOIN_STAT (*(volatile uint32_t *)(HW_AUDIOIN_BASE + 0x10))
45
46#define HW_AUDIOIN_ADCSRR (*(volatile uint32_t *)(HW_AUDIOIN_BASE + 0x20))
47#define HW_AUDIOIN_ADCSRR__SRC_FRAC_BP 0
48#define HW_AUDIOIN_ADCSRR__SRC_FRAC_BM (0x1ff << 0)
49#define HW_AUDIOIN_ADCSRR__SRC_INT_BP 16
50#define HW_AUDIOIN_ADCSRR__SRC_INT_BM (0x1f << 16)
51#define HW_AUDIOIN_ADCSRR__SRC_HOLD_BP 24
52#define HW_AUDIOIN_ADCSRR__SRC_HOLD_BM (0x7 << 24)
53#define HW_AUDIOIN_ADCSRR__BASEMULT_BP 28
54#define HW_AUDIOIN_ADCSRR__BASEMULT_BM (0x7 << 28)
55#define HW_AUDIOIN_ADCSRR__OSR (1 << 31)
56
57/* MUTE_LEFT and MUTE_RIGHT are not documented but present */
58#define HW_AUDIOIN_ADCVOLUME (*(volatile uint32_t *)(HW_AUDIOIN_BASE + 0x30))
59#define HW_AUDIOIN_ADCVOLUME__VOLUME_RIGHT_BP 0
60#define HW_AUDIOIN_ADCVOLUME__VOLUME_RIGHT_BM 0xff
61#define HW_AUDIOIN_ADCVOLUME__MUTE_RIGHT (1 << 8)
62#define HW_AUDIOIN_ADCVOLUME__VOLUME_UPDATE_RIGHT (1 << 12)
63#define HW_AUDIOIN_ADCVOLUME__VOLUME_LEFT_BP 16
64#define HW_AUDIOIN_ADCVOLUME__VOLUME_LEFT_BM (0xff << 16)
65#define HW_AUDIOIN_ADCVOLUME__MUTE_LEFT (1 << 24)
66#define HW_AUDIOIN_ADCVOLUME__EN_ZCD (1 << 25)
67#define HW_AUDIOIN_ADCVOLUME__VOLUME_UPDATE_LEFT (1 << 28)
68
69#define HW_AUDIOIN_ADCDEBUG (*(volatile uint32_t *)(HW_AUDIOIN_BASE + 0x40))
70#define HW_AUDIOIN_ADCDEBUG__FIFO_STATUS 1
71
72#define HW_AUDIOIN_ADCVOL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x50))
73#define HW_AUDIOIN_ADCVOL__GAIN_RIGHT_BP 0
74#define HW_AUDIOIN_ADCVOL__GAIN_RIGHT_BM (0xf << 0)
75#define HW_AUDIOIN_ADCVOL__SELECT_RIGHT_BP 4
76#define HW_AUDIOIN_ADCVOL__SELECT_RIGHT_BM (0x3 << 4)
77#define HW_AUDIOIN_ADCVOL__GAIN_LEFT_BP 8
78#define HW_AUDIOIN_ADCVOL__GAIN_LEFT_BM (0xf << 8)
79#define HW_AUDIOIN_ADCVOL__SELECT_LEFT_BP 12
80#define HW_AUDIOIN_ADCVOL__SELECT_LEFT_BM (0x3 << 12)
81#define HW_AUDIOIN_ADCVOL__MUTE (1 << 24)
82#define HW_AUDIOIN_ADCVOL__EN_ADC_ZCD (1 << 25)
83#define HW_AUDIOIN_ADCVOL__VOLUME_UPDATE_PENDING (1 << 28)
84
85#define HW_AUDIOIN_MICLINE (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x60))
86#define HW_AUDIOIN_MICLINE__MIC_GAIN_BP 0
87#define HW_AUDIOIN_MICLINE__MIC_GAIN_BM 0x3
88#define HW_AUDIOIN_MICLINE__MIC_CHOPCLK_BP 4
89#define HW_AUDIOIN_MICLINE__MIC_CHOPCLK_BM (0x3 << 4)
90#define HW_AUDIOIN_MICLINE__MIC_BIAIS_BP 16
91#define HW_AUDIOIN_MICLINE__MIC_BIAIS_BM (0x3 << 16)
92#define HW_AUDIOIN_MICLINE__MIC_RESISTOR_BP 20
93#define HW_AUDIOIN_MICLINE__MIC_RESISTOR_BM (0x3 << 20)
94#define HW_AUDIOIN_MICLINE__MIC_SELECT (1 << 24)
95#define HW_AUDIOIN_MICLINE__DIVIDE_LINE2 (1 << 28)
96#define HW_AUDIOIN_MICLINE__DIVIDE_LINE1 (1 << 29)
97
98#define HW_AUDIOIN_ANACLKCTRL (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x70))
99#define HW_AUDIOIN_ANACLKCTRL__ADCDIV_BP 0
100#define HW_AUDIOIN_ANACLKCTRL__ADCDIV_BM (0x7 << 0)
101#define HW_AUDIOIN_ANACLKCTRL__ADCCLK_SHIFT_BP 4
102#define HW_AUDIOIN_ANACLKCTRL__ADCCLK_SHIFT_BM (0x3 << 4)
103#define HW_AUDIOIN_ANACLKCTRL__INVERT_ADCCLK (1 << 8)
104#define HW_AUDIOIN_ANACLKCTRL__SLOW_DITHER (1 << 9)
105#define HW_AUDIOIN_ANACLKCTRL__DITHER_OFF (1 << 10)
106#define HW_AUDIOIN_ANACLKCTRL__CLKGATE (1 << 31)
107
108#define HW_AUDIOIN_DATA (*(volatile uint32_t *)(HW_AUDIOOUT_BASE + 0x80))
109
27void imx233_audioin_preinit(void); 110void imx233_audioin_preinit(void);
28void imx233_audioin_postinit(void); 111void imx233_audioin_postinit(void);
29void imx233_audioin_close(void); 112void imx233_audioin_close(void);
diff --git a/firmware/target/arm/imx233/pcm-imx233.c b/firmware/target/arm/imx233/pcm-imx233.c
index fa13f9979e..787c828f21 100644
--- a/firmware/target/arm/imx233/pcm-imx233.c
+++ b/firmware/target/arm/imx233/pcm-imx233.c
@@ -81,7 +81,6 @@ void pcm_play_unlock(void)
81 81
82void pcm_play_dma_stop(void) 82void pcm_play_dma_stop(void)
83{ 83{
84
85} 84}
86 85
87void pcm_play_dma_start(const void *addr, size_t size) 86void pcm_play_dma_start(const void *addr, size_t size)
@@ -164,7 +163,7 @@ void pcm_rec_dma_stop(void)
164{ 163{
165} 164}
166 165
167const void * pcm_rec_dma_get_peak_buffer(void) 166const void *pcm_rec_dma_get_peak_buffer(void)
168{ 167{
169 return NULL; 168 return NULL;
170} 169}