The maximum supported scaling value for registers 0x30+0x31 (horizontal scaling)
and 0x32+0x33 (vertical scaling) is 0x3fff, which corresponds to 20% of the
input frame size.

Signed-off-by: Frank Schäfer <fschaefer....@googlemail.com>
---
 drivers/media/usb/em28xx/em28xx-reg.h   |    2 ++
 drivers/media/usb/em28xx/em28xx-video.c |    8 ++++----
 2 Dateien geändert, 6 Zeilen hinzugefügt(+), 4 Zeilen entfernt(-)

diff --git a/drivers/media/usb/em28xx/em28xx-reg.h 
b/drivers/media/usb/em28xx/em28xx-reg.h
index 885089e..0a3cb04 100644
--- a/drivers/media/usb/em28xx/em28xx-reg.h
+++ b/drivers/media/usb/em28xx/em28xx-reg.h
@@ -152,6 +152,8 @@
 #define EM28XX_R31_HSCALEHIGH  0x31
 #define EM28XX_R32_VSCALELOW   0x32
 #define EM28XX_R33_VSCALEHIGH  0x33
+#define   EM28XX_HVSCALE_MAX   0x3fff /* => 20% */
+
 #define EM28XX_R34_VBI_START_H 0x34
 #define EM28XX_R35_VBI_START_V 0x35
 #define EM28XX_R36_VBI_WIDTH   0x36
diff --git a/drivers/media/usb/em28xx/em28xx-video.c 
b/drivers/media/usb/em28xx/em28xx-video.c
index 6d26123..9451e1e 100644
--- a/drivers/media/usb/em28xx/em28xx-video.c
+++ b/drivers/media/usb/em28xx/em28xx-video.c
@@ -807,12 +807,12 @@ static void get_scale(struct em28xx *dev,
        unsigned int          maxh = norm_maxh(dev);
 
        *hscale = (((unsigned long)maxw) << 12) / width - 4096L;
-       if (*hscale >= 0x4000)
-               *hscale = 0x3fff;
+       if (*hscale > EM28XX_HVSCALE_MAX)
+               *hscale = EM28XX_HVSCALE_MAX;
 
        *vscale = (((unsigned long)maxh) << 12) / height - 4096L;
-       if (*vscale >= 0x4000)
-               *vscale = 0x3fff;
+       if (*vscale > EM28XX_HVSCALE_MAX)
+               *vscale = EM28XX_HVSCALE_MAX;
 }
 
 /* ------------------------------------------------------------------
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to