Fixed si470x_start() disabling the interrupt signal, causing tune
operations to never complete. This does not affect USB radios
because they poll the registers instead of using the IRQ line.

Signed-off-by: Douglas Fischer <fischerdougl...@gmail.com>
---

diff -uprN linux.orig/drivers/media/radio/si470x/radio-si470x-common.c
linux/drivers/media/radio/si470x/radio-si470x-common.c ---
linux.orig/drivers/media/radio/si470x/radio-si470x-common.c
2018-01-15 21:58:10.675620432 -0500 +++
linux/drivers/media/radio/si470x/radio-si470x-common.c
2018-01-16 16:54:23.699770645 -0500 @@ -377,8 +377,13 @@ int
si470x_start(struct si470x_device *r goto done; /* sysconfig 1 */
-       radio->registers[SYSCONFIG1] =
-               (de << 11) & SYSCONFIG1_DE;             /* DE*/
+       radio->registers[SYSCONFIG1] |= SYSCONFIG1_RDSIEN;
+       radio->registers[SYSCONFIG1] |= SYSCONFIG1_STCIEN;
+       radio->registers[SYSCONFIG1] |= SYSCONFIG1_RDS;
+       radio->registers[SYSCONFIG1] &= ~SYSCONFIG1_GPIO2;
+       radio->registers[SYSCONFIG1] |= 0x1 << 2;
+       if (de)
+               radio->registers[SYSCONFIG1] |= SYSCONFIG1_DE;
        retval = si470x_set_register(radio, SYSCONFIG1);
        if (retval < 0)
                goto done;

Reply via email to