projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
V4L/DVB (5149): Convert radio-maxiradio to use video_ioctl2
[powerpc.git]
/
drivers
/
media
/
video
/
msp3400-driver.c
diff --git
a/drivers/media/video/msp3400-driver.c
b/drivers/media/video/msp3400-driver.c
index
dbb75a7
..
2fb9fe6
100644
(file)
--- a/
drivers/media/video/msp3400-driver.c
+++ b/
drivers/media/video/msp3400-driver.c
@@
-56,7
+56,7
@@
#include <media/tvaudio.h>
#include <media/msp3400.h>
#include <linux/kthread.h>
#include <media/tvaudio.h>
#include <media/msp3400.h>
#include <linux/kthread.h>
-#include <linux/
suspend
.h>
+#include <linux/
freezer
.h>
#include "msp3400-driver.h"
/* ---------------------------------------------------------------------- */
#include "msp3400-driver.h"
/* ---------------------------------------------------------------------- */
@@
-362,7
+362,7
@@
int msp_sleep(struct msp_state *state, int timeout)
}
/* ------------------------------------------------------------------------ */
}
/* ------------------------------------------------------------------------ */
-
+#ifdef CONFIG_VIDEO_V4L1
static int msp_mode_v4l2_to_v4l1(int rxsubchans, int audmode)
{
if (rxsubchans == V4L2_TUNER_SUB_MONO)
static int msp_mode_v4l2_to_v4l1(int rxsubchans, int audmode)
{
if (rxsubchans == V4L2_TUNER_SUB_MONO)
@@
-384,6
+384,7
@@
static int msp_mode_v4l1_to_v4l2(int mode)
return V4L2_TUNER_MODE_LANG1;
return V4L2_TUNER_MODE_MONO;
}
return V4L2_TUNER_MODE_LANG1;
return V4L2_TUNER_MODE_MONO;
}
+#endif
static int msp_get_ctrl(struct i2c_client *client, struct v4l2_control *ctrl)
{
static int msp_get_ctrl(struct i2c_client *client, struct v4l2_control *ctrl)
{
@@
-509,6
+510,7
@@
static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg)
/* --- v4l ioctls --- */
/* take care: bttv does userspace copying, we'll get a
kernel pointer here... */
/* --- v4l ioctls --- */
/* take care: bttv does userspace copying, we'll get a
kernel pointer here... */
+#ifdef CONFIG_VIDEO_V4L1
case VIDIOCGAUDIO:
{
struct video_audio *va = arg;
case VIDIOCGAUDIO:
{
struct video_audio *va = arg;
@@
-577,6
+579,12
@@
static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg)
}
case VIDIOCSFREQ:
}
case VIDIOCSFREQ:
+ {
+ /* new channel -- kick audio carrier scan */
+ msp_wake_thread(client);
+ break;
+ }
+#endif
case VIDIOC_S_FREQUENCY:
{
/* new channel -- kick audio carrier scan */
case VIDIOC_S_FREQUENCY:
{
/* new channel -- kick audio carrier scan */
@@
-625,10
+633,8
@@
static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg)
if (((rt->input >> (4 + i * 4)) & 0xf) == 0)
extern_input = 0;
}
if (((rt->input >> (4 + i * 4)) & 0xf) == 0)
extern_input = 0;
}
- if (extern_input)
- state->mode = MSP_MODE_EXTERN;
- else
- state->mode = MSP_MODE_AM_DETECT;
+ state->mode = extern_input ? MSP_MODE_EXTERN : MSP_MODE_AM_DETECT;
+ state->rxsubchans = V4L2_TUNER_SUB_STEREO;
msp_set_scart(client, sc_in, 0);
msp_set_scart(client, sc1_out, 1);
msp_set_scart(client, sc2_out, 2);
msp_set_scart(client, sc_in, 0);
msp_set_scart(client, sc1_out, 1);
msp_set_scart(client, sc2_out, 2);
@@
-896,6
+902,8
@@
static int msp_attach(struct i2c_adapter *adapter, int address, int kind)
state->has_virtual_dolby_surround = msp_revision == 'G' && msp_prod_lo == 1;
/* Has Virtual Dolby Surround & Dolby Pro Logic: only in msp34x2 */
state->has_dolby_pro_logic = msp_revision == 'G' && msp_prod_lo == 2;
state->has_virtual_dolby_surround = msp_revision == 'G' && msp_prod_lo == 1;
/* Has Virtual Dolby Surround & Dolby Pro Logic: only in msp34x2 */
state->has_dolby_pro_logic = msp_revision == 'G' && msp_prod_lo == 2;
+ /* The msp343xG supports BTSC only and cannot do Automatic Standard Detection. */
+ state->force_btsc = msp_family == 3 && msp_revision == 'G' && msp_prod_hi == 3;
state->opmode = opmode;
if (state->opmode == OPMODE_AUTO) {
state->opmode = opmode;
if (state->opmode == OPMODE_AUTO) {
@@
-941,7
+949,7
@@
static int msp_attach(struct i2c_adapter *adapter, int address, int kind)
if (thread_func) {
state->kthread = kthread_run(thread_func, client, "msp34xx");
if (thread_func) {
state->kthread = kthread_run(thread_func, client, "msp34xx");
- if (
state->kthread == NULL
)
+ if (
IS_ERR(state->kthread)
)
v4l_warn(client, "kernel_thread() failed\n");
msp_wake_thread(client);
}
v4l_warn(client, "kernel_thread() failed\n");
msp_wake_thread(client);
}