diff options
Diffstat (limited to 'firmware/target')
3 files changed, 35 insertions, 33 deletions
diff --git a/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c b/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c index b32a32a3a3..c53da728ff 100644 --- a/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c +++ b/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c | |||
@@ -27,20 +27,22 @@ | |||
27 | #include "gpio-x1000.h" | 27 | #include "gpio-x1000.h" |
28 | #include "logf.h" | 28 | #include "logf.h" |
29 | 29 | ||
30 | /* Audio path appears to be: | 30 | /* |
31 | * DAC --> HP Amp --> Stereo Switch --> HP OUT | 31 | * Earlier devices audio path appears to be: |
32 | * \--> LO OUT | 32 | * DAC \--> HP Amp --> Stereo Switch --> HP OUT |
33 | * \-> LO OUT | ||
33 | * | 34 | * |
34 | * The real purpose of the Stereo Switch is not clear. | 35 | * Recent devices, the audio path seems to have changed to: |
35 | * It appears to switch sources between the HP amp and something, | 36 | * DAC --> HP Amp --> Stereo Switch \--> HP OUT |
36 | * likely something unimplemented. */ | 37 | * \-> LO OUT |
38 | */ | ||
37 | 39 | ||
38 | void audiohw_init(void) | 40 | void audiohw_init(void) |
39 | { | 41 | { |
40 | /* explicitly mute everything */ | 42 | /* explicitly mute everything */ |
41 | gpio_set_level(GPIO_MAX97220_SHDN, 0); | 43 | gpio_set_level(GPIO_HPAMP_SHDN, 0); |
42 | gpio_set_level(GPIO_ISL54405_MUTE, 1); | 44 | gpio_set_level(GPIO_STEREOSW_MUTE, 1); |
43 | gpio_set_level(GPIO_PCM5102A_XMIT, 0); | 45 | gpio_set_level(GPIO_DAC_XMIT, 0); |
44 | 46 | ||
45 | aic_set_play_last_sample(true); | 47 | aic_set_play_last_sample(true); |
46 | aic_set_external_codec(true); | 48 | aic_set_external_codec(true); |
@@ -53,8 +55,8 @@ void audiohw_init(void) | |||
53 | mdelay(10); | 55 | mdelay(10); |
54 | 56 | ||
55 | /* power on DAC and HP Amp */ | 57 | /* power on DAC and HP Amp */ |
56 | gpio_set_level(GPIO_PCM5102A_ANALOG_PWR, 1); | 58 | gpio_set_level(GPIO_DAC_ANALOG_PWR, 1); |
57 | gpio_set_level(GPIO_MAX97220_POWER, 1); | 59 | gpio_set_level(GPIO_HPAMP_POWER, 1); |
58 | } | 60 | } |
59 | 61 | ||
60 | void audiohw_postinit(void) | 62 | void audiohw_postinit(void) |
@@ -76,23 +78,23 @@ void audiohw_postinit(void) | |||
76 | jz_writef(AIC_CCR, ERPL(0)); | 78 | jz_writef(AIC_CCR, ERPL(0)); |
77 | 79 | ||
78 | /* unmute - attempt to make power-on pop-free */ | 80 | /* unmute - attempt to make power-on pop-free */ |
79 | gpio_set_level(GPIO_ISL54405_SEL, 0); | 81 | gpio_set_level(GPIO_STEREOSW_SEL, 0); |
80 | gpio_set_level(GPIO_MAX97220_SHDN, 1); | 82 | gpio_set_level(GPIO_HPAMP_SHDN, 1); |
81 | mdelay(10); | 83 | mdelay(10); |
82 | gpio_set_level(GPIO_PCM5102A_XMIT, 1); | 84 | gpio_set_level(GPIO_DAC_XMIT, 1); |
83 | mdelay(10); | 85 | mdelay(10); |
84 | gpio_set_level(GPIO_ISL54405_MUTE, 0); | 86 | gpio_set_level(GPIO_STEREOSW_MUTE, 0); |
85 | } | 87 | } |
86 | 88 | ||
87 | /* TODO: get shutdown just right according to dac datasheet */ | 89 | /* TODO: get shutdown just right according to dac datasheet */ |
88 | void audiohw_close(void) | 90 | void audiohw_close(void) |
89 | { | 91 | { |
90 | /* mute - attempt to make power-off pop-free */ | 92 | /* mute - attempt to make power-off pop-free */ |
91 | gpio_set_level(GPIO_ISL54405_MUTE, 1); | 93 | gpio_set_level(GPIO_STEREOSW_MUTE, 1); |
92 | mdelay(10); | 94 | mdelay(10); |
93 | gpio_set_level(GPIO_PCM5102A_XMIT, 0); | 95 | gpio_set_level(GPIO_DAC_XMIT, 0); |
94 | mdelay(10); | 96 | mdelay(10); |
95 | gpio_set_level(GPIO_MAX97220_SHDN, 0); | 97 | gpio_set_level(GPIO_HPAMP_SHDN, 0); |
96 | } | 98 | } |
97 | 99 | ||
98 | void audiohw_set_frequency(int fsel) | 100 | void audiohw_set_frequency(int fsel) |
diff --git a/firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c b/firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c index 6c50021ce1..d82cb5b5dc 100644 --- a/firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c +++ b/firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c | |||
@@ -127,7 +127,7 @@ bool headphones_inserted(void) | |||
127 | { | 127 | { |
128 | hp_detect_reg_old = hp_detect_reg; | 128 | hp_detect_reg_old = hp_detect_reg; |
129 | #if !defined(BOOTLOADER) | 129 | #if !defined(BOOTLOADER) |
130 | pcm5102_set_outputs(); | 130 | dac_set_outputs(); |
131 | #endif | 131 | #endif |
132 | } | 132 | } |
133 | return hp_detect_reg & 0x10 ? false : true; | 133 | return hp_detect_reg & 0x10 ? false : true; |
@@ -140,7 +140,7 @@ bool lineout_inserted(void) | |||
140 | { | 140 | { |
141 | hp_detect_reg_old = hp_detect_reg; | 141 | hp_detect_reg_old = hp_detect_reg; |
142 | #if !defined(BOOTLOADER) | 142 | #if !defined(BOOTLOADER) |
143 | pcm5102_set_outputs(); | 143 | dac_set_outputs(); |
144 | #endif | 144 | #endif |
145 | } | 145 | } |
146 | return hp_detect_reg & 0x20 ? false : true; | 146 | return hp_detect_reg & 0x20 ? false : true; |
diff --git a/firmware/target/mips/ingenic_x1000/erosqnative/gpio-target.h b/firmware/target/mips/ingenic_x1000/erosqnative/gpio-target.h index 376eae136e..3318a39786 100644 --- a/firmware/target/mips/ingenic_x1000/erosqnative/gpio-target.h +++ b/firmware/target/mips/ingenic_x1000/erosqnative/gpio-target.h | |||
@@ -24,26 +24,26 @@ DEFINE_PINGROUP(I2S, GPIO_B, 0x1f << 0, GPIOF_DEVICE(1)) | |||
24 | DEFINE_PINGROUP(I2C2, GPIO_D, 3 << 0, GPIOF_DEVICE(1)) | 24 | DEFINE_PINGROUP(I2C2, GPIO_D, 3 << 0, GPIOF_DEVICE(1)) |
25 | 25 | ||
26 | /* Name Pin Function */ | 26 | /* Name Pin Function */ |
27 | /* mute DAC - 0 - mute, 1 - play. Affects both HP and LO. */ | 27 | /* mute DAC: 0 - mute, 1 - play */ |
28 | DEFINE_GPIO(PCM5102A_XMIT, GPIO_PB(12), GPIOF_OUTPUT(0)) | 28 | DEFINE_GPIO(DAC_XMIT, GPIO_PB(12), GPIOF_OUTPUT(0)) |
29 | 29 | ||
30 | /* mute HP amp, no effect on LO. 0 - mute, 1 - play */ | 30 | /* mute HP amp: 0 - mute, 1 - play */ |
31 | DEFINE_GPIO(MAX97220_SHDN, GPIO_PB(8), GPIOF_OUTPUT(0)) | 31 | DEFINE_GPIO(HPAMP_SHDN, GPIO_PB(8), GPIOF_OUTPUT(0)) |
32 | 32 | ||
33 | /* mute audio mux, only affects Headphone out. | 33 | /* mute audio mux: 0 - play, 1 - mute */ |
34 | * 0 - play, 1 - mute */ | 34 | DEFINE_GPIO(STEREOSW_MUTE, GPIO_PB(15), GPIOF_OUTPUT(1)) |
35 | DEFINE_GPIO(ISL54405_MUTE, GPIO_PB(15), GPIOF_OUTPUT(1)) | ||
36 | 35 | ||
37 | /* switches HP on/off - 0 HP on, 1 hp off, has no effect on LO. | 36 | /* |
38 | * As best I can tell, it switches HP Out sources between HP amp and something | 37 | * Original devices: switches HP on/off - 0 HP on, 1 HP off, no effect on LO. |
39 | * not implemented - there seem to be resistors missing. */ | 38 | * Newer devices: switches between HP and LO - 0 HP, 1 LO. |
40 | DEFINE_GPIO(ISL54405_SEL, GPIO_PB(5), GPIOF_OUTPUT(0)) | 39 | */ |
40 | DEFINE_GPIO(STEREOSW_SEL, GPIO_PB(5), GPIOF_OUTPUT(0)) | ||
41 | 41 | ||
42 | /* DAC AVDD */ | 42 | /* DAC AVDD */ |
43 | DEFINE_GPIO(PCM5102A_ANALOG_PWR, GPIO_PB(9), GPIOF_OUTPUT(0)) | 43 | DEFINE_GPIO(DAC_ANALOG_PWR, GPIO_PB(9), GPIOF_OUTPUT(0)) |
44 | 44 | ||
45 | /* Headphone Amp power */ | 45 | /* Headphone Amp power */ |
46 | DEFINE_GPIO(MAX97220_POWER, GPIO_PB(6), GPIOF_OUTPUT(0)) | 46 | DEFINE_GPIO(HPAMP_POWER, GPIO_PB(6), GPIOF_OUTPUT(0)) |
47 | 47 | ||
48 | /* SD card */ | 48 | /* SD card */ |
49 | DEFINE_GPIO(MSC0_CD, GPIO_PB(11), GPIOF_INPUT) | 49 | DEFINE_GPIO(MSC0_CD, GPIO_PB(11), GPIOF_INPUT) |