From a2ee6a66814191c851efb043802740b4d8d1ab0e Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Fri, 16 Mar 2007 14:40:40 +0000 Subject: FM Radio mishmash: Make a quieter screen for the SWCODEC targets esp. for the benefit of x5; I wasn't sure if it was good to alter timeouts for HW codec. Simplify things and prepare for eventual scanning and tuning changes (which should help quiet x5 down even more). Make things behave themselves better in general. Enable SWCODEC FM Recording menu and screen for sim as a bonus. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12804 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/tuner.h | 59 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 6 deletions(-) (limited to 'firmware/export') diff --git a/firmware/export/tuner.h b/firmware/export/tuner.h index 0a13613711..590e61dedb 100644 --- a/firmware/export/tuner.h +++ b/firmware/export/tuner.h @@ -20,34 +20,81 @@ #ifndef __TUNER_SAMSUNG_H__ #define __TUNER_SAMSUNG_H__ +#include "hwcompat.h" + /* settings to the tuner layer */ +#define RADIO_ALL -1 /* debug */ #define RADIO_SLEEP 0 #define RADIO_FREQUENCY 1 #define RADIO_MUTE 2 #define RADIO_IF_MEASUREMENT 3 #define RADIO_SENSITIVITY 4 #define RADIO_FORCE_MONO 5 +#define RADIO_SCAN_FREQUENCY 6 #if (CONFIG_TUNER & TEA5767) -#define RADIO_SET_DEEMPHASIS 6 -#define RADIO_SET_BAND 7 +#define RADIO_SET_DEEMPHASIS 7 +#define RADIO_SET_BAND 8 #endif /* readback from the tuner layer */ #define RADIO_PRESENT 0 #define RADIO_TUNED 1 #define RADIO_STEREO 2 -#define RADIO_ALL 3 /* debug */ #if CONFIG_TUNER +#ifdef SIMULATOR +int radio_set(int setting, int value); +int radio_get(int setting); +#else +#if CONFIG_TUNER == S1A0903X01 /* FM recorder */ +#define radio_set samsung_set +#define radio_get samsung_get +#elif CONFIG_TUNER == TEA5767 /* iRiver, iAudio */ +#define radio_set philips_set +#define radio_get philips_get +#elif CONFIG_TUNER == (S1A0903X01 | TEA5767) /* OndioFM */ +#define radio_set _radio_set +#define radio_get _radio_get +int (*_radio_set)(int setting, int value); +int (*_radio_get)(int setting); +#endif +#endif + #if (CONFIG_TUNER & S1A0903X01) -void samsung_set(int setting, int value); +int samsung_set(int setting, int value); int samsung_get(int setting); -#endif +#endif /* CONFIG_TUNER & S1A0903X01 */ #if (CONFIG_TUNER & TEA5767) -void philips_set(int setting, int value); +struct philips_dbg_info +{ + unsigned char read_regs[5]; + unsigned char write_regs[5]; +}; +int philips_set(int setting, int value); int philips_get(int setting); +void philips_dbg_info(struct philips_dbg_info *info); +#endif /* CONFIG_TUNER & TEA5767 */ + +/* Just inline here since only radio screen needs this atm and + there's no tuner.c. */ +static inline void tuner_init(void) +{ +#ifndef SIMULATOR +#if CONFIG_TUNER == (S1A0903X01 | TEA5767) + if (read_hw_mask() & TUNER_MODEL) + { + _radio_set = philips_set; + _radio_get = philips_get; + } + else + { + _radio_set = samsung_set; + _radio_get = samsung_get; + } +#endif #endif +} #endif /* #if CONFIG_TUNER */ -- cgit v1.2.3