summaryrefslogtreecommitdiff
path: root/firmware/drivers/tuner/tea5767.c
diff options
context:
space:
mode:
authorSzymon Dziok <b0hoon@o2.pl>2016-01-12 00:03:22 +0100
committerSolomon Peachy <pizza@shaftnet.org>2024-06-23 20:11:59 -0400
commitf7a3b4dfa32f008ba25a84e332eeace8d35cff42 (patch)
treef0f72b360ee454e7f1fb72b9447e49059194e031 /firmware/drivers/tuner/tea5767.c
parent8f75b29aed8eeb901244a715595c93656dc18b72 (diff)
downloadrockbox-f7a3b4dfa32f008ba25a84e332eeace8d35cff42.tar.gz
rockbox-f7a3b4dfa32f008ba25a84e332eeace8d35cff42.zip
Radio support and detection for Samsung YH92X [FOR TESTING].
Status: - tested on: Samsung YH920 - it uses this detection too, it always should have the radio. Samsung YH925 with the radio. - untested on: Samsung YH925 without the radio. Change-Id: I68b39c09d6b7e26a4c373fbd8bf9401a97e86123
Diffstat (limited to 'firmware/drivers/tuner/tea5767.c')
-rw-r--r--firmware/drivers/tuner/tea5767.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/firmware/drivers/tuner/tea5767.c b/firmware/drivers/tuner/tea5767.c
index a502e79802..143cb0576b 100644
--- a/firmware/drivers/tuner/tea5767.c
+++ b/firmware/drivers/tuner/tea5767.c
@@ -171,17 +171,26 @@ int tea5767_get(int setting)
171void tea5767_init(void) 171void tea5767_init(void)
172{ 172{
173/* save binsize by only detecting presence for targets where it may be absent */ 173/* save binsize by only detecting presence for targets where it may be absent */
174#if defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) 174#if defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) ||\
175 defined(SAMSUNG_YH920) || defined(SAMSUNG_YH925)
175 unsigned char buf[5]; 176 unsigned char buf[5];
176 unsigned char chipid; 177 unsigned char chipid;
177 178
178 /* init chipid register with 0xFF in case fmradio_i2c_read fails silently */
179 buf[3] = 0xFF;
180 tuner_power(true); 179 tuner_power(true);
181 180
182#if defined(CONFIG_TUNER_3WIRE) 181#if defined(CONFIG_TUNER_3WIRE)
182 /* We don't have any control over the bus protocol, the only way to detect
183 presence of the tuner is to write something to it and then read bytes */
184 tea5767_set(RADIO_MUTE, 1);
183 int res = fmradio_3wire_read(buf); 185 int res = fmradio_3wire_read(buf);
186 res = ((buf[0] == 0) && (buf[1] == 0) && (buf[2] == 0) && (buf[3] == 0)
187 && (buf[4] == 0) && (buf[5] == 0)) ? -1 : 1;
188 /* clear chipid byte - we don't use it here for detection, so it should be */
189 /* set to zero, to fulfill the condition in "else" block */
190 buf[3] = 0;
184#else 191#else
192 /* init chipid register with 0xFF in case fmradio_i2c_read fails silently */
193 buf[3] = 0xFF;
185 int res = fmradio_i2c_read(I2C_ADR, buf, sizeof(buf)); 194 int res = fmradio_i2c_read(I2C_ADR, buf, sizeof(buf));
186#endif 195#endif
187 196