Commit 6cc72658 authored by Tobias Lorenz's avatar Tobias Lorenz Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (7994): si470x: let si470x_get_freq return errno




This patch brings the following changes:
- version bumped to 1.0.8 for all the following patches
- si470x_get_freq now returns errno

Signed-off-by: default avatarTobias Lorenz <tobias.lorenz@gmx.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent ce5829e5
Loading
Loading
Loading
Loading
+23 −11
Original line number Diff line number Diff line
@@ -23,6 +23,19 @@
 */


/*
 * User Notes:
 * - USB Audio is provided by the alsa snd_usb_audio module.
 *   For listing you have to redirect the sound, for example using:
 *   arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -
 * - regarding module parameters in /sys/module/radio_si470x/parameters:
 *   the contents of read-only files (0444) are not updated, even if
 *   space, band and de are changed using private video controls
 * - increase tune_timeout, if you often get -EIO errors
 * - hw_freq_seek returns -EAGAIN, when timed out or band limit is reached
 */


/*
 * History:
 * 2008-01-12	Tobias Lorenz <tobias.lorenz@gmx.net>
@@ -86,6 +99,9 @@
 *		Version 1.0.7
 *		- usb autosuspend support
 *		- unplugging fixed
 * 2008-05-07	Tobias Lorenz <tobias.lorenz@gmx.net>
 *		Version 1.0.8
 *		- let si470x_get_freq return errno
 *
 * ToDo:
 * - add seeking support
@@ -98,10 +114,10 @@
/* driver definitions */
#define DRIVER_AUTHOR "Tobias Lorenz <tobias.lorenz@gmx.net>"
#define DRIVER_NAME "radio-si470x"
#define DRIVER_KERNEL_VERSION KERNEL_VERSION(1, 0, 7)
#define DRIVER_KERNEL_VERSION KERNEL_VERSION(1, 0, 8)
#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
#define DRIVER_DESC "USB radio driver for Si470x FM Radio Receivers"
#define DRIVER_VERSION "1.0.7"
#define DRIVER_VERSION "1.0.8"


/* kernel includes */
@@ -631,9 +647,9 @@ static int si470x_set_chan(struct si470x_device *radio, unsigned short chan)
/*
 * si470x_get_freq - get the frequency
 */
static unsigned int si470x_get_freq(struct si470x_device *radio)
static int si470x_get_freq(struct si470x_device *radio, unsigned int *freq)
{
	unsigned int spacing, band_bottom, freq;
	unsigned int spacing, band_bottom;
	unsigned short chan;
	int retval;

@@ -659,14 +675,12 @@ static unsigned int si470x_get_freq(struct si470x_device *radio)

	/* read channel */
	retval = si470x_get_register(radio, READCHAN);
	if (retval < 0)
		return retval;
	chan = radio->registers[READCHAN] & READCHAN_READCHAN;

	/* Frequency (MHz) = Spacing (kHz) x Channel + Bottom of Band (MHz) */
	freq = chan * spacing + band_bottom;
	*freq = chan * spacing + band_bottom;

	return freq;
	return retval;
}


@@ -1351,9 +1365,7 @@ static int si470x_vidioc_g_frequency(struct file *file, void *priv,
		return -EIO;

	freq->type = V4L2_TUNER_RADIO;
	freq->frequency = si470x_get_freq(radio);

	return 0;
	return si470x_get_freq(radio, &radio->frequency);
}