diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2006-03-19 05:25:42 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-03-24 14:26:56 -0500 |
commit | 9a80a93da738c631de644175fbd669ab9a9cb624 (patch) | |
tree | 971defc56764634e9747a6edb821b4ede86cbb89 /drivers/media/video/msp3400-kthreads.c | |
parent | 427725748b38997628d95ffdf8501bcc176cf631 (diff) |
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: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/msp3400-kthreads.c')
-rw-r--r-- | drivers/media/video/msp3400-kthreads.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/drivers/media/video/msp3400-kthreads.c b/drivers/media/video/msp3400-kthreads.c index 71a944b447e2..972f2c80dbe2 100644 --- a/drivers/media/video/msp3400-kthreads.c +++ b/drivers/media/video/msp3400-kthreads.c | |||
@@ -806,6 +806,38 @@ static void msp34xxg_set_source(struct i2c_client *client, int source) | |||
806 | state->source = source; | 806 | state->source = source; |
807 | } | 807 | } |
808 | 808 | ||
809 | static int msp34xxg_modus(struct i2c_client *client) | ||
810 | { | ||
811 | struct msp_state *state = i2c_get_clientdata(client); | ||
812 | |||
813 | if (state->radio) { | ||
814 | v4l_dbg(1, msp_debug, client, "selected radio modus\n"); | ||
815 | return 0x0001; | ||
816 | } | ||
817 | |||
818 | if (state->v4l2_std & V4L2_STD_PAL) { | ||
819 | v4l_dbg(1, msp_debug, client, "selected PAL modus\n"); | ||
820 | return 0x7001; | ||
821 | } | ||
822 | if (state->v4l2_std == V4L2_STD_NTSC_M_JP) { | ||
823 | v4l_dbg(1, msp_debug, client, "selected M (EIA-J) modus\n"); | ||
824 | return 0x4001; | ||
825 | } | ||
826 | if (state->v4l2_std == V4L2_STD_NTSC_M_KR) { | ||
827 | v4l_dbg(1, msp_debug, client, "selected M (A2) modus\n"); | ||
828 | return 0x0001; | ||
829 | } | ||
830 | if (state->v4l2_std & V4L2_STD_MN) { | ||
831 | v4l_dbg(1, msp_debug, client, "selected M (BTSC) modus\n"); | ||
832 | return 0x2001; | ||
833 | } | ||
834 | if (state->v4l2_std & V4L2_STD_SECAM) { | ||
835 | v4l_dbg(1, msp_debug, client, "selected SECAM modus\n"); | ||
836 | return 0x6001; | ||
837 | } | ||
838 | return 0x0001; | ||
839 | } | ||
840 | |||
809 | /* (re-)initialize the msp34xxg, according to the current norm in state->norm | 841 | /* (re-)initialize the msp34xxg, according to the current norm in state->norm |
810 | * return 0 if it worked, -1 if it failed | 842 | * return 0 if it worked, -1 if it failed |
811 | */ | 843 | */ |
@@ -826,7 +858,7 @@ static int msp34xxg_reset(struct i2c_client *client) | |||
826 | msp_write_dem(client, 0x40, state->i2s_mode); | 858 | msp_write_dem(client, 0x40, state->i2s_mode); |
827 | 859 | ||
828 | /* step-by-step initialisation, as described in the manual */ | 860 | /* step-by-step initialisation, as described in the manual */ |
829 | modus = msp_modus(client); | 861 | modus = msp34xxg_modus(client); |
830 | if (state->radio) | 862 | if (state->radio) |
831 | std = 0x40; | 863 | std = 0x40; |
832 | else | 864 | else |