diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/tuner/tea5767.c | 15 |
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) | |||
171 | void tea5767_init(void) | 171 | void 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 | ||