summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-25 21:34:24 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-25 21:34:24 +0000
commit18e083f21766e1361b39e47109a05669e495627d (patch)
tree5a321adcb17be2d214cc1ee537d3bc8fd08933c0 /drivers
parentd462fc4317bb04776ea62d29f9020c58260caaaa (diff)
downloadmpv-18e083f21766e1361b39e47109a05669e495627d.tar.bz2
mpv-18e083f21766e1361b39e47109a05669e495627d.tar.xz
- 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
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mga_vid.c15
1 files changed, 9 insertions, 6 deletions
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;