提交 9a80a93d 编写于 作者: H Hans Verkuil 提交者: Mauro Carvalho Chehab

V4L/DVB (3579): Move msp_modus to msp3400-kthreads, add JP and KR std detection

msp_modus is 'G' model specific. Moved it to kthreads and also added proper
handling for the Japanese and South Korean TV standards.
Signed-off-by: NHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 42772574
...@@ -336,37 +336,6 @@ void msp_set_audio(struct i2c_client *client) ...@@ -336,37 +336,6 @@ void msp_set_audio(struct i2c_client *client)
msp_write_dsp(client, 0x0033, loudness); msp_write_dsp(client, 0x0033, loudness);
} }
int msp_modus(struct i2c_client *client)
{
struct msp_state *state = i2c_get_clientdata(client);
if (state->radio) {
v4l_dbg(1, msp_debug, client, "video mode selected to Radio\n");
return 0x0003;
}
if (state->v4l2_std & V4L2_STD_PAL) {
v4l_dbg(1, msp_debug, client, "video mode selected to PAL\n");
#if 1
/* experimental: not sure this works with all chip versions */
return 0x7003;
#else
/* previous value, try this if it breaks ... */
return 0x1003;
#endif
}
if (state->v4l2_std & V4L2_STD_NTSC) {
v4l_dbg(1, msp_debug, client, "video mode selected to NTSC\n");
return 0x2003;
}
if (state->v4l2_std & V4L2_STD_SECAM) {
v4l_dbg(1, msp_debug, client, "video mode selected to SECAM\n");
return 0x0003;
}
return 0x0003;
}
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
......
...@@ -806,6 +806,38 @@ static void msp34xxg_set_source(struct i2c_client *client, int source) ...@@ -806,6 +806,38 @@ static void msp34xxg_set_source(struct i2c_client *client, int source)
state->source = source; state->source = source;
} }
static int msp34xxg_modus(struct i2c_client *client)
{
struct msp_state *state = i2c_get_clientdata(client);
if (state->radio) {
v4l_dbg(1, msp_debug, client, "selected radio modus\n");
return 0x0001;
}
if (state->v4l2_std & V4L2_STD_PAL) {
v4l_dbg(1, msp_debug, client, "selected PAL modus\n");
return 0x7001;
}
if (state->v4l2_std == V4L2_STD_NTSC_M_JP) {
v4l_dbg(1, msp_debug, client, "selected M (EIA-J) modus\n");
return 0x4001;
}
if (state->v4l2_std == V4L2_STD_NTSC_M_KR) {
v4l_dbg(1, msp_debug, client, "selected M (A2) modus\n");
return 0x0001;
}
if (state->v4l2_std & V4L2_STD_MN) {
v4l_dbg(1, msp_debug, client, "selected M (BTSC) modus\n");
return 0x2001;
}
if (state->v4l2_std & V4L2_STD_SECAM) {
v4l_dbg(1, msp_debug, client, "selected SECAM modus\n");
return 0x6001;
}
return 0x0001;
}
/* (re-)initialize the msp34xxg, according to the current norm in state->norm /* (re-)initialize the msp34xxg, according to the current norm in state->norm
* return 0 if it worked, -1 if it failed * return 0 if it worked, -1 if it failed
*/ */
...@@ -826,7 +858,7 @@ static int msp34xxg_reset(struct i2c_client *client) ...@@ -826,7 +858,7 @@ static int msp34xxg_reset(struct i2c_client *client)
msp_write_dem(client, 0x40, state->i2s_mode); msp_write_dem(client, 0x40, state->i2s_mode);
/* step-by-step initialisation, as described in the manual */ /* step-by-step initialisation, as described in the manual */
modus = msp_modus(client); modus = msp34xxg_modus(client);
if (state->radio) if (state->radio)
std = 0x40; std = 0x40;
else else
......
...@@ -98,7 +98,6 @@ int msp_reset(struct i2c_client *client); ...@@ -98,7 +98,6 @@ int msp_reset(struct i2c_client *client);
void msp_set_scart(struct i2c_client *client, int in, int out); void msp_set_scart(struct i2c_client *client, int in, int out);
void msp_set_mute(struct i2c_client *client); void msp_set_mute(struct i2c_client *client);
void msp_set_audio(struct i2c_client *client); void msp_set_audio(struct i2c_client *client);
int msp_modus(struct i2c_client *client);
int msp_sleep(struct msp_state *state, int timeout); int msp_sleep(struct msp_state *state, int timeout);
/* msp3400-kthreads.c */ /* msp3400-kthreads.c */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册