From e236b9574641302d02e4d044ed78a65e9ae6fdc2 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Mon, 24 May 2010 20:12:10 +0000 Subject: [PATCH] Si4700 tuner: It doesn't like to do i2c while powered off and hangs the bus. Make 'pause' simply be 'mute', allowing tuning during user mute as well as nicer-sounding unmute. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26269 a1c6a512-1295-4272-9138-f99709370657 --- apps/radio/radio.c | 4 +++- firmware/drivers/tuner/si4700.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/radio/radio.c b/apps/radio/radio.c index b3540610f1..403d1ae36f 100644 --- a/apps/radio/radio.c +++ b/apps/radio/radio.c @@ -279,7 +279,9 @@ void radio_pause(void) } tuner_set(RADIO_MUTE, 1); - tuner_set(RADIO_SLEEP, 1); + /* For si4700: 2==this is really 'pause'. other tuners treat it + * like 'bool'. */ + tuner_set(RADIO_SLEEP, 2); radio_status = FMRADIO_PAUSED; } /* radio_pause */ diff --git a/firmware/drivers/tuner/si4700.c b/firmware/drivers/tuner/si4700.c index 3a49d6ef41..985659b77b 100644 --- a/firmware/drivers/tuner/si4700.c +++ b/firmware/drivers/tuner/si4700.c @@ -411,7 +411,9 @@ int si4700_set(int setting, int value) switch(setting) { case RADIO_SLEEP: - si4700_sleep(value); + if (value != 2) + si4700_sleep(value); + /* else actually it's 'pause' */ break; case RADIO_FREQUENCY: