diff options
Diffstat (limited to 'linux/drivers/media/video/cx25840/cx25840-core.c')
-rw-r--r-- | linux/drivers/media/video/cx25840/cx25840-core.c | 61 |
1 files changed, 19 insertions, 42 deletions
diff --git a/linux/drivers/media/video/cx25840/cx25840-core.c b/linux/drivers/media/video/cx25840/cx25840-core.c index e267b89fd..cfa9cca9f 100644 --- a/linux/drivers/media/video/cx25840/cx25840-core.c +++ b/linux/drivers/media/video/cx25840/cx25840-core.c @@ -344,48 +344,25 @@ static int set_input(struct i2c_client *client, enum cx25840_input input) static int set_v4lstd(struct i2c_client *client, v4l2_std_id std) { - u8 fmt=0; /* zero is autodetect */ - - do { - /* First tests should be against specific std */ - if (std & V4L2_STD_NTSC_M_JP) { - fmt=0x2; - break; - } - if (std & V4L2_STD_NTSC_443) { - fmt=0x3; - break; - } - if (std & V4L2_STD_PAL_M) { - fmt=0x5; - break; - } - if (std & V4L2_STD_PAL_N) { - fmt=0x6; - break; - } - if (std & V4L2_STD_PAL_Nc) { - fmt=0x7; - break; - } - if (std & V4L2_STD_PAL_60) { - fmt=0x8; - break; - } - /* Then, test against generic ones */ - if (std & V4L2_STD_NTSC) { - fmt=0x1; - break; - } - if (std & V4L2_STD_PAL) { - fmt=0x4; - break; - } - if (std & V4L2_STD_SECAM) { - fmt=0xc; - break; - } - } while (0); + u8 fmt; + + switch (std) { + /* zero is autodetect */ + case 0: fmt = 0x0; break; + /* default ntsc to ntsc-m */ + case V4L2_STD_NTSC: + case V4L2_STD_NTSC_M: fmt = 0x1; break; + case V4L2_STD_NTSC_M_JP: fmt = 0x2; break; + case V4L2_STD_NTSC_443: fmt = 0x3; break; + case V4L2_STD_PAL: fmt = 0x4; break; + case V4L2_STD_PAL_M: fmt = 0x5; break; + case V4L2_STD_PAL_N: fmt = 0x6; break; + case V4L2_STD_PAL_Nc: fmt = 0x7; break; + case V4L2_STD_PAL_60: fmt = 0x8; break; + case V4L2_STD_SECAM: fmt = 0xc; break; + default: + return -ERANGE; + } cx25840_and_or(client, 0x400, ~0xf, fmt); cx25840_vbi_setup(client); |