summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authoreyck <eyck@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-02-02 20:49:52 +0000
committereyck <eyck@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-02-02 20:49:52 +0000
commit22dfed32b51ce8e739ee284e31d1e1038de95c17 (patch)
tree9dc044355438aa1607aca2f72ceaa56b36e2c2f0 /drivers
parent98f66c1fe20161d9f1ddbd7a4e3939ba3aff8ef9 (diff)
downloadmpv-22dfed32b51ce8e739ee284e31d1e1038de95c17.tar.bz2
mpv-22dfed32b51ce8e739ee284e31d1e1038de95c17.tar.xz
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
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mga_vid.c42
1 files changed, 38 insertions, 4 deletions
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 <aholtzma@engr.uvic.ca>");
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)