diff options
-rw-r--r-- | drivers/staging/media/solo6x10/solo6x10-disp.c | 3 | ||||
-rw-r--r-- | drivers/staging/media/solo6x10/solo6x10.h | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/staging/media/solo6x10/solo6x10-disp.c b/drivers/staging/media/solo6x10/solo6x10-disp.c index 78070c843f90..32d9953bc36e 100644 --- a/drivers/staging/media/solo6x10/solo6x10-disp.c +++ b/drivers/staging/media/solo6x10/solo6x10-disp.c @@ -205,10 +205,11 @@ int solo_set_motion_block(struct solo_dev *solo_dev, u8 ch, const struct solo_motion_thresholds *thresholds) { u32 off = SOLO_MOT_FLAG_AREA + ch * SOLO_MOT_THRESH_SIZE * 2; - u16 buf[SOLO_MOTION_SZ]; + u16 buf[64]; int x, y; int ret = 0; + memset(buf, 0, sizeof(buf)); for (y = 0; y < SOLO_MOTION_SZ; y++) { for (x = 0; x < SOLO_MOTION_SZ; x++) buf[x] = cpu_to_le16(thresholds->thresholds[y][x]); diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h index 3526d6b56c5c..6f91d2e34b2a 100644 --- a/drivers/staging/media/solo6x10/solo6x10.h +++ b/drivers/staging/media/solo6x10/solo6x10.h @@ -113,8 +113,14 @@ * each sample representing 16x16 pixels of the source. In * effect, 44x30 samples are used for NTSC, and 44x36 for PAL. * The 5th sample on the 10th row is (10*64)+5 = 645. + * + * Using a 64x64 array will result in a problem on some architectures like + * the powerpc where the size of the argument is limited to 13 bits. + * Since both PAL and NTSC do not use the full table anyway I've chosen + * to limit the array to 45x45 (45*16 = 720, which is the maximum PAL/NTSC + * width). */ -#define SOLO_MOTION_SZ (64) +#define SOLO_MOTION_SZ (45) struct solo_motion_thresholds { __u16 thresholds[SOLO_MOTION_SZ][SOLO_MOTION_SZ]; }; |