diff options
author | Trent Piepho <xyzzy@speakeasy.org> | 2009-05-30 20:45:46 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-23 02:21:20 -0400 |
commit | 1ca27379f3673b40edbd2fec53b93c993fdb4f0c (patch) | |
tree | d925042ba76dc770a40ec223e1cd1e7b8320d6cd /drivers/media | |
parent | ccb83408b258f7e9f9fe763f9a7d06ebcc21134f (diff) |
V4L/DVB (11913): cx231xx: TRY_FMT should not actually set anything
In the TRY_FMT handler the function get_scale() is called to find what the
scaler hardware will produce for a requested size.
The problem is that get_scale(struct cx231xx *dev, ..., unsigned int *vscale,
unsigned int *hscale) saves the calculated scale values into both the
pointer arguments and into dev's hscale and vscale fields. TRY_FMT shouldn't
actually change anything in the device state.
The code to in get_scale() that writes to dev->[hv]scale can just be
deleted. In all cases when dev's fields should be modified, get_scale()
was called with get_scale(dev, ..., &dev->hscale, &dev->vscale), so dev was
getting updated anyway.
This didn't actually cause a problem because nothing ever actually made use
of the hscale and vscale fields. I changed cx231xx_resolution_set() to use
those fields rather than re-calculate them with a call to get_scale().
Updating [hv]scale in cx231xx_resolution_set() isn't necessary because
every call of cx231xx_resolution_set() was already preceded by a call to
get_scale() or setting the [hv]scale fields, so they will be always be
up-to-date w.r.t. width and height.
Removing the call to get_scale() from cx231xx_resolution_set() allowed
making get_scale() a static function, which is a good thing for something
with such a short name. There is already another function with the same
name in the em28xx driver, but that one is static.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/cx231xx/cx231xx-avcore.c | 17 | ||||
-rw-r--r-- | drivers/media/video/cx231xx/cx231xx-video.c | 10 | ||||
-rw-r--r-- | drivers/media/video/cx231xx/cx231xx.h | 3 |
3 files changed, 7 insertions, 23 deletions
diff --git a/drivers/media/video/cx231xx/cx231xx-avcore.c b/drivers/media/video/cx231xx/cx231xx-avcore.c index 96f07d1473fb..28f48f41f218 100644 --- a/drivers/media/video/cx231xx/cx231xx-avcore.c +++ b/drivers/media/video/cx231xx/cx231xx-avcore.c | |||
@@ -1052,22 +1052,13 @@ int cx231xx_set_audio_decoder_input(struct cx231xx *dev, | |||
1052 | /* Set resolution of the video */ | 1052 | /* Set resolution of the video */ |
1053 | int cx231xx_resolution_set(struct cx231xx *dev) | 1053 | int cx231xx_resolution_set(struct cx231xx *dev) |
1054 | { | 1054 | { |
1055 | int width, height; | ||
1056 | u32 hscale, vscale; | ||
1057 | int status = 0; | ||
1058 | |||
1059 | width = dev->width; | ||
1060 | height = dev->height; | ||
1061 | |||
1062 | get_scale(dev, width, height, &hscale, &vscale); | ||
1063 | |||
1064 | /* set horzontal scale */ | 1055 | /* set horzontal scale */ |
1065 | status = vid_blk_write_word(dev, HSCALE_CTRL, hscale); | 1056 | int status = vid_blk_write_word(dev, HSCALE_CTRL, dev->hscale); |
1057 | if (status) | ||
1058 | return status; | ||
1066 | 1059 | ||
1067 | /* set vertical scale */ | 1060 | /* set vertical scale */ |
1068 | status = vid_blk_write_word(dev, VSCALE_CTRL, vscale); | 1061 | return vid_blk_write_word(dev, VSCALE_CTRL, dev->vscale); |
1069 | |||
1070 | return status; | ||
1071 | } | 1062 | } |
1072 | 1063 | ||
1073 | /****************************************************************************** | 1064 | /****************************************************************************** |
diff --git a/drivers/media/video/cx231xx/cx231xx-video.c b/drivers/media/video/cx231xx/cx231xx-video.c index 6a524d847110..609bae6098d3 100644 --- a/drivers/media/video/cx231xx/cx231xx-video.c +++ b/drivers/media/video/cx231xx/cx231xx-video.c | |||
@@ -893,9 +893,9 @@ static int check_dev(struct cx231xx *dev) | |||
893 | return 0; | 893 | return 0; |
894 | } | 894 | } |
895 | 895 | ||
896 | void get_scale(struct cx231xx *dev, | 896 | static void get_scale(struct cx231xx *dev, |
897 | unsigned int width, unsigned int height, | 897 | unsigned int width, unsigned int height, |
898 | unsigned int *hscale, unsigned int *vscale) | 898 | unsigned int *hscale, unsigned int *vscale) |
899 | { | 899 | { |
900 | unsigned int maxw = norm_maxw(dev); | 900 | unsigned int maxw = norm_maxw(dev); |
901 | unsigned int maxh = norm_maxh(dev); | 901 | unsigned int maxh = norm_maxh(dev); |
@@ -907,10 +907,6 @@ void get_scale(struct cx231xx *dev, | |||
907 | *vscale = (((unsigned long)maxh) << 12) / height - 4096L; | 907 | *vscale = (((unsigned long)maxh) << 12) / height - 4096L; |
908 | if (*vscale >= 0x4000) | 908 | if (*vscale >= 0x4000) |
909 | *vscale = 0x3fff; | 909 | *vscale = 0x3fff; |
910 | |||
911 | dev->hscale = *hscale; | ||
912 | dev->vscale = *vscale; | ||
913 | |||
914 | } | 910 | } |
915 | 911 | ||
916 | /* ------------------------------------------------------------------ | 912 | /* ------------------------------------------------------------------ |
diff --git a/drivers/media/video/cx231xx/cx231xx.h b/drivers/media/video/cx231xx/cx231xx.h index e38eb2d425f7..a0f823ac6b8d 100644 --- a/drivers/media/video/cx231xx/cx231xx.h +++ b/drivers/media/video/cx231xx/cx231xx.h | |||
@@ -722,9 +722,6 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input); | |||
722 | int cx231xx_set_decoder_video_input(struct cx231xx *dev, u8 pin_type, u8 input); | 722 | int cx231xx_set_decoder_video_input(struct cx231xx *dev, u8 pin_type, u8 input); |
723 | int cx231xx_do_mode_ctrl_overrides(struct cx231xx *dev); | 723 | int cx231xx_do_mode_ctrl_overrides(struct cx231xx *dev); |
724 | int cx231xx_set_audio_input(struct cx231xx *dev, u8 input); | 724 | int cx231xx_set_audio_input(struct cx231xx *dev, u8 input); |
725 | void get_scale(struct cx231xx *dev, | ||
726 | unsigned int width, unsigned int height, | ||
727 | unsigned int *hscale, unsigned int *vscale); | ||
728 | 725 | ||
729 | /* Provided by cx231xx-video.c */ | 726 | /* Provided by cx231xx-video.c */ |
730 | int cx231xx_register_extension(struct cx231xx_ops *dev); | 727 | int cx231xx_register_extension(struct cx231xx_ops *dev); |