Commit 7f53b35c authored by Tobias Lorenz's avatar Tobias Lorenz Committed by Mauro Carvalho Chehab

V4L/DVB (10531): Code rearrangements in preparation for other report types

LED_REPORT and all flash REPORTs are on it's way. This code rearrangement
cleans up the code for proper integration later on.
Signed-off-by: default avatarTobias Lorenz <tobias.lorenz@gmx.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 00ec8d07
...@@ -481,7 +481,7 @@ struct si470x_device { ...@@ -481,7 +481,7 @@ struct si470x_device {
/************************************************************************** /**************************************************************************
* General Driver Functions * General Driver Functions - REGISTER_REPORTs
**************************************************************************/ **************************************************************************/
/* /*
...@@ -566,60 +566,6 @@ static int si470x_set_register(struct si470x_device *radio, int regnr) ...@@ -566,60 +566,6 @@ static int si470x_set_register(struct si470x_device *radio, int regnr)
} }
/*
* si470x_get_all_registers - read entire registers
*/
static int si470x_get_all_registers(struct si470x_device *radio)
{
unsigned char buf[ENTIRE_REPORT_SIZE];
int retval;
unsigned char regnr;
buf[0] = ENTIRE_REPORT;
retval = si470x_get_report(radio, (void *) &buf, sizeof(buf));
if (retval >= 0)
for (regnr = 0; regnr < RADIO_REGISTER_NUM; regnr++)
radio->registers[regnr] = get_unaligned_be16(
&buf[regnr * RADIO_REGISTER_SIZE + 1]);
return (retval < 0) ? -EINVAL : 0;
}
/*
* si470x_get_rds_registers - read rds registers
*/
static int si470x_get_rds_registers(struct si470x_device *radio)
{
unsigned char buf[RDS_REPORT_SIZE];
int retval;
int size;
unsigned char regnr;
buf[0] = RDS_REPORT;
retval = usb_interrupt_msg(radio->usbdev,
usb_rcvintpipe(radio->usbdev, 1),
(void *) &buf, sizeof(buf), &size, usb_timeout);
if (size != sizeof(buf))
printk(KERN_WARNING DRIVER_NAME ": si470x_get_rds_registers: "
"return size differs: %d != %zu\n", size, sizeof(buf));
if (retval < 0)
printk(KERN_WARNING DRIVER_NAME ": si470x_get_rds_registers: "
"usb_interrupt_msg returned %d\n", retval);
if (retval >= 0)
for (regnr = 0; regnr < RDS_REGISTER_NUM; regnr++)
radio->registers[STATUSRSSI + regnr] =
get_unaligned_be16(
&buf[regnr * RADIO_REGISTER_SIZE + 1]);
return (retval < 0) ? -EINVAL : 0;
}
/* /*
* si470x_set_chan - set the channel * si470x_set_chan - set the channel
*/ */
...@@ -911,6 +857,70 @@ static int si470x_set_led_state(struct si470x_device *radio, ...@@ -911,6 +857,70 @@ static int si470x_set_led_state(struct si470x_device *radio,
/**************************************************************************
* General Driver Functions - ENTIRE_REPORT
**************************************************************************/
/*
* si470x_get_all_registers - read entire registers
*/
static int si470x_get_all_registers(struct si470x_device *radio)
{
unsigned char buf[ENTIRE_REPORT_SIZE];
int retval;
unsigned char regnr;
buf[0] = ENTIRE_REPORT;
retval = si470x_get_report(radio, (void *) &buf, sizeof(buf));
if (retval >= 0)
for (regnr = 0; regnr < RADIO_REGISTER_NUM; regnr++)
radio->registers[regnr] = get_unaligned_be16(
&buf[regnr * RADIO_REGISTER_SIZE + 1]);
return (retval < 0) ? -EINVAL : 0;
}
/**************************************************************************
* General Driver Functions - RDS_REPORT
**************************************************************************/
/*
* si470x_get_rds_registers - read rds registers
*/
static int si470x_get_rds_registers(struct si470x_device *radio)
{
unsigned char buf[RDS_REPORT_SIZE];
int retval;
int size;
unsigned char regnr;
buf[0] = RDS_REPORT;
retval = usb_interrupt_msg(radio->usbdev,
usb_rcvintpipe(radio->usbdev, 1),
(void *) &buf, sizeof(buf), &size, usb_timeout);
if (size != sizeof(buf))
printk(KERN_WARNING DRIVER_NAME ": si470x_get_rds_registers: "
"return size differs: %d != %zu\n", size, sizeof(buf));
if (retval < 0)
printk(KERN_WARNING DRIVER_NAME ": si470x_get_rds_registers: "
"usb_interrupt_msg returned %d\n", retval);
if (retval >= 0)
for (regnr = 0; regnr < RDS_REGISTER_NUM; regnr++)
radio->registers[STATUSRSSI + regnr] =
get_unaligned_be16(
&buf[regnr * RADIO_REGISTER_SIZE + 1]);
return (retval < 0) ? -EINVAL : 0;
}
/************************************************************************** /**************************************************************************
* RDS Driver Functions * RDS Driver Functions
**************************************************************************/ **************************************************************************/
...@@ -1125,6 +1135,7 @@ static int si470x_fops_open(struct file *file) ...@@ -1125,6 +1135,7 @@ static int si470x_fops_open(struct file *file)
} }
if (radio->users == 1) { if (radio->users == 1) {
/* start radio */
retval = si470x_start(radio); retval = si470x_start(radio);
if (retval < 0) if (retval < 0)
usb_autopm_put_interface(radio->intf); usb_autopm_put_interface(radio->intf);
...@@ -1166,6 +1177,7 @@ static int si470x_fops_release(struct file *file) ...@@ -1166,6 +1177,7 @@ static int si470x_fops_release(struct file *file)
/* cancel read processes */ /* cancel read processes */
wake_up_interruptible(&radio->read_queue); wake_up_interruptible(&radio->read_queue);
/* stop radio */
retval = si470x_stop(radio); retval = si470x_stop(radio);
usb_autopm_put_interface(radio->intf); usb_autopm_put_interface(radio->intf);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment