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
This commit is contained in:
Szymon Dziok 2016-01-12 00:03:22 +01:00 committed by Solomon Peachy
parent 8f75b29aed
commit f7a3b4dfa3
3 changed files with 21 additions and 4 deletions

View file

@ -171,17 +171,26 @@ int tea5767_get(int setting)
void tea5767_init(void)
{
/* save binsize by only detecting presence for targets where it may be absent */
#if defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330)
#if defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) ||\
defined(SAMSUNG_YH920) || defined(SAMSUNG_YH925)
unsigned char buf[5];
unsigned char chipid;
/* init chipid register with 0xFF in case fmradio_i2c_read fails silently */
buf[3] = 0xFF;
tuner_power(true);
#if defined(CONFIG_TUNER_3WIRE)
/* We don't have any control over the bus protocol, the only way to detect
presence of the tuner is to write something to it and then read bytes */
tea5767_set(RADIO_MUTE, 1);
int res = fmradio_3wire_read(buf);
res = ((buf[0] == 0) && (buf[1] == 0) && (buf[2] == 0) && (buf[3] == 0)
&& (buf[4] == 0) && (buf[5] == 0)) ? -1 : 1;
/* clear chipid byte - we don't use it here for detection, so it should be */
/* set to zero, to fulfill the condition in "else" block */
buf[3] = 0;
#else
/* init chipid register with 0xFF in case fmradio_i2c_read fails silently */
buf[3] = 0xFF;
int res = fmradio_i2c_read(I2C_ADR, buf, sizeof(buf));
#endif