From 22dfed32b51ce8e739ee284e31d1e1038de95c17 Mon Sep 17 00:00:00 2001 From: eyck Date: Sat, 2 Feb 2002 20:49:52 +0000 Subject: framework for settings modifications like in radeon_vid ( /dev/mga_vid can be written to ). Brightness and chroma control. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4484 b3059339-0415-0410-9bf9-f77b7e298cf2 --- drivers/mga_vid.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'drivers') diff --git a/drivers/mga_vid.c b/drivers/mga_vid.c index accdb2721b..db095044c0 100644 --- a/drivers/mga_vid.c +++ b/drivers/mga_vid.c @@ -88,6 +88,12 @@ MODULE_AUTHOR("Aaron Holtzman "); MODULE_LICENSE("GPL"); #endif +// WARNING - eyck changes +#define PARAM_BRIGHTNESS "brightness=" +#define PARAM_SATURATION "saturation=" +#define PARAM_BLACKIE "blackie=" +// end eyck + typedef struct bes_registers_s { //BES Control @@ -152,6 +158,11 @@ typedef struct bes_registers_s //BES Field 2 weight start uint32_t besv2wght; + + //configurable stuff + int brightness; + int blackie; + } bes_registers_t; static bes_registers_t regs; @@ -680,11 +691,16 @@ switch(config->format){ return -1; } + // setting black&white mode + regs.besctl|=(regs.blackie<<20); // TODO: check g200 & g400 (maybe tomorrow) - //Disable contrast and brightness control + //Enable contrast and brightness control regs.besglobctl |= (1<<5) + (1<<7); - regs.beslumactl = (0x7f << 16) + (0x80<<0); - regs.beslumactl = 0x80<<0; + + // brightness ; default is 0x7f; + regs.beslumactl = (regs.brightness << 16); + // contrast: + regs.beslumactl|= (0x80<<0); //Setup destination window boundaries besleft = x > 0 ? x : 0; @@ -1304,7 +1320,25 @@ static ssize_t mga_vid_read(struct file *file, char *buf, size_t count, loff_t * static ssize_t mga_vid_write(struct file *file, const char *buf, size_t count, loff_t *ppos) { - return -EINVAL; + // WARNING: eyck changes + if(memcmp(buf,PARAM_BRIGHTNESS,min(count,strlen(PARAM_BRIGHTNESS))) == 0) + { + short brightness; + brightness=simple_strtol(&buf[strlen(PARAM_BRIGHTNESS)],NULL,10); + if (brightness>127 || brightness<-128) { brightness=0;} +// printk(KERN_DEBUG "mga_vid: brightness modified ( %d ) \n",brightness); + regs.brightness=brightness; + } else + if(memcmp(buf,PARAM_BLACKIE,min(count,strlen(PARAM_BLACKIE))) == 0) + { + short blackie; + blackie=simple_strtol(&buf[strlen(PARAM_BLACKIE)],NULL,10); +// printk(KERN_DEBUG "mga_vid: shadow mode: ( %d ) \n",blackie); + regs.blackie=(blackie>0)?1:0; + } else count = -EIO; + // TODO: reset settings + return count; +// return -EINVAL; } static int mga_vid_mmap(struct file *file, struct vm_area_struct *vma) -- cgit v1.2.3