summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Purchase <shotofadds@rockbox.org>2009-03-21 00:13:20 +0000
committerRob Purchase <shotofadds@rockbox.org>2009-03-21 00:13:20 +0000
commit1a6bcfa2c1545fc66aac40c88dba3a6f804d6227 (patch)
tree11069b2e03848d5e928fa98d7201fb64f75ef389
parentd63a8fcb7b0f4835a5acdb6c0dcb0783b6d3bba7 (diff)
D2: Enable FM radio (based on FS#10035 by Michael Burtin with some changes by myself). Also updates the LV24020 driver to add optional logf debugging.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20420 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/keymaps/keymap-cowond2.c9
-rw-r--r--apps/keymaps/keymap-touchscreen.c15
-rw-r--r--apps/recorder/radio.c8
-rw-r--r--firmware/drivers/audio/wm8985.c7
-rw-r--r--firmware/drivers/tuner/lv24020lp.c17
-rw-r--r--firmware/export/config-cowond2.h5
-rw-r--r--firmware/export/wm8985.h1
-rw-r--r--firmware/target/arm/tcc780x/cowond2/audio-cowond2.c2
8 files changed, 57 insertions, 7 deletions
diff --git a/apps/keymaps/keymap-cowond2.c b/apps/keymaps/keymap-cowond2.c
index 7ba2d8b02b..61fade99ed 100644
--- a/apps/keymaps/keymap-cowond2.c
+++ b/apps/keymaps/keymap-cowond2.c
@@ -146,6 +146,13 @@ static const struct button_mapping button_context_keyboard[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_keyboard */
+static const struct button_mapping button_context_radio[] = {
+ { ACTION_FM_MENU, BUTTON_MENU, BUTTON_NONE },
+ { ACTION_FM_STOP, BUTTON_POWER, BUTTON_NONE },
+
+ LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
+}; /* button_context_radio */
+
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context)
@@ -182,6 +189,8 @@ const struct button_mapping* target_get_context_mapping(int context)
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
+ case CONTEXT_FM:
+ return button_context_radio;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
diff --git a/apps/keymaps/keymap-touchscreen.c b/apps/keymaps/keymap-touchscreen.c
index 37d36a25fc..ce5d01c9dc 100644
--- a/apps/keymaps/keymap-touchscreen.c
+++ b/apps/keymaps/keymap-touchscreen.c
@@ -232,6 +232,19 @@ static const struct button_mapping button_context_keyboard[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_KEYBOARD)
}; /* button_context_keyboard */
+static const struct button_mapping button_context_radio[] = {
+ { ACTION_STD_PREV, BUTTON_MIDLEFT, BUTTON_NONE },
+ { ACTION_STD_PREVREPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE },
+ { ACTION_STD_NEXT, BUTTON_MIDRIGHT, BUTTON_NONE },
+ { ACTION_STD_NEXTREPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE },
+ { ACTION_FM_MENU, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_CENTER },
+ { ACTION_FM_PRESET, BUTTON_CENTER|BUTTON_REL, BUTTON_NONE },
+ { ACTION_FM_EXIT, BUTTON_TOPLEFT|BUTTON_REL, BUTTON_NONE },
+ { ACTION_FM_MODE, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_NONE },
+ { ACTION_FM_PLAY, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_NONE },
+ LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_FM)
+}; /* button_context_radio */
+
const struct button_mapping* get_context_mapping(int context)
{
if (context & CONTEXT_CUSTOM2
@@ -274,6 +287,8 @@ const struct button_mapping* get_context_mapping(int context)
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
+ case CONTEXT_FM:
+ return button_context_radio;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index f3270d1f5d..fe6f277fcb 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -109,6 +109,14 @@
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
#define FM_PRESET
#define FM_MODE
+
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define FM_MENU
+#define FM_PRESET
+#define FM_STOP
+#define FM_MODE
+#define FM_EXIT
+#define FM_PLAY
#endif
#define RADIO_SCAN_MODE 0
diff --git a/firmware/drivers/audio/wm8985.c b/firmware/drivers/audio/wm8985.c
index f7b2e510ae..d59d2d3230 100644
--- a/firmware/drivers/audio/wm8985.c
+++ b/firmware/drivers/audio/wm8985.c
@@ -186,6 +186,13 @@ void audiohw_set_lineout_vol(int vol_l, int vol_r)
wmcodec_write(ROUT2VOL, 0x100 | vol_r);
}
+void audiohw_set_aux_vol(int vol_l, int vol_r)
+{
+ /* OUTMIX */
+ wmcodec_write(LOUTMIX, 0x111 | (vol_l << 5) );
+ wmcodec_write(ROUTMIX, 0x111 | (vol_r << 5) );
+}
+
void audiohw_set_bass(int value)
{
eq1_reg = (eq1_reg & ~EQ_GAIN_MASK) | EQ_GAIN_VALUE(value);
diff --git a/firmware/drivers/tuner/lv24020lp.c b/firmware/drivers/tuner/lv24020lp.c
index 769be8ac77..c6d396aca4 100644
--- a/firmware/drivers/tuner/lv24020lp.c
+++ b/firmware/drivers/tuner/lv24020lp.c
@@ -29,19 +29,17 @@
#include "power.h"
#include "fmradio.h" /* physical interface driver */
#include "sound.h"
-#include "pp5024.h"
#include "system.h"
#ifndef BOOTLOADER
static struct mutex tuner_mtx;
-#if 0
/* define to enable tuner logging */
-#define SANYO_TUNER_LOG
-#endif
+#undef SANYO_TUNER_LOG_FILE
+#undef SANYO_TUNER_LOGF
-#ifdef SANYO_TUNER_LOG
+#ifdef SANYO_TUNER_LOG_FILE
#include "sprintf.h"
#include "file.h"
@@ -52,6 +50,15 @@ static int fd_log = -1;
/* syncing required because close() is never called */
#define TUNER_LOG_SYNC() fsync(fd_log)
#define TUNER_LOG(s...) fdprintf(fd_log, s)
+
+#elif defined(SANYO_TUNER_LOGF)
+#define LOGF_ENABLE
+#include "logf.h"
+
+#define TUNER_LOG_OPEN()
+#define TUNER_LOG_SYNC()
+#define TUNER_LOG(s...) logf(s)
+
#else
#define TUNER_LOG_OPEN()
#define TUNER_LOG_SYNC()
diff --git a/firmware/export/config-cowond2.h b/firmware/export/config-cowond2.h
index 2b3b09cb09..85e46f9b30 100644
--- a/firmware/export/config-cowond2.h
+++ b/firmware/export/config-cowond2.h
@@ -49,9 +49,10 @@
/* define this if you would like tagcache to build on this target */
//#define HAVE_TAGCACHE
-/* FM Tuner
+/* FM Tuner */
#define CONFIG_TUNER LV24020LP
-#define HAVE_TUNER_PWR_CTRL*/
+#define HAVE_TUNER_PWR_CTRL
+#define HAVE_RADIO_REGION
/* define this if you have a flash memory storage */
#define HAVE_FLASH_STORAGE
diff --git a/firmware/export/wm8985.h b/firmware/export/wm8985.h
index 0827d4388f..5d036a672f 100644
--- a/firmware/export/wm8985.h
+++ b/firmware/export/wm8985.h
@@ -32,5 +32,6 @@ extern int tenthdb2master(int db);
extern void audiohw_set_headphone_vol(int vol_l, int vol_r);
extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
+extern void audiohw_set_aux_vol(int vol_l, int vol_r);
#endif /* _WM8985_H */
diff --git a/firmware/target/arm/tcc780x/cowond2/audio-cowond2.c b/firmware/target/arm/tcc780x/cowond2/audio-cowond2.c
index cd7ea74df2..a6cace3d7d 100644
--- a/firmware/target/arm/tcc780x/cowond2/audio-cowond2.c
+++ b/firmware/target/arm/tcc780x/cowond2/audio-cowond2.c
@@ -57,6 +57,7 @@ void audio_input_mux(int source, unsigned flags)
{
/*audiohw_set_monitor(false);
audiohw_disable_recording();*/
+ audiohw_set_aux_vol(0,0);
}
break;
@@ -86,6 +87,7 @@ void audio_input_mux(int source, unsigned flags)
{
/*audiohw_disable_recording();
audiohw_set_monitor(true); /. line 1 analog audio path */
+ audiohw_set_aux_vol(7,7);
}
break;
} /* end switch */