From b4be2048ce62d05d93608f82d5e986612ed4fdf7 Mon Sep 17 00:00:00 2001
From: Alexey Klimov <klimov.linux@gmail.com>
Date: Thu, 9 Oct 2008 13:46:59 -0300
Subject: V4L/DVB (9152): radio-zoltrix: Add checking for frequency

This patch adds printk messages, adds checking if frequency is set,
adds return -EINVAL in right places in zoltrix-radio.

Signed-off-by: Alexey Klimov <klimov.linux@gmail.com>
Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
 drivers/media/radio/radio-zoltrix.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

(limited to 'drivers/media/radio')

diff --git a/drivers/media/radio/radio-zoltrix.c b/drivers/media/radio/radio-zoltrix.c
index f75da63b1634..15b10bad6796 100644
--- a/drivers/media/radio/radio-zoltrix.c
+++ b/drivers/media/radio/radio-zoltrix.c
@@ -123,8 +123,11 @@ static int zol_setfreq(struct zol_device *dev, unsigned long freq)
 	unsigned int stereo = dev->stereo;
 	int i;
 
-	if (freq == 0)
-		return 1;
+	if (freq == 0) {
+		printk(KERN_WARNING "zoltrix: received zero freq. Failed to set.\n");
+		return -EINVAL;
+	}
+
 	m = (freq / 160 - 8800) * 2;
 	f = (unsigned long long) m + 0x4d1c;
 
@@ -279,7 +282,10 @@ static int vidioc_s_frequency(struct file *file, void *priv,
 	struct zol_device *zol = video_drvdata(file);
 
 	zol->curfreq = f->frequency;
-	zol_setfreq(zol, zol->curfreq);
+	if (zol_setfreq(zol, zol->curfreq) != 0) {
+		printk(KERN_WARNING "zoltrix: Set frequency failed.\n");
+		return -EINVAL;
+	}
 	return 0;
 }
 
@@ -343,7 +349,10 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
 		return 0;
 	}
 	zol->stereo = 1;
-	zol_setfreq(zol, zol->curfreq);
+	if (zol_setfreq(zol, zol->curfreq) != 0) {
+		printk(KERN_WARNING "zoltrix: Set frequency failed.\n");
+		return -EINVAL;
+	}
 #if 0
 /* FIXME: Implement stereo/mono switch on V4L2 */
 			if (v->mode & VIDEO_SOUND_STEREO) {
-- 
cgit v1.2.3