radio-si470x: add disconnect check function
PATCH v2 3/4 radio-si470x: add disconnect check function
The si470x_disconnect_check is function to check disconnect state of radio in common file. The function is implemented in each interface file.
Signed-off-by Joonyoung Shim <[email protected]>
--- .../media/radio/si470x/radio-si470x-common.c | 40 +++++++++---------- .../drivers/media/radio/si470x/radio-si470x-usb.c | 17 ++++++++ linux/drivers/media/radio/si470x/radio-si470x.h | 1 + 3 files changed, 37 insertions(+), 21 deletions(-)
linux/drivers/media/radio/si470x/radio-si470x-common.c +19 -21
@@ -475,10 +475,9 @@ static int si470x_vidioc_g_ctrl(struct file *file, void *priv,int retval =0 ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - }switch (ctrl->id) {case V4L2_CID_AUDIO_VOLUME :
@@ -511,10 +510,9 @@ static int si470x_vidioc_s_ctrl(struct file *file, void *priv,int retval =0 ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - }switch (ctrl->id) {case V4L2_CID_AUDIO_VOLUME :
@@ -567,10 +565,10 @@ static int si470x_vidioc_g_tuner(struct file *file, void *priv,int retval =0 ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - } +if (tuner->index !=0 ) { retval = -EINVAL ; goto done;
@@ -649,10 +647,10 @@ static int si470x_vidioc_s_tuner(struct file *file, void *priv,int retval = -EINVAL ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - } +if (tuner->index !=0 ) goto done;
@@ -688,10 +686,10 @@ static int si470x_vidioc_g_frequency(struct file *file, void *priv,int retval =0 ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - } +if (freq->tuner !=0 ) { retval = -EINVAL ; goto done;
@@ -718,10 +716,10 @@ static int si470x_vidioc_s_frequency(struct file *file, void *priv,int retval =0 ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - } +if (freq->tuner !=0 ) { retval = -EINVAL ; goto done;
@@ -747,10 +745,10 @@ static int si470x_vidioc_s_hw_freq_seek(struct file *file, void *priv,int retval =0 ;/* safety checks */ -if (radio->disconnected) { - retval = -EIO ; + retval =si470x_disconnect_check (radio); +if (retval) goto done; - } +if (seek->tuner !=0 ) { retval = -EINVAL ; goto done;
linux/drivers/media/radio/si470x/radio-si470x-usb.c +17 -0
@@ -371,6 +371,23 @@ static int si470x_get_scratch_page_versions(struct si470x_device *radio)/************************************************************************** +* General Driver Functions - DISCONNECT_CHECK +**************************************************************************/ + +/* +* si470x_disconnect_check - check whether radio disconnects +*/ +int si470x_disconnect_check (struct si470x_device *radio) +{ +if (radio->disconnected) +return -EIO ; +else +return 0 ; +} + + + +/************************************************************************** * RDS Driver Functions **************************************************************************/
linux/drivers/media/radio/si470x/radio-si470x.h +1 -0
@@ -193,6 +193,7 @@ extern const struct v4l2_file_operations si470x_fops;extern struct video_device si470x_viddev_template;int si470x_get_register (struct si470x_device *radio,int regnr);int si470x_set_register (struct si470x_device *radio,int regnr); +int si470x_disconnect_check (struct si470x_device *radio);int si470x_set_freq (struct si470x_device *radio,unsigned int freq);int si470x_start (struct si470x_device *radio);int si470x_stop (struct si470x_device *radio);
Signature · 1 line
1.6.0.4