From 18e083f21766e1361b39e47109a05669e495627d Mon Sep 17 00:00:00 2001 From: arpi Date: Thu, 25 Jul 2002 21:34:24 +0000 Subject: - fixed overflow by +-0x80 - save brightness/contrast values, so they won't be reset at next file git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6799 b3059339-0415-0410-9bf9-f77b7e298cf2 --- drivers/mga_vid.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'drivers') diff --git a/drivers/mga_vid.c b/drivers/mga_vid.c index 68a39ac877..e5d7f141c5 100644 --- a/drivers/mga_vid.c +++ b/drivers/mga_vid.c @@ -767,10 +767,8 @@ switch(config->format){ //Enable contrast and brightness control regs.besglobctl |= (1<<5) + (1<<7); - // brightness ; default is 0x7f; - regs.beslumactl = (mga_brightness << 16); - // contrast: - regs.beslumactl|= ((mga_contrast+0x80)<<0); + // brightness (-128..127) && contrast (0..255) + regs.beslumactl = (mga_brightness << 16) | ((mga_contrast+0x80)&0xFFFF); //Setup destination window boundaries besleft = x > 0 ? x : 0; @@ -1263,7 +1261,10 @@ static int mga_vid_ioctl(struct inode *inode, struct file *file, unsigned int cm break; case MGA_VID_GET_LUMA: - tmp = regs.beslumactl - 0x80; + //tmp = regs.beslumactl; + //tmp = (tmp&0xFFFF0000) | (((tmp&0xFFFF) - 0x80)&0xFFFF); + tmp = (mga_brightness << 16) | (mga_contrast&0xFFFF); + if (copy_to_user((uint32_t *) arg, &tmp, sizeof(uint32_t))) { printk(KERN_ERR "mga_vid: failed copy %p to userspace %p\n", @@ -1274,7 +1275,9 @@ static int mga_vid_ioctl(struct inode *inode, struct file *file, unsigned int cm case MGA_VID_SET_LUMA: tmp = arg; - regs.beslumactl = tmp + 0x80; + mga_brightness=tmp>>16; mga_contrast=tmp&0xFFFF; + //regs.beslumactl = (tmp&0xFFFF0000) | ((tmp + 0x80)&0xFFFF); + regs.beslumactl = (mga_brightness << 16) | ((mga_contrast+0x80)&0xFFFF); mga_vid_write_regs(0); break; -- cgit v1.2.3