diff options
author | Rob Purchase <shotofadds@rockbox.org> | 2009-03-21 00:13:20 +0000 |
---|---|---|
committer | Rob Purchase <shotofadds@rockbox.org> | 2009-03-21 00:13:20 +0000 |
commit | 1a6bcfa2c1545fc66aac40c88dba3a6f804d6227 (patch) | |
tree | 11069b2e03848d5e928fa98d7201fb64f75ef389 | |
parent | d63a8fcb7b0f4835a5acdb6c0dcb0783b6d3bba7 (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.c | 9 | ||||
-rw-r--r-- | apps/keymaps/keymap-touchscreen.c | 15 | ||||
-rw-r--r-- | apps/recorder/radio.c | 8 | ||||
-rw-r--r-- | firmware/drivers/audio/wm8985.c | 7 | ||||
-rw-r--r-- | firmware/drivers/tuner/lv24020lp.c | 17 | ||||
-rw-r--r-- | firmware/export/config-cowond2.h | 5 | ||||
-rw-r--r-- | firmware/export/wm8985.h | 1 | ||||
-rw-r--r-- | firmware/target/arm/tcc780x/cowond2/audio-cowond2.c | 2 |
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 */ |