public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] media: radio: Critical interrupt bugfix for si470x over i2c
@ 2018-01-20 19:18 Douglas Fischer
  0 siblings, 0 replies; 5+ messages in thread
From: Douglas Fischer @ 2018-01-20 19:18 UTC (permalink / raw)
  To: hverkuil, linux-media

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 <fischerdouglasc@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;

^ permalink raw reply	[flat|nested] 5+ messages in thread
* [PATCH] media: radio: Critical interrupt bugfix for si470x over i2c
@ 2018-01-26 23:42 Douglas Fischer
  2018-02-15 14:38 ` Hans Verkuil
  0 siblings, 1 reply; 5+ messages in thread
From: Douglas Fischer @ 2018-01-26 23:42 UTC (permalink / raw)
  To: hverkuil, linux-media

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 <fischerdouglasc@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;

^ permalink raw reply	[flat|nested] 5+ messages in thread
* [PATCH] media: radio: Critical interrupt bugfix for si470x over i2c
@ 2018-01-18 20:00 Douglas Fischer
  0 siblings, 0 replies; 5+ messages in thread
From: Douglas Fischer @ 2018-01-18 20:00 UTC (permalink / raw)
  To: linux-media

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 <fischerdouglasc@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;

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-02-24 22:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-20 19:18 [PATCH] media: radio: Critical interrupt bugfix for si470x over i2c Douglas Fischer
  -- strict thread matches above, loose matches on Subject: below --
2018-01-26 23:42 Douglas Fischer
2018-02-15 14:38 ` Hans Verkuil
2018-02-24 22:40   ` Douglas Fischer
2018-01-18 20:00 Douglas Fischer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox