summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/mas.c15
-rw-r--r--firmware/mp3_playback.c4
2 files changed, 15 insertions, 4 deletions
diff --git a/firmware/drivers/mas.c b/firmware/drivers/mas.c
index 52a91c5e40..95697a79e9 100644
--- a/firmware/drivers/mas.c
+++ b/firmware/drivers/mas.c
@@ -266,11 +266,18 @@ static int mas_devread(unsigned long *dest, int len)
return ret;
}
-#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
void mas_reset(void)
{
or_b(0x01, &PAIORH);
-
+
+#if CONFIG_HWCODEC == MAS3507D
+ or_b(0x01, &PAIORH);
+ and_b(~0x01, &PADRH);
+ sleep(HZ/100);
+ or_b(0x01, &PADRH);
+ sleep(HZ/5);
+
+#elif (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
if(old_recorder)
{
/* Older recorder models don't invert the POR signal */
@@ -285,9 +292,11 @@ void mas_reset(void)
sleep(HZ/100);
or_b(0x01, &PADRH);
sleep(HZ/5);
- }
+ }
+#endif
}
+#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
int mas_direct_config_read(unsigned char reg)
{
int ret = 0;
diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c
index a7284aeff0..cc02505979 100644
--- a/firmware/mp3_playback.c
+++ b/firmware/mp3_playback.c
@@ -938,7 +938,9 @@ void mp3_init(int volume, int bass, int treble, int balance, int loudness,
or_b(0x01, &PBIORH); /* output for PB8 */
#endif
-#if CONFIG_HWCODEC == MAS3587F
+#if CONFIG_HWCODEC == MAS3507D
+ mas_reset();
+#elif CONFIG_HWCODEC == MAS3587F
or_b(0x08, &PAIORH); /* output for /PR */
init_playback();