gatos-cvs Mailing List for GATOS (Page 6)
Status: Beta
Brought to you by:
volodya
You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(10) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(35) |
Feb
(67) |
Mar
(41) |
Apr
(4) |
May
(7) |
Jun
(9) |
Jul
(7) |
Aug
(2) |
Sep
(9) |
Oct
(3) |
Nov
(5) |
Dec
(30) |
| 2004 |
Jan
(11) |
Feb
|
Mar
|
Apr
|
May
(9) |
Jun
(6) |
Jul
(8) |
Aug
(3) |
Sep
(5) |
Oct
(15) |
Nov
(25) |
Dec
(14) |
| 2005 |
Jan
(11) |
Feb
(5) |
Mar
(8) |
Apr
(5) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
(3) |
Dec
|
| 2006 |
Jan
(2) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(1) |
Dec
(2) |
| 2007 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|
From: <gat...@li...> - 2004-07-14 05:24:43
|
Update of /cvsroot/gatos/ati.2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9414 Modified Files: fi1236.c fi1236.h radeon_video.c Log Message: Start support for FI1236/W. Index: fi1236.c =================================================================== RCS file: /cvsroot/gatos/ati.2/fi1236.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- fi1236.c 30 Jan 2003 20:35:00 -0000 1.25 +++ fi1236.c 14 Jul 2004 05:24:34 -0000 1.26 @@ -22,6 +22,8 @@ { 623 ,16*45.75 ,16*855.25 ,16*170 ,16*450 ,0xA0 ,0x90, 0x30, 0x8e }, /* 5 - FI1256 */ { 623 ,16*49.75 ,16*863.25 ,16*170 ,16*450 ,0xA0 ,0x90, 0x30, 0x8e } + /* 6 - FI1236W */ + { 733 ,884 ,12820 ,2516 ,7220 ,0x1 ,0x2, 0x4, 0x8e }, }; Index: fi1236.h =================================================================== RCS file: /cvsroot/gatos/ati.2/fi1236.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- fi1236.h 20 Jan 2003 01:52:25 -0000 1.14 +++ fi1236.h 14 Jul 2004 05:24:34 -0000 1.15 @@ -69,6 +69,7 @@ #define TUNER_TYPE_MT2032 3 #define TUNER_TYPE_FI1246 4 #define TUNER_TYPE_FI1256 5 +#define TUNER_TYPE_FI1236W 6 #define FI1236_ADDR(a) ((a)->d.SlaveAddr) Index: radeon_video.c =================================================================== RCS file: /cvsroot/gatos/ati.2/radeon_video.c,v retrieving revision 1.100 retrieving revision 1.101 diff -u -d -r1.100 -r1.101 --- radeon_video.c 18 Jan 2004 16:00:38 -0000 1.100 +++ radeon_video.c 14 Jul 2004 05:24:34 -0000 1.101 @@ -1183,7 +1183,7 @@ {"Philips FI1236 (or compatible)" , TUNER_TYPE_FI1236}, {"TEMIC-FN5AL" , TUNER_TYPE_TEMIC_FN5AL}, {"FQ1216ME/P" , TUNER_TYPE_FI1216}, - {"FI1236W" , TUNER_TYPE_FI1236}, + {"FI1236W" , TUNER_TYPE_FI1236W}, {"Alps TSBH5" , -1}, {"Alps TSCxx" , -1}, {"Alps TSCH5 FM" , -1}, |
|
From: <gat...@li...> - 2004-07-10 13:27:39
|
Update of /cvsroot/gatos/avview In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21905 Modified Files: vbi.c Log Message: gcc 3.4 compilation fix from Andreas Jochens, contributed by Colin Watson. Index: vbi.c =================================================================== RCS file: /cvsroot/gatos/avview/vbi.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- vbi.c 3 Jan 2004 18:21:19 -0000 1.10 +++ vbi.c 10 Jul 2004 13:27:31 -0000 1.11 @@ -98,10 +98,8 @@ Tcl_VarEval(data->interp, data->event_command, " aspect {}", NULL); break; - default: } break; - default: } } |
|
From: <gat...@li...> - 2004-07-08 16:30:15
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26837 Modified Files: r128_accel.c Log Message: Apply fix by Stanislav Brabec. Index: r128_accel.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/r128_accel.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- r128_accel.c 20 May 2004 01:37:59 -0000 1.2 +++ r128_accel.c 8 Jul 2004 16:30:06 -0000 1.3 @@ -231,6 +231,10 @@ R128InfoPtr info = R128PTR(pScrn); int ret, i; + if(!info->CCEInUse){ + R128WaitForIdle(pScrn); + return; + } FLUSH_RING(); for (;;) { |
|
From: <gat...@li...> - 2004-06-29 05:49:08
|
Update of /cvsroot/gatos/km In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29480 Modified Files: km_v4l.c Log Message: 2.6 kernels implementation of the v4l Indent code accorging with the Linux kernel guidelines. See http://www.linuxjournal.com/article.php?sid=5780. Get rid of the #ifdef LINUX_2_6. This file is only going to be used for 2.6 kernels. Index: km_v4l.c =================================================================== RCS file: /cvsroot/gatos/km/km_v4l.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- km_v4l.c 11 Jan 2004 21:10:23 -0000 1.46 +++ km_v4l.c 29 Jun 2004 05:48:55 -0000 1.47 @@ -1,19 +1,16 @@ +/* -*- linux-c -*- */ /* km preliminary version - (C) Vladimir Dergachev 2001-2003 +(C) Vladimir Dergachev 2001-2003 - GNU Public License +GNU Public License */ #include <linux/autoconf.h> #if defined(MODULE) && defined(CONFIG_MODVERSIONS) #define MODVERSIONS -#ifdef LINUX_2_6 #include <config/modversions.h> -#else -#include <linux/modversions.h> -#endif #endif #include <linux/types.h> @@ -25,110 +22,84 @@ #include <linux/init.h> #include <linux/pci.h> #include <linux/interrupt.h> -#ifndef LINUX_2_6 -#include <linux/wrapper.h> -#endif #include <linux/videodev.h> #include "km.h" #include "km_memory.h" -#ifdef LINUX_2_6 static int km_v4l_open(struct inode *inode, struct file *file) { - struct video_device *dev = video_devdata(file); -#else -static int km_v4l_open(struct video_device *dev, int flags) -{ -#endif + struct video_device *dev = video_devdata(file); -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; -int result; + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + int result; -kms->kmfpd=open_km_device(kms->kmd); -if(kms->kmfpd==NULL)return -EINVAL; + kms->kmfpd=open_km_device(kms->kmd); + if(kms->kmfpd==NULL)return -EINVAL; -if((result=km_fo_control_perform_command(kms->kmfpd,"VIDEO_STREAM_ACTIVE=1", 1000))!=0){ - close_km_device(kms->kmfpd); - kms->kmfpd=NULL; - return result; + if((result=km_fo_control_perform_command(kms->kmfpd,"VIDEO_STREAM_ACTIVE=1", 1000))!=0){ + close_km_device(kms->kmfpd); + kms->kmfpd=NULL; + return result; } -kms->v4l_buf_parity=0; -kms->v4l_kdufpd=km_data_create_kdufpd(kms->capture.du); -if(kms->v4l_kdufpd==NULL){ - close_km_device(kms->kmfpd); - kms->kmfpd=NULL; - return -EINVAL; + kms->v4l_buf_parity=0; + kms->v4l_kdufpd=km_data_create_kdufpd(kms->capture.du); + if(kms->v4l_kdufpd==NULL){ + close_km_device(kms->kmfpd); + kms->kmfpd=NULL; + return -EINVAL; } -return 0; + return 0; } -#ifdef LINUX_2_6 static int km_v4l_close(struct inode *inode, struct file *file) { - struct video_device *dev = video_devdata(file); -#else -static void km_v4l_close(struct video_device *dev) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + struct video_device *dev = video_devdata(file); -km_data_destroy_kdufpd(kms->v4l_kdufpd); -kms->v4l_kdufpd=NULL; + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; -close_km_device(kms->kmfpd); -kms->kmfpd=NULL; - return 0; + km_data_destroy_kdufpd(kms->v4l_kdufpd); + kms->v4l_kdufpd=NULL; + + close_km_device(kms->kmfpd); + kms->kmfpd=NULL; + return 0; } -#ifdef LINUX_2_6 static ssize_t km_v4l_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { -#else -static long km_v4l_write(struct video_device *v, const char *buf, unsigned long count, int nonblock) -{ -#endif -return -EINVAL; + return -EINVAL; } -#ifdef LINUX_2_6 static ssize_t km_v4l_read(struct file *file, char *buf, size_t count, loff_t *ppos) { - struct video_device *v = video_devdata(file); -int done, nonblock = O_NONBLOCK&(file->f_flags); -#else -static long km_v4l_read(struct video_device *v, char *buf, unsigned long count, int nonblock) -{ -int done; -#endif -KM_STRUCT *kms=(KM_STRUCT *)v->priv; -KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd; + struct video_device *v = video_devdata(file); + int done, nonblock = O_NONBLOCK&(file->f_flags); -done=km_data_generic_stream_read(kdufpd, &(kms->capture.dvb), - buf, count, nonblock, - kms->v4l_buf_parity, 1); + KM_STRUCT *kms=(KM_STRUCT *)v->priv; + KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd; + + done=km_data_generic_stream_read(kdufpd, &(kms->capture.dvb), + buf, count, nonblock, + kms->v4l_buf_parity, 1); -if((done > 0) && (kdufpd->bytes_read>=kms->capture.dvb.free[kdufpd->buffer])){ - kms->v4l_buf_parity=!kms->v4l_buf_parity; + if((done > 0) && (kdufpd->bytes_read>=kms->capture.dvb.free[kdufpd->buffer])){ + kms->v4l_buf_parity=!kms->v4l_buf_parity; } -return done; + return done; } -#ifdef LINUX_2_6 static int km_v4l_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long ul_arg) { - void *arg = (void *)ul_arg; - struct video_device *dev = video_devdata(file); -#else -static int km_v4l_ioctl(struct video_device *dev, unsigned int cmd, void *arg) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; -spin_lock(&(kms->kms_lock)); -switch(cmd){ + void *arg = (void *)ul_arg; + struct video_device *dev = video_devdata(file); + + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + spin_lock(&(kms->kms_lock)); + switch(cmd){ case VIDIOCGCAP:{ struct video_capability b; struct video_window vwin; @@ -147,7 +118,7 @@ if(copy_to_user(arg,&b,sizeof(b))) return -EFAULT; return 0; - } + } case VIDIOCGPICT:{ struct video_picture p; p.palette=VIDEO_PALETTE_YUV422; @@ -161,7 +132,7 @@ if(copy_to_user(arg, &p, sizeof(p))) return -EFAULT; return 0; - } + } case VIDIOCSPICT:{ struct video_picture p; spin_unlock(&(kms->kms_lock)); @@ -170,7 +141,7 @@ return -EFAULT; if(p.palette!=VIDEO_PALETTE_YUV422)return -EINVAL; return 0; - } + } case VIDIOCGWIN:{ struct video_window vwin; if(kms->get_window_parameters==NULL)return -EINVAL; @@ -180,7 +151,7 @@ if(copy_to_user(arg,&vwin,sizeof(vwin))) return -EFAULT; return 0; - } + } case VIDIOCSWIN: { struct video_window vwin, vwin1; if(kms->get_window_parameters==NULL)return -EINVAL; @@ -191,166 +162,135 @@ return -EFAULT; if((vwin.width!=vwin1.width)||(vwin.height!=vwin1.height)){ printk("km: /dev/video%d uses frame format %dx%d\n", - kms->vd.minor, vwin1.width, vwin1.height); + kms->vd.minor, vwin1.width, vwin1.height); return -EINVAL; - } - return 0; } + return 0; } -spin_unlock(&(kms->kms_lock)); -return -EINVAL; + } + spin_unlock(&(kms->kms_lock)); + return -EINVAL; } /* ignore this - it is bogus */ -#ifdef LINUX_2_6 static int km_v4l_mmap(struct file *file, struct vm_area_struct *vma) { - struct video_device *dev = video_devdata(file); -#else -static int km_v4l_mmap(struct video_device *dev, const char *adr, unsigned long size) -{ -unsigned long start=(unsigned long) adr; -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; -unsigned long page,pos; -KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd; -return -ENOMEM; + struct video_device *dev = video_devdata(file); + + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + unsigned long page,pos; + KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd; + return -ENOMEM; #if 0 -if (size>(kms->frame_info[FRAME_ODD].buf_size+kms->frame_info[FRAME_EVEN].buf_size)) - return -EINVAL; -if (!kms->frame_info[FRAME_ODD].buffer || !kms->frame_info[FRAME_EVEN].buffer) { + if (size>(kms->frame_info[FRAME_ODD].buf_size+kms->frame_info[FRAME_EVEN].buf_size)) + return -EINVAL; + if (!kms->frame_info[FRAME_ODD].buffer || !kms->frame_info[FRAME_EVEN].buffer) { /* if(fbuffer_alloc(kms)) */ - return -EINVAL; + return -EINVAL; } -frame=&(kms->frame_info[FRAME_ODD]); -pos=(unsigned long) kms->buffer[kdufpd->buffer]; -while(size>0){ - page = kvirt_to_pa(pos); - if(remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) - return -EAGAIN; + frame=&(kms->frame_info[FRAME_ODD]); + pos=(unsigned long) kms->buffer[kdufpd->buffer]; + while(size>0){ + page = kvirt_to_pa(pos); + if(remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) + return -EAGAIN; start+=PAGE_SIZE; pos+=PAGE_SIZE; size-=PAGE_SIZE; - if((pos-(unsigned long)kms->buffer[kdufpd->buffer])>frame->buf_size){ - frame=&(kms->frame_info[FRAME_EVEN]); - pos=(unsigned long)kms->buffer[kdufpd->buffer]; + if((pos-(unsigned long)kms->buffer[kdufpd->buffer])>frame->buf_size){ + frame=&(kms->frame_info[FRAME_EVEN]); + pos=(unsigned long)kms->buffer[kdufpd->buffer]; } } #endif -return 0; + return 0; } -#ifdef LINUX_2_6 static unsigned int km_v4l_poll(struct file *file, poll_table *wait) { - struct video_device *dev = video_devdata(file); -#else -static unsigned int km_v4l_poll(struct video_device *dev, struct file *file, - poll_table *wait) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + struct video_device *dev = video_devdata(file); -return km_data_generic_stream_poll(kms->v4l_kdufpd, &(kms->capture.dvb), file, wait); + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + + return km_data_generic_stream_poll(kms->v4l_kdufpd, &(kms->capture.dvb), file, wait); } -#ifdef LINUX_2_6 static int km_vbi_open(struct inode *inode, struct file *file) { - struct video_device *dev = video_devdata(file); -#else -static int km_vbi_open(struct video_device *dev, int flags) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; -int result; + struct video_device *dev = video_devdata(file); -if((result=start_vbi_capture(kms))<0)return result; + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + int result; -kms->vbi_buf_parity=1; -kms->vbi_kdufpd=km_data_create_kdufpd(kms->vbi.du); -if(kms->vbi_kdufpd==NULL){ - stop_vbi_capture(kms); - return -EINVAL; + if((result=start_vbi_capture(kms))<0)return result; + + kms->vbi_buf_parity=1; + kms->vbi_kdufpd=km_data_create_kdufpd(kms->vbi.du); + if(kms->vbi_kdufpd==NULL){ + stop_vbi_capture(kms); + return -EINVAL; } -return 0; + return 0; } -#ifdef LINUX_2_6 static int km_vbi_close(struct inode *inode, struct file *file) { - struct video_device *dev = video_devdata(file); -#else -static void km_vbi_close(struct video_device *dev) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + struct video_device *dev = video_devdata(file); -km_data_destroy_kdufpd(kms->vbi_kdufpd); -kms->vbi_kdufpd=NULL; -stop_vbi_capture(kms); + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + + km_data_destroy_kdufpd(kms->vbi_kdufpd); + kms->vbi_kdufpd=NULL; + stop_vbi_capture(kms); } -#ifdef LINUX_2_6 static ssize_t km_vbi_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) -#else -static long km_vbi_write(struct video_device *v, const char *buf, unsigned long count, int nonblock) -#endif { -return -EINVAL; + return -EINVAL; } -#ifdef LINUX_2_6 static ssize_t km_vbi_read(struct file *file, char *buf, size_t count, loff_t *ppos) { - struct video_device *v = video_devdata(file); - int done,r, nonblock = O_NONBLOCK&(file->f_flags); -#else -static long km_vbi_read(struct video_device *v, char *buf, unsigned long count, int nonblock) -{ -int done,r; -#endif -KM_STRUCT *kms=(KM_STRUCT *)v->priv; -KDU_FILE_PRIVATE_DATA *kdufpd=kms->vbi_kdufpd; + struct video_device *v = video_devdata(file); + int done,r, nonblock = O_NONBLOCK&(file->f_flags); + + KM_STRUCT *kms=(KM_STRUCT *)v->priv; + KDU_FILE_PRIVATE_DATA *kdufpd=kms->vbi_kdufpd; /* V4L reading apps *expect* to receive *two* full fields of data.. wacky ! The loop should really be in zvbi but I am too lazy to maintain yet another piece of software */ -done=0; -while(done<count){ - r=km_data_generic_stream_read(kdufpd, &(kms->vbi.dvb), - buf+done, count-done, nonblock, - kms->vbi_buf_parity, 1); - if((r > 0) && (kdufpd->bytes_read>=kms->vbi.dvb.free[kdufpd->buffer])){ - kms->vbi_buf_parity=!kms->vbi_buf_parity; + done=0; + while(done<count){ + r=km_data_generic_stream_read(kdufpd, &(kms->vbi.dvb), + buf+done, count-done, nonblock, + kms->vbi_buf_parity, 1); + if((r > 0) && (kdufpd->bytes_read>=kms->vbi.dvb.free[kdufpd->buffer])){ + kms->vbi_buf_parity=!kms->vbi_buf_parity; } - if(r>0)done+=r; - if(r<0)return r; - if(nonblock)return done; + if(r>0)done+=r; + if(r<0)return r; + if(nonblock)return done; } -return done; + return done; } #ifndef BTTV_VBISIZE #define BTTV_VBISIZE _IOR('v' , BASE_VIDIOCPRIVATE+8, int) #endif -#ifdef LINUX_2_6 static int km_vbi_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long ul_arg) { - void *arg = (void *)ul_arg; - struct video_device *dev = video_devdata(file); -#else -static int km_vbi_ioctl(struct video_device *dev, unsigned int cmd, void *arg) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; -long size; + void *arg = (void *)ul_arg; + struct video_device *dev = video_devdata(file); -if(kms->vbi_kdufpd==NULL)return -EINVAL; -switch(cmd){ + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + long size; + + if(kms->vbi_kdufpd==NULL)return -EINVAL; + switch(cmd){ case VIDIOCGCAP:{ struct video_capability b; @@ -361,15 +301,15 @@ if(copy_to_user(arg,&b,sizeof(b))) return -EFAULT; return 0; - } - case BTTV_VBISIZE: + } + case BTTV_VBISIZE: spin_lock(&(kms->kms_lock)); if(kms->get_vbi_buf_size==NULL)return -ENOTSUPP; size=kms->get_vbi_buf_size(kms); spin_unlock(&(kms->kms_lock)); return size; - case VIDIOCGVBIFMT: - { + case VIDIOCGVBIFMT: + { struct vbi_format vbi_f; vbi_f.sampling_rate=28636363; vbi_f.samples_per_line=kms->vbi_width; @@ -384,34 +324,28 @@ if(copy_to_user(arg,&vbi_f,sizeof(vbi_f))) return -EFAULT; return 0; - } - case VIDIOCSVBIFMT: + } + case VIDIOCSVBIFMT: return -EBUSY; - default: + default: return -EINVAL; } } -#ifdef LINUX_2_6 static unsigned int km_vbi_poll(struct file *file, poll_table *wait) { - struct video_device *dev = video_devdata(file); -#else -static unsigned int km_vbi_poll(struct video_device *dev, struct file *file, - poll_table *wait) -{ -#endif -KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + struct video_device *dev = video_devdata(file); -if(kms->vbi_kdufpd==NULL)return -EINVAL; -return km_data_generic_stream_poll(kms->vbi_kdufpd, &(kms->vbi.dvb), file, wait); + KM_STRUCT *kms=(KM_STRUCT *)dev->priv; + + if(kms->vbi_kdufpd==NULL)return -EINVAL; + return km_data_generic_stream_poll(kms->vbi_kdufpd, &(kms->vbi.dvb), file, wait); } #ifndef VID_HARDWARE_KM #define VID_HARDWARE_KM 100 #endif -#ifdef LINUX_2_6 static struct file_operations km_v4l_fops = { .owner = THIS_MODULE, .open = km_v4l_open, @@ -423,7 +357,6 @@ .poll = km_v4l_poll, .llseek = no_llseek }; -#endif static struct video_device km_v4l_template= { @@ -431,21 +364,10 @@ name: "Km", type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT, hardware: VID_HARDWARE_KM, -#ifdef LINUX_2_6 fops: &km_v4l_fops, -#else - open: km_v4l_open, - close: km_v4l_close, - read: km_v4l_read, - write: km_v4l_write, - ioctl: km_v4l_ioctl, - poll: km_v4l_poll, - mmap: km_v4l_mmap, -#endif minor: -1, }; -#ifdef LINUX_2_6 static struct file_operations km_vbi_fops = { .owner = THIS_MODULE, .open = km_vbi_open, @@ -456,7 +378,6 @@ .poll = km_vbi_poll, .llseek = no_llseek }; -#endif static struct video_device km_v4l_vbi_template= { @@ -464,35 +385,27 @@ name: "Km", type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT, hardware: VID_HARDWARE_KM, -#ifdef LINUX_2_6 fops: &km_vbi_fops, -#else - open: km_vbi_open, - close: km_vbi_close, - read: km_vbi_read, - ioctl: km_vbi_ioctl, - poll: km_vbi_poll, -#endif minor: -1, }; void init_km_v4l(KM_STRUCT *kms) { -memcpy(&(kms->vd), &km_v4l_template, sizeof(km_v4l_template)); -kms->vd.priv=kms; -memcpy(&(kms->vbi_vd), &km_v4l_vbi_template, sizeof(km_v4l_vbi_template)); -kms->vbi_vd.priv=kms; + memcpy(&(kms->vd), &km_v4l_template, sizeof(km_v4l_template)); + kms->vd.priv=kms; + memcpy(&(kms->vbi_vd), &km_v4l_vbi_template, sizeof(km_v4l_vbi_template)); + kms->vbi_vd.priv=kms; -if(kms->is_capture_active!=NULL) - video_register_device(&(kms->vd), VFL_TYPE_GRABBER, -1); -if(kms->is_vbi_active!=NULL) - video_register_device(&(kms->vbi_vd), VFL_TYPE_VBI, -1); + if(kms->is_capture_active!=NULL) + video_register_device(&(kms->vd), VFL_TYPE_GRABBER, -1); + if(kms->is_vbi_active!=NULL) + video_register_device(&(kms->vbi_vd), VFL_TYPE_VBI, -1); } void cleanup_km_v4l(KM_STRUCT *kms) { -if(kms->is_capture_active!=NULL) - video_unregister_device(&(kms->vd)); -if(kms->is_vbi_active!=NULL) - video_unregister_device(&(kms->vbi_vd)); + if(kms->is_capture_active!=NULL) + video_unregister_device(&(kms->vd)); + if(kms->is_vbi_active!=NULL) + video_unregister_device(&(kms->vbi_vd)); } |
|
From: <gat...@li...> - 2004-06-29 04:54:29
|
Update of /cvsroot/gatos/km In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21726 Modified Files: Makefile-2.4 Log Message: Change 2.4 kernels makefile to use km_v4l_24.c Index: Makefile-2.4 =================================================================== RCS file: /cvsroot/gatos/km/Makefile-2.4,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile-2.4 1 Feb 2004 19:20:36 -0000 1.1 +++ Makefile-2.4 29 Jun 2004 04:54:05 -0000 1.2 @@ -28,8 +28,8 @@ km_api_drv.o: $(KM_API_OBJS) ld -r $(KM_API_OBJS) -o km_api_drv.o -km_v4l.o: km_v4l.c - $(CC) $(CFLAGS) -DMODULE -D__KERNEL__ -DLINUX -I$(LINUXINCLUDES) -c km_v4l.c +km_v4l.o: km_v4l_24.c + $(CC) $(CFLAGS) -DMODULE -D__KERNEL__ -DLINUX -I$(LINUXINCLUDES) -c km_v4l_24.c km_memory.o: km_memory.c $(CC) $(CFLAGS) -DMODULE -D__KERNEL__ -DLINUX -I$(LINUXINCLUDES) -c km_memory.c |
|
From: <gat...@li...> - 2004-06-29 04:32:50
|
Update of /cvsroot/gatos/km In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18735 Added Files: km_v4l_24.c Log Message: v4l implementation specific to the 2.4 kernels --- NEW FILE: km_v4l_24.c --- /* km preliminary version (C) Vladimir Dergachev 2001-2003 GNU Public License */ #include <linux/autoconf.h> #if defined(MODULE) && defined(CONFIG_MODVERSIONS) #define MODVERSIONS #ifdef LINUX_2_6 #include <config/modversions.h> #else #include <linux/modversions.h> #endif #endif #include <linux/types.h> #include <linux/config.h> #include <linux/version.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/pci.h> #include <linux/interrupt.h> #ifndef LINUX_2_6 #include <linux/wrapper.h> #endif #include <linux/videodev.h> #include "km.h" #include "km_memory.h" #ifdef LINUX_2_6 static int km_v4l_open(struct inode *inode, struct file *file) { struct video_device *dev = video_devdata(file); #else static int km_v4l_open(struct video_device *dev, int flags) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; int result; kms->kmfpd=open_km_device(kms->kmd); if(kms->kmfpd==NULL)return -EINVAL; if((result=km_fo_control_perform_command(kms->kmfpd,"VIDEO_STREAM_ACTIVE=1", 1000))!=0){ close_km_device(kms->kmfpd); kms->kmfpd=NULL; return result; } kms->v4l_buf_parity=0; kms->v4l_kdufpd=km_data_create_kdufpd(kms->capture.du); if(kms->v4l_kdufpd==NULL){ close_km_device(kms->kmfpd); kms->kmfpd=NULL; return -EINVAL; } return 0; } #ifdef LINUX_2_6 static int km_v4l_close(struct inode *inode, struct file *file) { struct video_device *dev = video_devdata(file); #else static void km_v4l_close(struct video_device *dev) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; km_data_destroy_kdufpd(kms->v4l_kdufpd); kms->v4l_kdufpd=NULL; close_km_device(kms->kmfpd); kms->kmfpd=NULL; return 0; } #ifdef LINUX_2_6 static ssize_t km_v4l_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { #else static long km_v4l_write(struct video_device *v, const char *buf, unsigned long count, int nonblock) { #endif return -EINVAL; } #ifdef LINUX_2_6 static ssize_t km_v4l_read(struct file *file, char *buf, size_t count, loff_t *ppos) { struct video_device *v = video_devdata(file); int done, nonblock = O_NONBLOCK&(file->f_flags); #else static long km_v4l_read(struct video_device *v, char *buf, unsigned long count, int nonblock) { int done; #endif KM_STRUCT *kms=(KM_STRUCT *)v->priv; KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd; done=km_data_generic_stream_read(kdufpd, &(kms->capture.dvb), buf, count, nonblock, kms->v4l_buf_parity, 1); if((done > 0) && (kdufpd->bytes_read>=kms->capture.dvb.free[kdufpd->buffer])){ kms->v4l_buf_parity=!kms->v4l_buf_parity; } return done; } #ifdef LINUX_2_6 static int km_v4l_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long ul_arg) { void *arg = (void *)ul_arg; struct video_device *dev = video_devdata(file); #else static int km_v4l_ioctl(struct video_device *dev, unsigned int cmd, void *arg) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; spin_lock(&(kms->kms_lock)); switch(cmd){ case VIDIOCGCAP:{ struct video_capability b; struct video_window vwin; strcpy(b.name,kms->vd.name); b.type = VID_TYPE_CAPTURE; if(kms->get_window_parameters==NULL)return -EINVAL; kms->get_window_parameters(kms, &(vwin)); spin_unlock(&(kms->kms_lock)); b.channels = 1; b.audios = 0; b.maxwidth = vwin.width; b.maxheight = vwin.height; b.minwidth = vwin.width; b.minheight = vwin.height; if(copy_to_user(arg,&b,sizeof(b))) return -EFAULT; return 0; } case VIDIOCGPICT:{ struct video_picture p; p.palette=VIDEO_PALETTE_YUV422; p.brightness=32768; p.hue=32768; p.colour=32768; p.whiteness=32768; p.depth=16; spin_unlock(&(kms->kms_lock)); if(copy_to_user(arg, &p, sizeof(p))) return -EFAULT; return 0; } case VIDIOCSPICT:{ struct video_picture p; spin_unlock(&(kms->kms_lock)); if(copy_from_user(&p, arg,sizeof(p))) return -EFAULT; if(p.palette!=VIDEO_PALETTE_YUV422)return -EINVAL; return 0; } case VIDIOCGWIN:{ struct video_window vwin; if(kms->get_window_parameters==NULL)return -EINVAL; kms->get_window_parameters(kms, &(vwin)); spin_unlock(&(kms->kms_lock)); if(copy_to_user(arg,&vwin,sizeof(vwin))) return -EFAULT; return 0; } case VIDIOCSWIN: { struct video_window vwin, vwin1; if(kms->get_window_parameters==NULL)return -EINVAL; kms->get_window_parameters(kms, &(vwin1)); spin_unlock(&(kms->kms_lock)); if(copy_from_user(&vwin, arg, sizeof(vwin))) return -EFAULT; if((vwin.width!=vwin1.width)||(vwin.height!=vwin1.height)){ printk("km: /dev/video%d uses frame format %dx%d\n", kms->vd.minor, vwin1.width, vwin1.height); return -EINVAL; } return 0; } } spin_unlock(&(kms->kms_lock)); return -EINVAL; } /* ignore this - it is bogus */ #ifdef LINUX_2_6 static int km_v4l_mmap(struct file *file, struct vm_area_struct *vma) { struct video_device *dev = video_devdata(file); #else static int km_v4l_mmap(struct video_device *dev, const char *adr, unsigned long size) { unsigned long start=(unsigned long) adr; #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; unsigned long page,pos; KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd; return -ENOMEM; #if 0 if (size>(kms->frame_info[FRAME_ODD].buf_size+kms->frame_info[FRAME_EVEN].buf_size)) return -EINVAL; if (!kms->frame_info[FRAME_ODD].buffer || !kms->frame_info[FRAME_EVEN].buffer) { /* if(fbuffer_alloc(kms)) */ return -EINVAL; } frame=&(kms->frame_info[FRAME_ODD]); pos=(unsigned long) kms->buffer[kdufpd->buffer]; while(size>0){ page = kvirt_to_pa(pos); if(remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) return -EAGAIN; start+=PAGE_SIZE; pos+=PAGE_SIZE; size-=PAGE_SIZE; if((pos-(unsigned long)kms->buffer[kdufpd->buffer])>frame->buf_size){ frame=&(kms->frame_info[FRAME_EVEN]); pos=(unsigned long)kms->buffer[kdufpd->buffer]; } } #endif return 0; } #ifdef LINUX_2_6 static unsigned int km_v4l_poll(struct file *file, poll_table *wait) { struct video_device *dev = video_devdata(file); #else static unsigned int km_v4l_poll(struct video_device *dev, struct file *file, poll_table *wait) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; return km_data_generic_stream_poll(kms->v4l_kdufpd, &(kms->capture.dvb), file, wait); } #ifdef LINUX_2_6 static int km_vbi_open(struct inode *inode, struct file *file) { struct video_device *dev = video_devdata(file); #else static int km_vbi_open(struct video_device *dev, int flags) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; int result; if((result=start_vbi_capture(kms))<0)return result; kms->vbi_buf_parity=1; kms->vbi_kdufpd=km_data_create_kdufpd(kms->vbi.du); if(kms->vbi_kdufpd==NULL){ stop_vbi_capture(kms); return -EINVAL; } return 0; } #ifdef LINUX_2_6 static int km_vbi_close(struct inode *inode, struct file *file) { struct video_device *dev = video_devdata(file); #else static void km_vbi_close(struct video_device *dev) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; km_data_destroy_kdufpd(kms->vbi_kdufpd); kms->vbi_kdufpd=NULL; stop_vbi_capture(kms); } #ifdef LINUX_2_6 static ssize_t km_vbi_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) #else static long km_vbi_write(struct video_device *v, const char *buf, unsigned long count, int nonblock) #endif { return -EINVAL; } #ifdef LINUX_2_6 static ssize_t km_vbi_read(struct file *file, char *buf, size_t count, loff_t *ppos) { struct video_device *v = video_devdata(file); int done,r, nonblock = O_NONBLOCK&(file->f_flags); #else static long km_vbi_read(struct video_device *v, char *buf, unsigned long count, int nonblock) { int done,r; #endif KM_STRUCT *kms=(KM_STRUCT *)v->priv; KDU_FILE_PRIVATE_DATA *kdufpd=kms->vbi_kdufpd; /* V4L reading apps *expect* to receive *two* full fields of data.. wacky ! The loop should really be in zvbi but I am too lazy to maintain yet another piece of software */ done=0; while(done<count){ r=km_data_generic_stream_read(kdufpd, &(kms->vbi.dvb), buf+done, count-done, nonblock, kms->vbi_buf_parity, 1); if((r > 0) && (kdufpd->bytes_read>=kms->vbi.dvb.free[kdufpd->buffer])){ kms->vbi_buf_parity=!kms->vbi_buf_parity; } if(r>0)done+=r; if(r<0)return r; if(nonblock)return done; } return done; } #ifndef BTTV_VBISIZE #define BTTV_VBISIZE _IOR('v' , BASE_VIDIOCPRIVATE+8, int) #endif #ifdef LINUX_2_6 static int km_vbi_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long ul_arg) { void *arg = (void *)ul_arg; struct video_device *dev = video_devdata(file); #else static int km_vbi_ioctl(struct video_device *dev, unsigned int cmd, void *arg) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; long size; if(kms->vbi_kdufpd==NULL)return -EINVAL; switch(cmd){ case VIDIOCGCAP:{ struct video_capability b; memset(&b, 0, sizeof(b)); strcpy(b.name,kms->vd.name); b.type = VID_TYPE_CAPTURE | VID_TYPE_TELETEXT; if(copy_to_user(arg,&b,sizeof(b))) return -EFAULT; return 0; } case BTTV_VBISIZE: spin_lock(&(kms->kms_lock)); if(kms->get_vbi_buf_size==NULL)return -ENOTSUPP; size=kms->get_vbi_buf_size(kms); spin_unlock(&(kms->kms_lock)); return size; case VIDIOCGVBIFMT: { struct vbi_format vbi_f; vbi_f.sampling_rate=28636363; vbi_f.samples_per_line=kms->vbi_width; vbi_f.sample_format=VIDEO_PALETTE_RAW; vbi_f.start[0]=kms->vbi_start; vbi_f.start[1]=kms->vbi_start; vbi_f.start[0]=10; vbi_f.start[1]=272; vbi_f.count[0]=kms->vbi_height; vbi_f.count[1]=kms->vbi_height; vbi_f.flags=0; if(copy_to_user(arg,&vbi_f,sizeof(vbi_f))) return -EFAULT; return 0; } case VIDIOCSVBIFMT: return -EBUSY; default: return -EINVAL; } } #ifdef LINUX_2_6 static unsigned int km_vbi_poll(struct file *file, poll_table *wait) { struct video_device *dev = video_devdata(file); #else static unsigned int km_vbi_poll(struct video_device *dev, struct file *file, poll_table *wait) { #endif KM_STRUCT *kms=(KM_STRUCT *)dev->priv; if(kms->vbi_kdufpd==NULL)return -EINVAL; return km_data_generic_stream_poll(kms->vbi_kdufpd, &(kms->vbi.dvb), file, wait); } #ifndef VID_HARDWARE_KM #define VID_HARDWARE_KM 100 #endif #ifdef LINUX_2_6 static struct file_operations km_v4l_fops = { .owner = THIS_MODULE, .open = km_v4l_open, .release = km_v4l_close, .read = km_v4l_read, .write = km_v4l_write, .mmap = km_v4l_mmap, .ioctl = km_v4l_ioctl, .poll = km_v4l_poll, .llseek = no_llseek }; #endif static struct video_device km_v4l_template= { owner: THIS_MODULE, name: "Km", type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT, hardware: VID_HARDWARE_KM, #ifdef LINUX_2_6 fops: &km_v4l_fops, #else open: km_v4l_open, close: km_v4l_close, read: km_v4l_read, write: km_v4l_write, ioctl: km_v4l_ioctl, poll: km_v4l_poll, mmap: km_v4l_mmap, #endif minor: -1, }; #ifdef LINUX_2_6 static struct file_operations km_vbi_fops = { .owner = THIS_MODULE, .open = km_vbi_open, .release = km_vbi_close, .read = km_vbi_read, .write = km_vbi_write, .ioctl = km_vbi_ioctl, .poll = km_vbi_poll, .llseek = no_llseek }; #endif static struct video_device km_v4l_vbi_template= { owner: THIS_MODULE, name: "Km", type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT, hardware: VID_HARDWARE_KM, #ifdef LINUX_2_6 fops: &km_vbi_fops, #else open: km_vbi_open, close: km_vbi_close, read: km_vbi_read, ioctl: km_vbi_ioctl, poll: km_vbi_poll, #endif minor: -1, }; void init_km_v4l(KM_STRUCT *kms) { memcpy(&(kms->vd), &km_v4l_template, sizeof(km_v4l_template)); kms->vd.priv=kms; memcpy(&(kms->vbi_vd), &km_v4l_vbi_template, sizeof(km_v4l_vbi_template)); kms->vbi_vd.priv=kms; if(kms->is_capture_active!=NULL) video_register_device(&(kms->vd), VFL_TYPE_GRABBER, -1); if(kms->is_vbi_active!=NULL) video_register_device(&(kms->vbi_vd), VFL_TYPE_VBI, -1); } void cleanup_km_v4l(KM_STRUCT *kms) { if(kms->is_capture_active!=NULL) video_unregister_device(&(kms->vd)); if(kms->is_vbi_active!=NULL) video_unregister_device(&(kms->vbi_vd)); } |
|
From: <gat...@li...> - 2004-06-29 03:37:25
|
Update of /cvsroot/gatos/km In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11072 Modified Files: km.c Log Message: Indented code according with Linux kernel formatting guideleines. See http://www.linuxjournal.com/article.php?sid=5780 There were no changes other than whitespace Index: km.c =================================================================== RCS file: /cvsroot/gatos/km/km.c,v retrieving revision 1.94 retrieving revision 1.95 diff -u -d -r1.94 -r1.95 --- km.c 25 Jun 2004 19:02:40 -0000 1.94 +++ km.c 29 Jun 2004 03:37:14 -0000 1.95 @@ -1,8 +1,9 @@ +/* -*- linux-c -*- */ /* km preliminary version - (C) Vladimir Dergachev 2001-2003 +(C) Vladimir Dergachev 2001-2003 - GNU Public License +GNU Public License */ [...1013 lines suppressed...] -int i; -for(i=0;i<num_devices;i++) - km_remove(km_devices[i].dev, &(km_devices[i])); -return; -} + void km_cleanup_module(void) + { + int i; + for(i=0;i<num_devices;i++) + km_remove(km_devices[i].dev, &(km_devices[i])); + return; + } -module_init(km_init_module); -module_exit(km_cleanup_module); + module_init(km_init_module); + module_exit(km_cleanup_module); #endif |
|
From: <gat...@li...> - 2004-06-25 19:02:50
|
Update of /cvsroot/gatos/km In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv781 Modified Files: km.c Log Message: Add PCI id for RAGE128 TF. Index: km.c =================================================================== RCS file: /cvsroot/gatos/km/km.c,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- km.c 20 Jun 2004 03:14:38 -0000 1.93 +++ km.c 25 Jun 2004 19:02:40 -0000 1.94 @@ -963,6 +963,8 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RAGE128}, {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_LF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RAGE128}, + {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_TF, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RAGE128}, #ifdef PCI_DEVICE_ID_ATI_RAGE128_U1 {PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_U1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, HARDWARE_RAGE128}, |
|
From: <gat...@li...> - 2004-06-20 03:14:47
|
Update of /cvsroot/gatos/km In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1753 Modified Files: km.c Log Message: The init and exit entry points for the modules seem to need now the (admittedly more modern) module_init and module_exit interface. That is as of kernels 2.6.5. This new interface predates 2.4 kernels and therefore it should be accepted there as well. Index: km.c =================================================================== RCS file: /cvsroot/gatos/km/km.c,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- km.c 15 Mar 2004 00:20:16 -0000 1.92 +++ km.c 20 Jun 2004 03:14:38 -0000 1.93 @@ -1022,7 +1022,7 @@ */ #ifdef MODULE -static int __init init_module(void) +static int km_init_module(void) { int result; struct pci_dev *pdev=0; @@ -1050,7 +1050,7 @@ return result; } -void cleanup_module(void) +void km_cleanup_module(void) { int i; for(i=0;i<num_devices;i++) @@ -1058,5 +1058,8 @@ return; } +module_init(km_init_module); +module_exit(km_cleanup_module); + #endif |
|
From: <gat...@li...> - 2004-05-24 22:18:47
|
Update of /cvsroot/gatos/ati.2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3160/ati.2 Modified Files: ati.c Log Message: a commit test Index: ati.c =================================================================== RCS file: /cvsroot/gatos/ati.2/ati.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ati.c 7 Feb 2003 02:09:59 -0000 1.3 +++ ati.c 24 May 2004 22:18:29 -0000 1.4 @@ -70,3 +70,4 @@ NULL, 0 }; + |
|
From: <gat...@li...> - 2004-05-20 18:18:34
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4098 Added Files: bt829_module.c Log Message: Add forgotten file. --- NEW FILE: bt829_module.c --- #include "xf86Module.h" static MODULESETUPPROTO(bt829Setup); static XF86ModuleVersionInfo bt829VersRec = { "bt829", MODULEVENDORSTRING, MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */ ABI_VIDEODRV_VERSION, MOD_CLASS_NONE, {0,0,0,0} }; XF86ModuleData bt829ModuleData = { &bt829VersRec, bt829Setup, NULL }; static pointer bt829Setup(pointer module, pointer opts, int *errmaj, int *errmin) { return (pointer)1; } |
|
From: <gat...@li...> - 2004-05-20 15:33:26
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1855 Modified Files: radeon_video.c Log Message: Remove debugging code. The cause of the crash was actually running glxinfo. Index: radeon_video.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon_video.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- radeon_video.c 20 May 2004 05:22:59 -0000 1.4 +++ radeon_video.c 20 May 2004 15:33:12 -0000 1.5 @@ -295,6 +295,7 @@ {XvSettable | XvGettable, -1000, 1000, "XV_RED_INTENSITY"}, {XvSettable | XvGettable, -1000, 1000, "XV_GREEN_INTENSITY"}, {XvSettable | XvGettable, -1000, 1000, "XV_BLUE_INTENSITY"}, + {XvSettable | XvGettable, 0, 0x1F, "XV_ADJUSTMENT"}, {XvSettable | XvGettable, -1000, 1000, "XV_DEC_BRIGHTNESS"}, {XvSettable | XvGettable, -1000, 1000, "XV_DEC_CONTRAST"}, {XvSettable | XvGettable, -1000, 1000, "XV_DEC_SATURATION"}, @@ -306,7 +307,6 @@ {XvSettable | XvGettable, -1000, 1000, "XV_VOLUME"}, {XvSettable | XvGettable, 0, 1, "XV_MUTE"}, {XvSettable | XvGettable, 0, 1, "XV_SAP"}, - {XvSettable | XvGettable, 0, 0x1F, "XV_ADJUSTMENT"}, { 0, 0, 0, NULL} /* just a place holder so I don't have to be fancy with commas */ }; @@ -765,7 +765,6 @@ char tmp[200]; int i; - CHECKPOINT if (info->accelOn) info->accel->Sync(pScrn); /* this is done here because each time the server is reset these @@ -1885,6 +1884,14 @@ OUTPLL(RADEON_VCLK_ECP_CNTL, (INPLL(pScrn, RADEON_VCLK_ECP_CNTL) & 0xfffffCff) | (pPriv->ecp_div << 8)); + if ((info->ChipFamily == CHIP_FAMILY_RS100) || + (info->ChipFamily == CHIP_FAMILY_RS200) || + (info->ChipFamily == CHIP_FAMILY_RS300)) { + /* Force the overlay clock on for integrated chips + */ + OUTPLL(RADEON_VCLK_ECP_CNTL, (INPLL(pScrn, RADEON_VCLK_ECP_CNTL) | (1<<18))); + } + info->adaptor = adapt; return adapt; @@ -1999,8 +2006,7 @@ adapt->nFormats = NUM_FORMATS; adapt->pFormats = Formats; adapt->nPorts = 1; - if(pPriv->theatre==NULL) - adapt->nAttributes = NUM_ATTRIBUTES; + if(pPriv->theatre==NULL)adapt->nAttributes = NUM_ATTRIBUTES; else adapt->nAttributes = NUM_DEC_ATTRIBUTES; adapt->pAttributes = Attributes; @@ -2056,7 +2062,6 @@ BoxPtr extents = REGION_EXTENTS(DummyScreen, reg); int diff; - CHECKPOINT hscale = ((*xb - *xa) << 16) / (dst->x2 - dst->x1); vscale = ((*yb - *ya) << 16) / (dst->y2 - dst->y1); @@ -2128,7 +2133,6 @@ unsigned char *RADEONMMIO = info->MMIO; RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; - CHECKPOINT REGION_EMPTY(pScrn->pScreen, &pPriv->clip); if(cleanup) { @@ -2172,7 +2176,6 @@ Bool setAlpha = FALSE; unsigned char *RADEONMMIO = info->MMIO; - CHECKPOINT if (info->accelOn) info->accel->Sync(pScrn); #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) @@ -2401,7 +2404,6 @@ RADEONInfoPtr info = RADEONPTR(pScrn); RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; - CHECKPOINT if (info->accelOn) info->accel->Sync(pScrn); if(attribute == xvAutopaintColorkey) @@ -2443,7 +2445,6 @@ else if(attribute == xvFrequency) *value = pPriv->frequency; else if(attribute == xvTunerStatus) { - CHECKPOINT if(pPriv->fi1236==NULL){ *value=TUNER_OFF; } else @@ -2469,7 +2470,6 @@ else return BadMatch; - CHECKPOINT return Success; } @@ -2673,7 +2673,6 @@ ScreenPtr pScreen; FBLinearPtr new_linear; - CHECKPOINT if(linear) { if(linear->size >= size) return linear; @@ -2737,7 +2736,6 @@ double dsr; int tap_set; - CHECKPOINT is_rgb=0; switch(id){ case FOURCC_RGBA32: @@ -3013,7 +3011,6 @@ RADEON_NONSURF_AP0_SWP_32BPP) & ~RADEON_NONSURF_AP0_SWP_16BPP); #endif - CHECKPOINT if (info->accelOn) info->accel->Sync(pScrn); /* if capture was active shutdown it first */ @@ -3218,7 +3215,6 @@ ){ int size, tmp; - CHECKPOINT #if 0 /* Overlay scaler has buffer that is pPriv->overlay_scaler_buffer_width pixels wide */ if(*w > pPriv->overlay_scaler_buffer_width) *w = pPriv->overlay_scaler_buffer_width; @@ -3574,7 +3570,6 @@ int mult; int vbi_line_width; - CHECKPOINT xf86DrvMsg(pScrn->scrnIndex, X_INFO, "PutVideo %dx%d+%d+%d\n", drw_w,drw_h,drw_x,drw_y); if (info->accelOn) info->accel->Sync(pScrn); /* |
|
From: <gat...@li...> - 2004-05-20 15:31:41
|
Update of /cvsroot/gatos/avview In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1444 Modified Files: diag.scp Log Message: Delay running commands until the pane with the output becomes visible. Index: diag.scp =================================================================== RCS file: /cvsroot/gatos/avview/diag.scp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- diag.scp 22 Jan 2003 17:43:10 -0000 1.8 +++ diag.scp 20 May 2004 15:31:29 -0000 1.9 @@ -56,11 +56,27 @@ grid $pane.f.hsb - - -sticky news grid columnconfig $pane.f 1 -weight 1 grid rowconfig $pane.f 1 -weight 1 -$pane.f.refresh invoke +global empty.$pane +set empty.$pane true +# +# Delay obtaining diagnostic information until such +# time as the window becomes visible +# +# This is because some the commands (like glxinfo) +# can crash X when things go wrong (i.e. broken 3d) +# +bind $pane.f <Visibility> [subst -nocommands { + global empty.$pane + if { [set empty.$pane ] } { + set empty.$pane false + $pane.f.refresh invoke + } + } ] } -foreach {command desc index} {xvinfo "XVideo extension information" 0.0 +foreach {command desc index} { + xvinfo "XVideo extension information" 0.0 glxinfo "GLx extension information" 0.0 dmesg "Linux kernel debug messages" end xdpyinfo "X server information" 0.0 } { |
|
From: <gat...@li...> - 2004-05-20 05:23:09
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21291 Modified Files: radeon_video.c Log Message: Cleanup. Put in some debugging statements to assist finding the cause of the Xserver crash when starting avview. Index: radeon_video.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon_video.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- radeon_video.c 20 May 2004 03:03:43 -0000 1.3 +++ radeon_video.c 20 May 2004 05:22:59 -0000 1.4 @@ -34,6 +34,9 @@ #define TIMER_MASK (OFF_TIMER | FREE_TIMER) +#define CHECKPOINT { xf86DrvMsg(0, X_INFO, "CHECKPOINT: %s:%d\n", __FUNCTION__,__LINE__); } + + extern int gRADEONEntityIndex; #ifndef XvExtension @@ -762,6 +765,7 @@ char tmp[200]; int i; + CHECKPOINT if (info->accelOn) info->accel->Sync(pScrn); /* this is done here because each time the server is reset these @@ -1894,7 +1898,7 @@ XF86VideoAdaptorPtr adapt; RADEONInfoPtr info = RADEONPTR(pScrn); - info->accel->Sync(pScrn); + if (info->accelOn) info->accel->Sync(pScrn); RADEONWaitForIdleMMIO(pScrn); if(info->adaptor != NULL){ @@ -2052,6 +2056,7 @@ BoxPtr extents = REGION_EXTENTS(DummyScreen, reg); int diff; + CHECKPOINT hscale = ((*xb - *xa) << 16) / (dst->x2 - dst->x1); vscale = ((*yb - *ya) << 16) / (dst->y2 - dst->y1); @@ -2123,6 +2128,7 @@ unsigned char *RADEONMMIO = info->MMIO; RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; + CHECKPOINT REGION_EMPTY(pScrn->pScreen, &pPriv->clip); if(cleanup) { @@ -2166,7 +2172,8 @@ Bool setAlpha = FALSE; unsigned char *RADEONMMIO = info->MMIO; - info->accel->Sync(pScrn); + CHECKPOINT + if (info->accelOn) info->accel->Sync(pScrn); #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) #define RTFBrightness(a) (((a)*1.0)/2000.0) @@ -2394,6 +2401,7 @@ RADEONInfoPtr info = RADEONPTR(pScrn); RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; + CHECKPOINT if (info->accelOn) info->accel->Sync(pScrn); if(attribute == xvAutopaintColorkey) @@ -2422,59 +2430,46 @@ *value = pPriv->doubleBuffer ? 1 : 0; else if(attribute == xvColorKey) *value = pPriv->colorKey; - else - if(attribute == xvDecBrightness) { + else if(attribute == xvDecBrightness) *value = pPriv->dec_brightness; - } else - if((attribute == xvDecSaturation) || (attribute == xvDecColor)) { + else if((attribute == xvDecSaturation) || (attribute == xvDecColor)) *value = pPriv->dec_saturation; - } else - if(attribute == xvDecContrast) { + else if(attribute == xvDecContrast) *value = pPriv->dec_contrast; - } else - if(attribute == xvDecHue) { + else if(attribute == xvDecHue) *value = pPriv->dec_hue; - } else - if(attribute == xvEncoding) { + else if(attribute == xvEncoding) *value = pPriv->encoding; - } else - if(attribute == xvFrequency) { + else if(attribute == xvFrequency) *value = pPriv->frequency; - } else - if(attribute == xvTunerStatus) { + else if(attribute == xvTunerStatus) { + CHECKPOINT if(pPriv->fi1236==NULL){ *value=TUNER_OFF; } else { *value = xf86_TUNER_get_afc_hint(pPriv->fi1236); } - } else - if(attribute == xvMute) { + } else if(attribute == xvMute) *value = pPriv->mute; - } else - if(attribute == xvSAP) { + else if(attribute == xvSAP) *value = pPriv->sap_channel; - } else - if(attribute == xvVolume) { + else if(attribute == xvVolume) *value = pPriv->volume; - } else - if(attribute == xvOverlayDeinterlacingMethod) { + else if(attribute == xvOverlayDeinterlacingMethod) *value = pPriv->overlay_deinterlacing_method; - } else - if(attribute == xvDeviceID) { + else if(attribute == xvDeviceID) *value = pPriv->device_id; - } else - if(attribute == xvLocationID) { + else if(attribute == xvLocationID) *value = pPriv->location_id; - } else - if(attribute == xvInstanceID) { + else if(attribute == xvInstanceID) *value = pPriv->instance_id; - } else - if(attribute == xvAdjustment) { + else if(attribute == xvAdjustment) *value = pPriv->adjustment; - } else + else return BadMatch; + CHECKPOINT return Success; } @@ -2678,6 +2673,7 @@ ScreenPtr pScreen; FBLinearPtr new_linear; + CHECKPOINT if(linear) { if(linear->size >= size) return linear; @@ -2740,7 +2736,8 @@ CARD32 scale_cntl; double dsr; int tap_set; - + + CHECKPOINT is_rgb=0; switch(id){ case FOURCC_RGBA32: @@ -3016,7 +3013,8 @@ RADEON_NONSURF_AP0_SWP_32BPP) & ~RADEON_NONSURF_AP0_SWP_16BPP); #endif - info->accel->Sync(pScrn); + CHECKPOINT + if (info->accelOn) info->accel->Sync(pScrn); /* if capture was active shutdown it first */ if(pPriv->video_stream_active) @@ -3220,6 +3218,7 @@ ){ int size, tmp; + CHECKPOINT #if 0 /* Overlay scaler has buffer that is pPriv->overlay_scaler_buffer_width pixels wide */ if(*w > pPriv->overlay_scaler_buffer_width) *w = pPriv->overlay_scaler_buffer_width; @@ -3558,10 +3557,8 @@ static int RADEONPutVideo( ScrnInfoPtr pScrn, - short src_x, short src_y, - short drw_x, short drw_y, - short src_w, short src_h, - short drw_w, short drw_h, + short src_x, short src_y, short drw_x, short drw_y, + short src_w, short src_h, short drw_w, short drw_h, RegionPtr clipBoxes, pointer data ){ RADEONInfoPtr info = RADEONPTR(pScrn); @@ -3577,8 +3574,9 @@ int mult; int vbi_line_width; + CHECKPOINT xf86DrvMsg(pScrn->scrnIndex, X_INFO, "PutVideo %dx%d+%d+%d\n", drw_w,drw_h,drw_x,drw_y); - info->accel->Sync(pScrn); + if (info->accelOn) info->accel->Sync(pScrn); /* * s2offset, s3offset - byte offsets into U and V plane of the * source where copying starts. Y plane is |
|
From: <gat...@li...> - 2004-05-20 03:03:54
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32714 Modified Files: radeon_video.c Log Message: Trying to cleanup.. Still crashes with PutVideo.. Index: radeon_video.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon_video.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- radeon_video.c 20 May 2004 01:37:59 -0000 1.2 +++ radeon_video.c 20 May 2004 03:03:43 -0000 1.3 @@ -55,8 +55,6 @@ unsigned short *, int *, int *); -void RADEONResetVideo(ScrnInfoPtr); - static void RADEONVideoTimerCallback(ScrnInfoPtr pScrn, Time now); static void RADEONSetOverlayAlpha(ScrnInfoPtr pScrn, int ov_alpha, int gr_alpha, int alpha_mode); static int RADEONPutVideo(ScrnInfoPtr pScrn, short src_x, short src_y, short drw_x, short drw_y, @@ -170,7 +168,7 @@ void RADEON_board_setmisc(RADEONPortPrivPtr pPriv); void RADEON_MSP_SetEncoding(RADEONPortPrivPtr pPriv); void RADEON_FI1236_SetEncoding(RADEONPortPrivPtr pPriv); -void RADEONSetColorKey(ScrnInfoPtr pScrn, CARD32 pixel); +static void RADEONSetColorKey(ScrnInfoPtr pScrn, CARD32 pixel); static void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); void RADEONShutdownVideo(ScrnInfoPtr pScrn); void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); @@ -756,8 +754,7 @@ } } -void -RADEONResetVideo(ScrnInfoPtr pScrn) +void RADEONResetVideo(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); unsigned char *RADEONMMIO = info->MMIO; @@ -816,6 +813,9 @@ sprintf(tmp, "INSTANCE:%d", pScrn->scrnIndex); pPriv->instance_id = MAKE_ATOM(tmp); + REGION_NULL(pScrn->pScreen, &(pPriv->clip)); + + RADEONWaitForIdleMMIO(pScrn); OUTREG(RADEON_OV0_SCALE_CNTL, 0x80000000); OUTREG(RADEON_OV0_AUTO_FLIP_CNTL, 0); /* maybe */ @@ -2026,37 +2026,6 @@ return adapt; } -/* I really should stick this in miregion */ -static Bool -RegionsEqual(RegionPtr A, RegionPtr B) -{ - int *dataA, *dataB; - int num; - - num = REGION_NUM_RECTS(A); - if(num != REGION_NUM_RECTS(B)) - return FALSE; - - if((A->extents.x1 != B->extents.x1) || - (A->extents.x2 != B->extents.x2) || - (A->extents.y1 != B->extents.y1) || - (A->extents.y2 != B->extents.y2)) - return FALSE; - - dataA = (pointer)REGION_RECTS(A); - dataB = (pointer)REGION_RECTS(B); - - while(num--) { - if((dataA[0] != dataB[0]) || (dataA[1] != dataB[1])) - return FALSE; - dataA += 2; - dataB += 2; - } - - return TRUE; -} - - /* RADEONClipVideo - Takes the dst box in standard X BoxRec form (top and left @@ -3217,7 +3186,7 @@ #endif /* update cliplist */ - if(!RegionsEqual(&pPriv->clip, clipBoxes)) + if(!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); /* draw these */ @@ -3801,7 +3770,7 @@ /* update cliplist */ - if(!RegionsEqual(&pPriv->clip, clipBoxes)) { + if(!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); /* draw these */ if(pPriv->autopaint_colorkey)(*info->accel->FillSolidRects)(pScrn, pPriv->colorKey, GXcopy, ~0, |
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20316 Modified Files: Imakefile atichip.c atichip.h aticonsole.c aticonsole.h atistruct.h atixv.c r128.h r128_accel.c r128_driver.c r128_reg.h r128_sarea.h r128_video.c radeon.h radeon_accelfuncs.c radeon_driver.c radeon_reg.h radeon_sarea.h radeon_video.c Added Files: README.gatos bt829.c bt829.h fi1236.c fi1236.h fi1236_module.c generic_bus.h i2c_def.h msp3430.c msp3430.h msp3430_module.c saa7114.c saa7114.h saa7114_module.c saa7114_regs.h tda8425.c tda8425.h tda8425_module.c tda9850.c tda9850.h tda9850_module.c tda9885.c tda9885.h tda9885_module.c theatre.c theatre.h theatre_module.c theatre_reg.h Log Message: Merge patch from Bogdan Diaconescu. Note that none of mach64 stuff has made it in (except for PutImage that Marc Aurele has ported). Also note that radeon Xvideo stuff (at least) is broken due to REGION_ changes. Index: atistruct.h =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/atistruct.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- atistruct.h 19 May 2004 23:24:23 -0000 1.1.1.1 +++ atistruct.h 20 May 2004 01:37:59 -0000 1.2 @@ -28,6 +28,9 @@ #include "aticlock.h" #include "atiregs.h" + /* Xv support */ +#include "xf86xv.h" + #include "xaa.h" #include "xf86Cursor.h" #include "xf86Pci.h" @@ -435,6 +438,16 @@ * Wrapped functions. */ CloseScreenProcPtr CloseScreen; + + /* Xv extension fields */ + XF86VideoAdaptorPtr adaptor; + void (*VideoTimerCallback)(ScrnInfoPtr, Time); + + /* BIOS */ + + CARD8 *VBIOS; + CARD32 BIOSSize; + } ATIRec; #define ATIPTR(_p) ((ATIPtr)((_p)->driverPrivate)) Index: r128_sarea.h =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/r128_sarea.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- r128_sarea.h 19 May 2004 23:24:29 -0000 1.1.1.1 +++ r128_sarea.h 20 May 2004 01:37:59 -0000 1.2 @@ -149,6 +149,12 @@ } r128_texture_regs_t; typedef struct { + unsigned char next, prev; /* indices to form a circular LRU */ + unsigned char in_use; /* owned by a client, or free? */ + int age; /* tracked by clients to update local LRU's */ +} r128_tex_region_t; + +typedef struct { /* The channel for communication of state information to the kernel * on firing a vertex buffer. */ @@ -158,10 +164,12 @@ unsigned int vertsize; unsigned int vc_format; +#ifdef XF86DRI /* The current cliprects, or a subset thereof. */ XF86DRIClipRectRec boxes[R128_NR_SAREA_CLIPRECTS]; unsigned int nbox; +#endif /* Counters for throttling of rendering clients. */ @@ -183,9 +191,9 @@ * else's - simply eject them all in LRU order. */ /* Last elt is sentinal */ - drmTextureRegion texList[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS+1]; + r128_tex_region_t texList[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS+1]; /* last time texture was uploaded */ - unsigned int texAge[R128_NR_TEX_HEAPS]; + int texAge[R128_NR_TEX_HEAPS]; int ctxOwner; /* last context to upload state */ int pfAllowPageFlip; /* set by the 2d driver, read by the client */ Index: radeon_driver.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon_driver.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- radeon_driver.c 19 May 2004 23:24:37 -0000 1.1.1.1 +++ radeon_driver.c 20 May 2004 01:37:59 -0000 1.2 @@ -137,6 +137,13 @@ OPTION_CLONE_VREFRESH, OPTION_FBDEV, OPTION_VIDEO_KEY, +#ifdef XvExtension + OPTION_RAGE_THEATRE_CRYSTAL, + OPTION_RAGE_THEATRE_TUNER_PORT, + OPTION_RAGE_THEATRE_COMPOSITE_PORT, + OPTION_RAGE_THEATRE_SVIDEO_PORT, + OPTION_TUNER_TYPE, +#endif OPTION_DISP_PRIORITY, OPTION_PANEL_SIZE, OPTION_MIN_DOTCLOCK @@ -172,6 +179,14 @@ { OPTION_CLONE_VREFRESH, "CloneVRefresh", OPTV_ANYSTR, {0}, FALSE }, { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE }, +#ifdef XvExtension + { OPTION_RAGE_THEATRE_CRYSTAL, "RageTheatreCrystal", OPTV_INTEGER, {0}, FALSE }, + { OPTION_RAGE_THEATRE_TUNER_PORT, "RageTheatreTunerPort", OPTV_INTEGER, {0}, FALSE }, + { OPTION_RAGE_THEATRE_COMPOSITE_PORT, "RageTheatreCompositePort", OPTV_INTEGER, {0}, FALSE }, + { OPTION_RAGE_THEATRE_SVIDEO_PORT, "RageTheatreSVideoPort", OPTV_INTEGER, {0}, FALSE }, + { OPTION_TUNER_TYPE, "TunerType", OPTV_INTEGER, {0}, FALSE }, +#endif + { OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE }, { OPTION_DISP_PRIORITY, "DisplayPriority", OPTV_ANYSTR, {0}, FALSE }, { OPTION_PANEL_SIZE, "PanelSize", OPTV_ANYSTR, {0}, FALSE }, { OPTION_MIN_DOTCLOCK, "ForceMinDotClock", OPTV_FREQ, {0}, FALSE }, @@ -3988,6 +4003,72 @@ info->videoKey = 0x1E; } +#ifdef XvExtension + if(xf86GetOptValInteger(info->Options, OPTION_VIDEO_KEY, &(info->videoKey))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "video key set to 0x%x\n", + info->videoKey); + } else { + /* this default is very unlikely to occur (mostly a few pixels in photos) */ + /* Unlike R128, Radeon's videokey is always stored in 32 bit ARGB format */ + info->videoKey = (1<<8) | (2<<8) | (3<<8); + } + + if(xf86GetOptValInteger(info->Options, OPTION_RAGE_THEATRE_CRYSTAL, &(info->RageTheatreCrystal))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rage Theatre Crystal frequency was specified as %d.%d Mhz\n", + info->RageTheatreCrystal/100, info->RageTheatreCrystal % 100); + } else { + info->RageTheatreCrystal=-1; + } + + if(xf86GetOptValInteger(info->Options, OPTION_RAGE_THEATRE_TUNER_PORT, &(info->RageTheatreTunerPort))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rage Theatre tuner port was specified as %d\n", + info->RageTheatreTunerPort); + } else { + info->RageTheatreTunerPort=-1; + } + + if(info->RageTheatreTunerPort>5){ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Attempt to assign Rage Theatre tuner port to invalid value. Disabling setting\n"); + info->RageTheatreTunerPort=-1; + } + + if(xf86GetOptValInteger(info->Options, OPTION_RAGE_THEATRE_COMPOSITE_PORT, &(info->RageTheatreCompositePort))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rage Theatre composite port was specified as %d\n", + info->RageTheatreCompositePort); + } else { + info->RageTheatreCompositePort=-1; + } + + if(info->RageTheatreCompositePort>6){ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Attempt to assign Rage Theatre composite port to invalid value. Disabling setting\n"); + info->RageTheatreCompositePort=-1; + } + + if(xf86GetOptValInteger(info->Options, OPTION_RAGE_THEATRE_SVIDEO_PORT, &(info->RageTheatreSVideoPort))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rage Theatre SVideo Port was specified as %d\n", + info->RageTheatreSVideoPort); + } else { + info->RageTheatreSVideoPort=-1; + } + + if(info->RageTheatreSVideoPort>6){ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Attempt to assign Rage Theatre SVideo port to invalid value. Disabling setting\n"); + info->RageTheatreSVideoPort=-1; + } + + if(xf86GetOptValInteger(info->Options, OPTION_TUNER_TYPE, &(info->tunerType))) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Tuner type was specified as %d\n", + info->tunerType); + } else { + info->tunerType=-1; + } + + if(info->tunerType>31){ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Attempt to set tuner type to invalid value. Disabling setting\n"); + info->tunerType=-1; + } +#endif + info->DispPriority = 1; if ((s = xf86GetOptValString(info->Options, OPTION_DISP_PRIORITY))) { if (strcmp(s, "AUTO") == 0) { @@ -4053,10 +4134,12 @@ #endif /* Free the video bios (if applicable) */ + #if 0 /* we need it later */ if (info->VBIOS) { xfree(info->VBIOS); info->VBIOS = NULL; } + #endif /* Free int10 info */ if (pInt10) @@ -6258,6 +6341,10 @@ save->crtc2_pitch, pScrn->virtualX, info->CurrentLayout.displayWidth)); +#ifdef XvExtension + RADEONEnterVT_Video(pScrn); +#endif + return TRUE; } @@ -6952,6 +7039,10 @@ RADEONSavePtr save = &info->ModeReg; RADEONTRACE(("RADEONLeaveVT\n")); +#ifdef XvExtension + RADEONLeaveVT_Video(pScrn); +#endif + #ifdef XF86DRI if (RADEONPTR(pScrn)->directRenderingEnabled) { DRILock(pScrn->pScreen, 0); --- NEW FILE: saa7114_regs.h --- #ifndef __SAA7114_REGS_H__ #define __SAA7114_REGS_H__ #define SAA7114_CHIP_VERSION 0x00 #endif Index: aticonsole.h =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/aticonsole.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- aticonsole.h 19 May 2004 23:24:13 -0000 1.1.1.1 +++ aticonsole.h 20 May 2004 01:37:59 -0000 1.2 @@ -41,6 +41,11 @@ extern Bool ATIEnterVT FunctionPrototype((int, int)); extern void ATILeaveVT FunctionPrototype((int, int)); +#ifdef XvExtension +extern void ATIEnterVT_Video FunctionPrototype((ScrnInfoPtr)); +extern void ATILeaveVT_Video FunctionPrototype((ScrnInfoPtr)); +#endif + extern void ATIFreeScreen FunctionPrototype((int, int)); #endif /* ___ATICONSOLE_H___ */ --- NEW FILE: msp3430_module.c --- #include "xf86Module.h" static MODULESETUPPROTO(msp3430Setup); static XF86ModuleVersionInfo msp3430VersRec = { "msp3430", MODULEVENDORSTRING, MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */ ABI_VIDEODRV_VERSION, MOD_CLASS_NONE, {0,0,0,0} }; XF86ModuleData msp3430ModuleData = { &msp3430VersRec, msp3430Setup, NULL }; static pointer msp3430Setup(pointer module, pointer opts, int *errmaj, int *errmin) { return (pointer)1; } --- NEW FILE: theatre_module.c --- #include "xf86Module.h" static MODULESETUPPROTO(theatreSetup); static XF86ModuleVersionInfo theatreVersRec = { "theatre", MODULEVENDORSTRING, MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */ ABI_VIDEODRV_VERSION, MOD_CLASS_NONE, {0,0,0,0} }; XF86ModuleData theatreModuleData = { &theatreVersRec, theatreSetup, NULL }; static pointer theatreSetup(pointer module, pointer opts, int *errmaj, int *errmin) { return (pointer)1; } Index: r128_reg.h =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/r128_reg.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- r128_reg.h 19 May 2004 23:24:29 -0000 1.1.1.1 +++ r128_reg.h 20 May 2004 01:37:59 -0000 1.2 @@ -276,7 +276,11 @@ #define R128_CACHE_CNTL 0x1724 #define R128_CACHE_LINE 0x0f0c /* PCI */ #define R128_CAP0_TRIG_CNTL 0x0950 /* ? */ -#define R128_CAP1_TRIG_CNTL 0x09c0 /* ? */ +# define R128_CAP0_TRIG_CNTL_TRIGGER_GET 0x00000003 +# define R128_CAP0_TRIG_CNTL_TRIGGER_SET 0x00000001 +# define R128_CAP0_TRIG_CNTL_CAPTURE_EN 0x00000010 +# define R128_CAP0_TRIG_CNTL_VSYNC_GET 0x0000FF00 +# define R128_CAP0_TRIG_CNTL_VSYNC_SET 0x00010000 #define R128_CAPABILITIES_ID 0x0f50 /* PCI */ #define R128_CAPABILITIES_PTR 0x0f34 /* PCI */ #define R128_CLK_PIN_CNTL 0x0001 /* PLL */ @@ -673,7 +677,10 @@ #define R128_HW_DEBUG 0x0128 #define R128_HW_DEBUG2 0x011c -#define R128_I2C_CNTL_1 0x0094 /* ? */ +#define R128_I2C_CNTL_0 0x0090 +#define R128_I2C_CNTL_1 0x0094 +#define R128_I2C_DATA 0x0098 + #define R128_INTERRUPT_LINE 0x0f3c /* PCI */ #define R128_INTERRUPT_PIN 0x0f3d /* PCI */ #define R128_IO_BASE 0x0f14 /* PCI */ @@ -802,6 +809,16 @@ #define R128_OV0_VID_BUF_PITCH0_VALUE 0x0460 #define R128_OV0_VID_BUF_PITCH1_VALUE 0x0464 #define R128_OV0_AUTO_FLIP_CNTL 0x0470 +# define R128_OV0_AUTO_FLIP_CNTL_SOFT_BUF_NUM 0x00000007 +# define R128_OV0_AUTO_FLIP_CNTL_SOFT_REPEAT_FIELD 0x00000008 +# define R128_OV0_AUTO_FLIP_CNTL_SOFT_BUF_ODD 0x00000010 +# define R128_OV0_AUTO_FLIP_CNTL_IGNORE_REPEAT_FIELD 0x00000020 +# define R128_OV0_AUTO_FLIP_CNTL_SOFT_EOF_TOGGLE 0x00000040 +# define R128_OV0_AUTO_FLIP_CNTL_VID_PORT_SELECT 0x00000300 +# define R128_OV0_AUTO_FLIP_CNTL_P1_FIRST_LINE_EVEN 0x00010000 +# define R128_OV0_AUTO_FLIP_CNTL_SHIFT_EVEN_DOWN 0x00040000 +# define R128_OV0_AUTO_FLIP_CNTL_SHIFT_ODD_DOWN 0x00080000 +# define R128_OV0_AUTO_FLIP_CNTL_FIELD_POL_SOURCE 0x00800000 #define R128_OV0_DEINTERLACE_PATTERN 0x0474 #define R128_OV0_H_INC 0x0480 #define R128_OV0_STEP_BY 0x0484 @@ -837,6 +854,92 @@ # define R128_CMP_MIX_AND 0x00000100L #define R128_OV0_TEST 0x04F8 +/* first capture unit */ + +#define R128_CAP0_BUF0_OFFSET 0x0920 +#define R128_CAP0_BUF1_OFFSET 0x0924 +#define R128_CAP0_BUF0_EVEN_OFFSET 0x0928 +#define R128_CAP0_BUF1_EVEN_OFFSET 0x092C + +#define R128_CAP0_BUF_PITCH 0x0930 +#define R128_CAP0_V_WINDOW 0x0934 +#define R128_CAP0_H_WINDOW 0x0938 +#define R128_CAP0_VBI_ODD_OFFSET 0x093C +#define R128_CAP0_VBI_EVEN_OFFSET 0x0940 +#define R128_CAP0_VBI_V_WINDOW 0x0944 +#define R128_CAP0_VBI_H_WINDOW 0x0948 +#define R128_CAP0_PORT_MODE_CNTL 0x094C +#define R128_CAP0_TRIG_CNTL 0x0950 +#define R128_CAP0_DEBUG 0x0954 +#define R128_CAP0_CONFIG 0x0958 +# define R128_CAP0_CONFIG_CONTINUOS 0x00000001 +# define R128_CAP0_CONFIG_START_FIELD_EVEN 0x00000002 +# define R128_CAP0_CONFIG_START_BUF_GET 0x00000004 +# define R128_CAP0_CONFIG_START_BUF_SET 0x00000008 +# define R128_CAP0_CONFIG_BUF_TYPE_ALT 0x00000010 +# define R128_CAP0_CONFIG_BUF_TYPE_FRAME 0x00000020 +# define R128_CAP0_CONFIG_ONESHOT_MODE_FRAME 0x00000040 +# define R128_CAP0_CONFIG_BUF_MODE_DOUBLE 0x00000080 +# define R128_CAP0_CONFIG_BUF_MODE_TRIPLE 0x00000100 +# define R128_CAP0_CONFIG_MIRROR_EN 0x00000200 +# define R128_CAP0_CONFIG_ONESHOT_MIRROR_EN 0x00000400 +# define R128_CAP0_CONFIG_VIDEO_SIGNED_UV 0x00000800 +# define R128_CAP0_CONFIG_ANC_DECODE_EN 0x00001000 +# define R128_CAP0_CONFIG_VBI_EN 0x00002000 +# define R128_CAP0_CONFIG_SOFT_PULL_DOWN_EN 0x00004000 +# define R128_CAP0_CONFIG_VIP_EXTEND_FLAG_EN 0x00008000 +# define R128_CAP0_CONFIG_FAKE_FIELD_EN 0x00010000 +# define R128_CAP0_CONFIG_ODD_ONE_MORE_LINE 0x00020000 +# define R128_CAP0_CONFIG_EVEN_ONE_MORE_LINE 0x00040000 +# define R128_CAP0_CONFIG_HORZ_DIVIDE_2 0x00080000 +# define R128_CAP0_CONFIG_HORZ_DIVIDE_4 0x00100000 +# define R128_CAP0_CONFIG_VERT_DIVIDE_2 0x00200000 +# define R128_CAP0_CONFIG_VERT_DIVIDE_4 0x00400000 +# define R128_CAP0_CONFIG_FORMAT_BROOKTREE 0x00000000 +# define R128_CAP0_CONFIG_FORMAT_CCIR656 0x00800000 +# define R128_CAP0_CONFIG_FORMAT_ZV 0x01000000 +# define R128_CAP0_CONFIG_FORMAT_VIP 0x01800000 +# define R128_CAP0_CONFIG_FORMAT_TRANSPORT 0x02000000 +# define R128_CAP0_CONFIG_HORZ_DECIMATOR 0x04000000 +# define R128_CAP0_CONFIG_VIDEO_IN_YVYU422 0x00000000 +# define R128_CAP0_CONFIG_VIDEO_IN_VYUY422 0x20000000 +#define R128_CAP0_ANC_ODD_OFFSET 0x095C +#define R128_CAP0_ANC_EVEN_OFFSET 0x0960 +#define R128_CAP0_ANC_H_WINDOW 0x0964 +#define R128_CAP0_VIDEO_SYNC_TEST 0x0968 +#define R128_CAP0_ONESHOT_BUF_OFFSET 0x096C +#define R128_CAP0_BUF_STATUS 0x0970 +#define R128_CAP0_DWNSC_XRATIO 0x0978 +#define R128_CAP0_XSHARPNESS 0x097C + +/* second capture unit */ + +#define R128_CAP1_BUF0_OFFSET 0x0990 +#define R128_CAP1_BUF1_OFFSET 0x0994 +#define R128_CAP1_BUF0_EVEN_OFFSET 0x0998 +#define R128_CAP1_BUF1_EVEN_OFFSET 0x099C + +#define R128_CAP1_BUF_PITCH 0x09A0 +#define R128_CAP1_V_WINDOW 0x09A4 +#define R128_CAP1_H_WINDOW 0x09A8 +#define R128_CAP1_VBI_ODD_OFFSET 0x09AC +#define R128_CAP1_VBI_EVEN_OFFSET 0x09B0 +#define R128_CAP1_VBI_V_WINDOW 0x09B4 +#define R128_CAP1_VBI_H_WINDOW 0x09B8 +#define R128_CAP1_PORT_MODE_CNTL 0x09BC +#define R128_CAP1_TRIG_CNTL 0x09C0 +#define R128_CAP1_DEBUG 0x09C4 +#define R128_CAP1_CONFIG 0x09C8 +#define R128_CAP1_ANC_ODD_OFFSET 0x09CC +#define R128_CAP1_ANC_EVEN_OFFSET 0x09D0 +#define R128_CAP1_ANC_H_WINDOW 0x09D4 +#define R128_CAP1_VIDEO_SYNC_TEST 0x09D8 +#define R128_CAP1_ONESHOT_BUF_OFFSET 0x09DC +#define R128_CAP1_BUF_STATUS 0x09E0 +#define R128_CAP1_DWNSC_XRATIO 0x09E8 +#define R128_CAP1_XSHARPNESS 0x09EC + + #define R128_PALETTE_DATA 0x00b4 #define R128_PALETTE_INDEX 0x00b0 @@ -1288,8 +1391,8 @@ # define R128_DATATYPE_Y8 (8 << 16) # define R128_DATATYPE_RGB8 (9 << 16) # define R128_DATATYPE_CI16 (10 << 16) -# define R128_DATATYPE_YVYU422 (11 << 16) -# define R128_DATATYPE_VYUY422 (12 << 16) +# define R128_DATATYPE_YUV422 (11 << 16) +# define R128_DATATYPE_YUV422_2 (12 << 16) # define R128_DATATYPE_AYUV444 (14 << 16) # define R128_DATATYPE_ARGB4444 (15 << 16) # define R128_PALLETE_EITHER (0 << 20) --- NEW FILE: fi1236.h --- #ifndef __FI1236_H__ #define __FI1236_H__ #include "xf86i2c.h" /* why someone has defined NUM someplace else is beyoung me.. */ #undef NUM typedef struct { CARD32 fcar; /* 16 * fcar_Mhz */ CARD32 min_freq; /* 16 * min_freq_Mhz */ CARD32 max_freq; /* 16 * max_freq_Mhz */ CARD32 threshold1; /* 16 * Value_Mhz */ CARD32 threshold2; /* 16 * Value_Mhz */ CARD8 band_low; CARD8 band_mid; CARD8 band_high; CARD8 control; } FI1236_parameters; typedef struct { /* what we want */ /* all frequencies are in Mhz */ double f_rf; /* frequency to tune to */ double f_if1; /* first intermediate frequency */ double f_if2; /* second intermediate frequency */ double f_ref; /* reference frequency */ double f_ifbw; /* bandwidth */ double f_step; /* step */ /* what we compute */ double f_lo1; double f_lo2; int LO1I; int LO2I; int SEL; int STEP; int NUM; } MT2032_parameters; typedef struct { I2CDevRec d; int type; int afc_delta; CARD32 original_frequency; Bool afc_timer_installed; int afc_count; int last_afc_hint; double video_if; FI1236_parameters parm; int xogc; /* for MT2032 */ struct { CARD8 div1; CARD8 div2; CARD8 control; CARD8 band; } tuner_data; } FI1236Rec, *FI1236Ptr; #define TUNER_TYPE_FI1236 0 #define TUNER_TYPE_FI1216 1 #define TUNER_TYPE_TEMIC_FN5AL 2 #define TUNER_TYPE_MT2032 3 #define TUNER_TYPE_FI1246 4 #define TUNER_TYPE_FI1256 5 #define FI1236_ADDR(a) ((a)->d.SlaveAddr) #define FI1236_ADDR_1 0xC6 #define FI1236_ADDR_2 0xC0 #define TUNER_TUNED 0 #define TUNER_JUST_BELOW 1 #define TUNER_JUST_ABOVE -1 #define TUNER_OFF 4 #define TUNER_STILL_TUNING 5 FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr); void FI1236_set_tuner_type(FI1236Ptr f, int type); void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency); int FI1236_AFC(FI1236Ptr f); int TUNER_get_afc_hint(FI1236Ptr f); void fi1236_dump_status(FI1236Ptr f); #define FI1236SymbolsList \ "Detect_FI1236", \ "FI1236_set_tuner_type", \ "TUNER_set_frequency" #ifdef XFree86LOADER #define xf86_Detect_FI1236 ((FI1236Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_FI1236")) #define xf86_FI1236_set_tuner_type ((void (*)(FI1236Ptr, int))LoaderSymbol("FI1236_set_tuner_type")) #define xf86_TUNER_set_frequency ((void (*)(FI1236Ptr, CARD32))LoaderSymbol("TUNER_set_frequency")) #define xf86_FI1236_AFC ((int (*)(FI1236Ptr))LoaderSymbol("FI1236_AFC")) #define xf86_TUNER_get_afc_hint ((int (*)(FI1236Ptr))LoaderSymbol("TUNER_get_afc_hint")) #else #define xf86_Detect_FI1236 Detect_FI1236 #define xf86_FI1236_set_tuner_type FI1236_set_tuner_type #define xf86_TUNER_set_frequency TUNER_set_frequency #define xf86_FI1236_AFC FI1236_AFC #define xf86_TUNER_get_afc_hint TUNER_get_afc_hint #endif #endif Index: radeon_accelfuncs.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon_accelfuncs.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- radeon_accelfuncs.c 19 May 2004 23:24:32 -0000 1.1.1.1 +++ radeon_accelfuncs.c 20 May 2004 01:37:59 -0000 1.2 @@ -106,43 +106,16 @@ FUNC_NAME(RADEONWaitForIdle)(ScrnInfoPtr pScrn) { RADEONInfoPtr info = RADEONPTR(pScrn); - unsigned char *RADEONMMIO = info->MMIO; int i = 0; -#ifdef ACCEL_CP - /* Make sure the CP is idle first */ - if (info->CPStarted) { - int ret; - FLUSH_RING(); - - for (;;) { - do { - ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE); - if (ret && ret != -EBUSY) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "%s: CP idle %d\n", __FUNCTION__, ret); - } - } while ((ret == -EBUSY) && (i++ < RADEON_TIMEOUT)); - - if (ret == 0) return; - - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Idle timed out, resetting engine...\n"); - RADEONEngineReset(pScrn); - RADEONEngineRestore(pScrn); +#ifdef ACCEL_MMIO - /* Always restart the engine when doing CP 2D acceleration */ - RADEONCP_RESET(pScrn, info); - RADEONCP_START(pScrn, info); - } - } -#endif + unsigned char *RADEONMMIO = info->MMIO; RADEONTRACE(("WaitForIdle (entering): %d entries, stat=0x%08x\n", INREG(RADEON_RBBM_STATUS) & RADEON_RBBM_FIFOCNT_MASK, INREG(RADEON_RBBM_STATUS))); - /* Wait for the engine to go idle */ RADEONWaitForFifoFunction(pScrn, 64); for (;;) { @@ -166,6 +139,40 @@ } #endif } + +#else /* ACCEL_CP */ + + int ret; + + if (!info->CPStarted) { + RADEONWaitForIdleMMIO(pScrn); + return; + } + + FLUSH_RING(); + + for (;;) { + do { + ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE); + if (ret && ret != -EBUSY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP idle %d\n", __FUNCTION__, ret); + } + } while ((ret == -EBUSY) && (i++ < RADEON_TIMEOUT)); + + if (ret == 0) return; + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Idle timed out, resetting engine...\n"); + RADEONEngineReset(pScrn); + RADEONEngineRestore(pScrn); + + /* Always restart the engine when doing CP 2D acceleration */ + RADEONCP_RESET(pScrn, info); + RADEONCP_START(pScrn, info); + } + +#endif } /* This callback is required for multiheader cards using XAA */ @@ -178,10 +185,21 @@ #ifdef ACCEL_MMIO CARD32 pitch64; + RADEONEntPtr pRADEONEnt; + DevUnion *pPriv; + pPriv = xf86GetEntityPrivate(pScrn->entityList[0], gRADEONEntityIndex); + pRADEONEnt = pPriv->ptr; +#if 0 + /* Not working yet */ + if (pRADEONEnt->IsDRIEnabled) { + RADEONInfoPtr info0 = RADEONPTR(pRADEONEnt->pPrimaryScrn); + RADEONCP_TO_MMIO(pRADEONEnt->pPrimaryScrn, info0); + } +#endif pitch64 = ((pScrn->displayWidth * (pScrn->bitsPerPixel / 8) + 0x3f)) >> 6; - OUTREG(RADEON_DEFAULT_OFFSET, (((INREG(RADEON_DISPLAY_BASE_ADDR) + pScrn->fbOffset) >> 10) | + OUTREG(RADEON_DEFAULT_OFFSET, (((pScrn->fbOffset+INREG(RADEON_DISPLAY_BASE_ADDR))>>10) | (pitch64 << 22))); /* FIXME: May need to restore other things, like BKGD_CLK FG_CLK... */ Index: r128_video.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/r128_video.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- r128_video.c 19 May 2004 23:24:30 -0000 1.1.1.1 +++ r128_video.c 20 May 2004 01:37:59 -0000 1.2 @@ -10,6 +10,17 @@ #include "xf86.h" #include "dixstruct.h" +#include "xf86PciInfo.h" +#include "xf86i2c.h" +#include "fi1236.h" +#include "msp3430.h" +#include "bt829.h" +#include "tda9850.h" +#include "tda8425.h" +#include "generic_bus.h" [...2627 lines suppressed...] + xf86ForceHWCursor (pScrn->pScreen, FALSE); pPriv->videoStatus = FREE_TIMER; pPriv->freeTime = now + FREE_DELAY; } @@ -1011,6 +3058,8 @@ xf86FreeOffscreenLinear(pPriv->linear); pPriv->linear = NULL; } + if (info->cursor_start && pPriv->videoStatus & CLIENT_VIDEO_ON) + xf86ForceHWCursor (pScrn->pScreen, FALSE); pPriv->videoStatus = 0; info->VideoTimerCallback = NULL; } @@ -1018,3 +3067,6 @@ } else /* shouldn't get here */ info->VideoTimerCallback = NULL; } + + +#endif /* !XvExtension */ --- NEW FILE: fi1236.c --- #include "xf86.h" #include "xf86i2c.h" #include "fi1236.h" #include "i2c_def.h" #define NUM_TUNERS 6 const FI1236_parameters tuner_parms[NUM_TUNERS] = { /* 0 - FI1236 */ { 733 ,884 ,12820 ,2516 ,7220 ,0xA2 ,0x94, 0x34, 0x8e }, /* !!!based on documentation - it should be: {733 ,16*55.25 ,16*801.25 ,16*160 ,16*454 ,0xA0 ,0x90, 0x30, 0x8e},*/ /* 1 - FI1216 */ { 623 ,16*48.75 ,16*855.25 ,16*170 ,16*450 ,0xA0 ,0x90, 0x30, 0x8e }, /* 2 - TEMIC FN5AL */ { 623 ,16*45.75 ,16*855.25 ,16*169 ,16*454 ,0xA0 ,0x90, 0x30, 0x8e }, /* 3 - MT2032.. */ { 733 ,768 ,13760 , 0 , 0 , 0 , 0, 0, 0 }, /* 4 - FI1246 */ { 623 ,16*45.75 ,16*855.25 ,16*170 ,16*450 ,0xA0 ,0x90, 0x30, 0x8e }, /* 5 - FI1256 */ { 623 ,16*49.75 ,16*863.25 ,16*170 ,16*450 ,0xA0 ,0x90, 0x30, 0x8e } }; FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr) { FI1236Ptr f; I2CByte a; f = xcalloc(1,sizeof(FI1236Rec)); if(f == NULL) return NULL; f->d.DevName = strdup("FI12xx Tuner"); f->d.SlaveAddr = addr; f->d.pI2CBus = b; f->d.NextDev = NULL; f->d.StartTimeout = b->StartTimeout; f->d.BitTimeout = b->BitTimeout; f->d.AcknTimeout = b->AcknTimeout; f->d.ByteTimeout = b->ByteTimeout; f->type=TUNER_TYPE_FI1236; f->afc_timer_installed=FALSE; f->last_afc_hint=TUNER_OFF; f->video_if=45.7812; if(!I2C_WriteRead(&(f->d), NULL, 0, &a, 1)) { free(f); return NULL; } FI1236_set_tuner_type(f, TUNER_TYPE_FI1236); if(!I2CDevInit(&(f->d))) { free(f); return NULL; } return f; } static void MT2032_dump_parameters(FI1236Ptr f, MT2032_parameters *m) { xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: input f_rf=%g f_if1=%g f_if2=%g f_ref=%g f_ifbw=%g f_step=%g\n", m->f_rf, m->f_if1, m->f_if2, m->f_ref, m->f_ifbw, m->f_step); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: computed f_lo1=%g f_lo2=%g LO1I=%d LO2I=%d SEL=%d STEP=%d NUM=%d\n", m->f_lo1, m->f_lo2, m->LO1I, m->LO2I, m->SEL, m->STEP, m->NUM); } static void MT2032_getid(FI1236Ptr f) { CARD8 out[4]; CARD8 in; in=0x11; I2C_WriteRead(&(f->d), (I2CByte *)&in, 1, out, 4); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: Company code 0x%02x%02x, part code 0x%02x, revision code 0x%02x\n", out[0], out[1], out[2], out[3]); } /* might be buggy */ static void MT2032_shutdown(FI1236Ptr f) { CARD8 data[10]; CARD8 value; data[0]=0x00; /* start with register 0x00 */ data[1]=0x1A; data[2]=0x44; data[3]=0x20; I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0); data[0]=0x05; /* now start with register 0x05 */ data[1]=0xD7; data[2]=0x14; data[3]=0x05; I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0); data[0]=0x0B; /* now start with register 0x05 */ data[1]=0x8F; data[2]=0x07; data[3]=0x43; I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0); usleep(15000); } static void MT2032_init(FI1236Ptr f) { CARD8 data[10]; CARD8 value; CARD8 xogc; MT2032_getid(f); data[0]=0x02; /* start with register 0x02 */ data[1]=0xFF; data[2]=0x0F; data[3]=0x1F; I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0); data[0]=0x06; /* now start with register 0x06 */ data[1]=0xE4; data[2]=0x8F; data[3]=0xC3; data[4]=0x4E; data[5]=0xEC; I2C_WriteRead(&(f->d), (I2CByte *)data, 6, NULL, 0); data[0]=0x0d; /* now start with register 0x0d */ data[1]=0x32; I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); while(1) { usleep(15000); /* wait 15 milliseconds */ data[0]=0x0e; /* register number 7, status */ value=0xFF; if(!I2C_WriteRead(&(f->d), (I2CByte *)data, 1, &value, 1)) xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: failed to read XOK\n"); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: XOK=%d\n", value & 0x01); if(value & 1) break; data[0]=0x07; if(!I2C_WriteRead(&(f->d), (I2CByte *)data, 1, &value, 1)) xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: failed to read XOGC\n"); xogc=value & 0x7; if(xogc==4){ break; /* XOGC has reached 4.. stop */ } xogc--; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: try XOGC=%d\n", xogc); usleep(15000); data[0]=0x07; /* register number 7, control byte 2 */ data[1]=0x08 | xogc; I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); } f->xogc=xogc; /* wait before continuing */ usleep(15000); /* wait 50 milliseconds */ MT2032_dump_status(f); } static int MT2032_no_spur_in_band(MT2032_parameters *m) { int n_max, n1, n2; double f_test; n_max=5; n1=1; while(1){ n2=-n1; f_test=n1*(m->f_lo1-m->f_lo2); while(1){ n2--; f_test=f_test-m->f_lo2; xf86DrvMsg(0, X_INFO, "testing f_test=%g n1=%d n2=%d f_lo1=%g f_lo2=%g f_if2=%g\n", f_test, n1, n2, m->f_lo1, m->f_lo2, m->f_if2); xf86DrvMsg(0, X_INFO, "d_f=%g f_ifbw=%g\n",fabs(fabs(f_test)-m->f_if2), m->f_ifbw); if((fabs(fabs(f_test)-m->f_if2)*2.0)<=m->f_ifbw)return 0; if(n2<=-n_max)break; /* this line in the manual is bogus. I say it is faster and more correct to go over all harmonics.. */ #if 0 if(f_test<(m->f_lo2-m->f_if2-m->f_ifbw))break; #endif } n1++; if(n1>=n_max)return 1; } } static void MT2032_calculate_register_settings(MT2032_parameters *m, double f_rf, double f_if1, double f_if2, double f_ref, double f_ifbw, double f_step) { int n; m->f_rf=f_rf; m->f_if1=f_if1; m->f_if2=f_if2; m->f_ref=f_ref; m->f_ifbw=f_ifbw; m->f_step=f_step; m->f_lo1=f_rf+f_if1; m->LO1I=(int)floor((m->f_lo1/f_ref)+0.5); m->f_lo1=f_ref*m->LO1I; m->f_lo2=m->f_lo1-f_rf-f_if2; /* check for spurs */ n=1; while(n<3){ if(MT2032_no_spur_in_band(m))break; if(m->f_lo1<(f_rf+f_if1)){ m->LO1I+=n; } else { m->LO1I-=n; } m->f_lo1=m->LO1I*f_ref; m->f_lo2=m->f_lo1-f_rf-f_if2; n++; } /* xf86DrvMsg(0, X_INFO, "MT2032: n=%d\n", n); */ /* select VCO */ /* m->f_lo1>1100.0 */ if(m->f_lo1<1370.0)m->SEL=4; else if(m->f_lo1<1530.0)m->SEL=3; else if(m->f_lo1<1720.0)m->SEL=2; else if(m->f_lo1<1890.0)m->SEL=1; else /* m->f_lo1 < 1958.0 */ m->SEL=0; /* calculate the rest of the registers */ m->LO2I=(int)floor(m->f_lo2/f_ref); m->STEP=(int)floor(3780.0*f_step/f_ref); m->NUM=(int)floor(3780.0*(m->f_lo2/f_ref-m->LO2I)); m->NUM=m->STEP*(int)floor((1.0*m->NUM)/(1.0*m->STEP)+0.5); } static int MT2032_wait_for_lock(FI1236Ptr f) { int n; CARD8 data[10]; CARD8 value; n=12; while(1){ data[0]=0x0e; /* register number 7, status */ I2C_WriteRead(&(f->d), (I2CByte *)data, 1, &value, 1); /* xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: LO1LK=%d LO2LK=%d\n", (value & 0x04)>>2, (value & 0x02)>>1); */ if((value & 6)==6) break; usleep(1500); n--; if(n<0)break; } if(n<0){ xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: failed to set frequency\n"); return 0; } return 1; } static void MT2032_implement_settings(FI1236Ptr f, MT2032_parameters *m) { CARD8 data[10]; CARD8 value; data[0]=0x00; /* start with register 0x00 */ data[1]=(m->LO1I>>3)-1; data[2]=(m->SEL<<4)|(m->LO1I & 0x7); data[3]=0x86; I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0); data[0]=0x05; /* start with register 0x05 */ data[1]=((m->LO2I & 0x7)<<5)|((m->LO2I>>3)-1); if(m->f_rf<400.0)data[2]=0xe4; else data[2]=0xf4; I2C_WriteRead(&(f->d), (I2CByte *)data, 3, NULL, 0); data[0]=0x07; /* register number 7, control byte 2 */ I2C_WriteRead(&(f->d), (I2CByte *)data, 1, &value, 1); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: using XOGC=%d\n", (value & 0x07)); data[1]=8 | (value & 0x7); I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); data[0]=0x0b; /* start with register 0x0b */ data[1]=m->NUM & 0xff; data[2]=(1<<7)|((m->NUM >> 8) & 0x0f); I2C_WriteRead(&(f->d), (I2CByte *)data, 3, NULL, 0); MT2032_wait_for_lock(f); } static void MT2032_optimize_VCO(FI1236Ptr f, MT2032_parameters *m) { CARD8 data[10]; CARD8 value; CARD8 TAD1; data[0]=0x0f; /* register number 7, status */ I2C_WriteRead(&(f->d), (I2CByte *)data, 1, &value, 1); TAD1=value & 0x07; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: TAD1=%d SEL=%d\n", TAD1, m->SEL); if(TAD1 < 2)return; if(TAD1==2){ if(m->SEL==0)return; m->SEL--; } else { if(m->SEL>=4)return; m->SEL++; } data[0]=0x01; /* start with register 1 */ data[1]=(m->SEL<<4)|(m->LO1I & 0x7); I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); } static int FI1236_get_afc_hint(FI1236Ptr f) { CARD8 out; CARD8 AFC; I2C_WriteRead(&(f->d), NULL, 0, &out, 1); AFC=out & 0x7; if(AFC==2)return TUNER_TUNED; if(AFC==3)return TUNER_JUST_BELOW; if(AFC==1)return TUNER_JUST_ABOVE; return TUNER_OFF; } static int MT2032_get_afc_hint(FI1236Ptr f) { CARD8 in; CARD8 out[2]; CARD8 AFC; in=0x0e; I2C_WriteRead(&(f->d), (I2CByte *)&in, 1, out, 2); AFC=(out[0]>>4) & 0x7; #if 0 xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC=%d TAD1=%d TAD2=%d\n", AFC, out[1] & 0x7, (out[1]>>4)& 0x07); #endif if(AFC==2)return TUNER_TUNED; if(AFC==3)return TUNER_JUST_BELOW; if(AFC==1)return TUNER_JUST_ABOVE; return TUNER_OFF; } /* this function is for external use only */ int TUNER_get_afc_hint(FI1236Ptr f) { if(f->afc_timer_installed)return TUNER_STILL_TUNING; return f->last_afc_hint; if(f->type==TUNER_TYPE_MT2032) return MT2032_get_afc_hint(f); else return FI1236_get_afc_hint(f); } static void MT2032_dump_status(FI1236Ptr f) { CARD8 in; CARD8 out[2]; CARD8 AFC; CARD8 LDONrb; CARD8 LO1LK, LO2LK, XOK; CARD8 TAD2, TAD1; in=0x0e; I2C_WriteRead(&(f->d), (I2CByte *)&in, 1, out, 2); XOK=out[0] & 1; LO1LK=(out[0]>>2) &1; LO2LK=(out[0]>>1) &1; LDONrb=(out[0]>>3) &1; AFC=(out[0]>>4) & 0x7; TAD1=(out[1] & 0x7); TAD2=(out[1]>>4) & 0x7; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: status: XOK=%d LO1LK=%d LO2LK=%d LDONrb=%d AFC=%d TAD1=%d TAD2=%d\n", XOK, LO1LK, LO2LK, LDONrb, AFC, TAD1, TAD2); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: status: OSCILLATOR:%s PLL1:%s PLL2:%s\n", XOK ? "ok":"off", LO1LK ? "locked" : "off" , LO2LK ? "locked" : "off"); } static void MT2032_tune(FI1236Ptr f, double freq, double step) { MT2032_parameters m; CARD8 data[10]; int i; /* NTSC IF is 44mhz.. but 733/16=45.8125 and all TDAXXXX docs mention 45.75, 39, 58.75 and 30. */ #if 0 MT2032_calculate_register_settings(&m, freq, 1090.0, 45.125, 5.25, 6.0, step); MT2032_calculate_register_settings(&m, freq, 1090.0, 45.74, 5.25, 6.0, step); #endif MT2032_calculate_register_settings(&m, freq, 1090.0, f->video_if, 5.25, 3.0, step); MT2032_dump_parameters(f, &m); MT2032_implement_settings(f, &m); /* MT2032_dump_parameters(f, &m); */ for(i=0;i<3;i++){ MT2032_optimize_VCO(f, &m); if(MT2032_wait_for_lock(f)){ data[0]=0x02; /* LO Gain control register 0x02 */ data[1]=0x20; I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); return; } data[0]=0x07; data[1]=0x88|f->xogc; I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); usleep(15000); data[1]=0x08|f->xogc; I2C_WriteRead(&(f->d), (I2CByte *)data, 2, NULL, 0); } xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: failed to set frequency\n"); } void FI1236_set_tuner_type(FI1236Ptr f, int type) { f->type=type; if(type>=NUM_TUNERS)type = NUM_TUNERS-1; if(type<0)type = 0; memcpy(&(f->parm), &(tuner_parms[type]), sizeof(FI1236_parameters)); f->original_frequency=f->parm.min_freq; f->afc_delta=0; if(type==TUNER_TYPE_MT2032){ MT2032_init(f); return; } } CARD32 AFC_TimerCallback(OsTimerPtr timer, CARD32 time, pointer data){ FI1236Ptr f=(FI1236Ptr)data; if(FI1236_AFC(f))return 150; else { f->afc_timer_installed=FALSE; f->afc_count=0; return 0; } } void FI1236_tune(FI1236Ptr f, CARD32 frequency) { CARD16 divider; if(frequency < f->parm.min_freq) frequency = f->parm.min_freq; if(frequency > f->parm.max_freq) frequency = f->parm.max_freq; divider = (f->parm.fcar+(CARD16)frequency) & 0x7fff; f->tuner_data.div1 = (CARD8)((divider>>8)&0x7f); f->tuner_data.div2 = (CARD8)(divider & 0xff); f->tuner_data.control = f->parm.control; if(frequency < f->parm.threshold1) { f->tuner_data.band = f->parm.band_low; } else if (frequency < f->parm.threshold2) { f->tuner_data.band = f->parm.band_mid; } else { f->tuner_data.band = f->parm.band_high; } #if 0 xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner frequency to %d\n", frequency); #endif I2C_WriteRead(&(f->d), (I2CByte *)&(f->tuner_data), 4, NULL, 0); } void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency) { CARD16 divider; if(frequency < f->parm.min_freq) frequency = f->parm.min_freq; if(frequency > f->parm.max_freq) frequency = f->parm.max_freq; f->afc_delta=0; f->original_frequency=frequency; if(f->type==TUNER_TYPE_MT2032){ MT2032_tune(f, (1.0*frequency)/16.0, 0.0625); } else { FI1236_tune(f, frequency); } if(!f->afc_timer_installed){ f->afc_timer_installed=TRUE; /* RegisterBlockAndWakeupHandlers(FI1236_BlockHandler, AFCWakeup, f); */ TimerSet(NULL, 0, 300, AFC_TimerCallback, f); } } int FI1236_AFC(FI1236Ptr f) { xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: f=%p f->count=%d f->original_frequency=%d f->afc_delta=%d\n", f, f->afc_count, f->original_frequency, f->afc_delta); f->afc_count++; if(f->type==TUNER_TYPE_MT2032){ f->last_afc_hint=MT2032_get_afc_hint(f); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: afc_hint=%d\n", f->last_afc_hint); if(f->last_afc_hint==TUNER_TUNED)return 0; if(f->afc_count>3)f->last_afc_hint=TUNER_OFF; if(f->last_afc_hint==TUNER_OFF){ f->afc_delta=0; } else f->afc_delta+=f->last_afc_hint; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: Setting tuner frequency to %g\n", (0.5*(2*f->original_frequency+f->afc_delta))/16.0); MT2032_tune(f, (1.0*f->original_frequency+0.5*f->afc_delta)/16.0, 0.03125); if(f->last_afc_hint==TUNER_OFF)return 0; return 1; /* call me again */ } else { f->last_afc_hint=FI1236_get_afc_hint(f); if(f->last_afc_hint==TUNER_TUNED)return 0; if(f->afc_count>3)f->last_afc_hint=TUNER_OFF; if(f->last_afc_hint==TUNER_OFF){ f->afc_delta=0; } else f->afc_delta+=f->last_afc_hint; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: Setting tuner frequency to %g\n", (0.5*(2*f->original_frequency+f->afc_delta))/16.0); FI1236_tune(f, f->original_frequency+f->afc_delta); if(f->last_afc_hint==TUNER_OFF)return 0; return 1; /* call me again */ } return 0; /* done */ } void fi1236_dump_status(FI1236Ptr f) { if(f->type==TUNER_TYPE_MT2032){ MT2032_dump_status(f); } } Index: aticonsole.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/aticonsole.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- aticonsole.c 19 May 2004 23:24:13 -0000 1.1.1.1 +++ aticonsole.c 20 May 2004 01:37:59 -0000 1.2 @@ -299,6 +299,10 @@ pScreenPixmap->devPrivate.ptr = NULL; } + #ifdef XvExtension + ATIEnterVT_Video(pScreenInfo); + #endif + return Entered; } @@ -317,6 +321,9 @@ { ScrnInfoPtr pScreenInfo = xf86Screens[iScreen]; + #ifdef XvExtension + ATILeaveVT_Video(pScreenInfo); + #endif ATILeaveGraphics(pScreenInfo, ATIPTR(pScreenInfo)); } --- NEW FILE: theatre.h --- #ifndef __THEATRE_H__ #define __THEATRE_H__ #define MODE_UNINITIALIZED 1 #define MODE_INITIALIZATION_IN_PROGRESS 2 #define MODE_INITIALIZED_FOR_TV_IN 3 typedef struct { GENERIC_BUS_Ptr VIP; int theatre_num; CARD32 theatre_id; int mode; CARD16 video_decoder_type; CARD32 wStandard; CARD32 wConnector; int iHue; int iSaturation; CARD32 wSaturation_U; CARD32 wSaturation_V; int iBrightness; int dbBrightnessRatio; CARD32 wSharpness; int iContrast; int dbContrast; CARD32 wInterlaced; CARD32 wTunerConnector; CARD32 wComp0Connector; CARD32 wSVideo0Connector; CARD32 dwHorzScalingRatio; CARD32 dwVertScalingRatio; } TheatreRec, * TheatrePtr; TheatrePtr DetectTheatre(GENERIC_BUS_Ptr b); /* DO NOT FORGET to setup constants before calling InitTheatre */ void InitTheatre(TheatrePtr t); void RT_SetTint (TheatrePtr t, int hue); void RT_SetSaturation (TheatrePtr t, int Saturation); void RT_SetBrightness (TheatrePtr t, int Brightness); void RT_SetSharpness (TheatrePtr t, CARD16 wSharpness); void RT_SetContrast (TheatrePtr t, int Contrast); void RT_SetInterlace (TheatrePtr t, CARD8 bInterlace); void RT_SetStandard (TheatrePtr t, CARD16 wStandard); void RT_SetCombFilter (TheatrePtr t, CARD16 wStandard, CARD16 wConnector); void RT_SetOutputVideoSize (TheatrePtr t, CARD16 wHorzSize, CARD16 wVertSize, CARD8 fCC_On, CARD8 fVBICap_On); void CalculateCrCbGain (TheatrePtr t, double *CrGain, double *CbGain, CARD16 wStandard); void RT_SetConnector (TheatrePtr t, CARD16 wConnector, int tunerFlag); void RageTheatreDebugGain(TheatrePtr t, Bool on, CARD32 gain); void ShutdownTheatre(TheatrePtr t); void DumpRageTheatreRegs(TheatrePtr t); void ResetTheatreRegsForTVout(TheatrePtr t); #define TheatreSymbolsList \ "InitTheatre" \ "DetectTheatre" \ "RT_SetTint", \ "RT_SetSaturation", \ "RT_SetBrightness", \ "RT_SetSharpness", \ "RT_SetContrast", \ "RT_SetInterlace", \ "RT_SetStandard", \ "RT_SetCombFilter", \ "RT_SetOutputVideoSize", \ "RT_SetConnector", \ "ResetTheatreRegsForNoTVout", \ "ResetTheatreRegsForTVout", \ "DumpRageTheatreRegs", \ "ShutdownTheatre" #ifdef XFree86LOADER #define xf86_DetectTheatre ((TheatrePtr (*)(GENERIC_BUS_Ptr))LoaderSymbol("DetectTheatre")) #define xf86_InitTheatre ((void (*)(TheatrePtr t))LoaderSymbol("InitTheatre")) #define xf86_RT_SetTint ((void (*)(TheatrePtr, int))LoaderSymbol("RT_SetTint")) #define xf86_RT_SetSaturation ((void (*)(TheatrePtr, int))LoaderSymbol("RT_SetSaturation")) #define xf86_RT_SetBrightness ((void (*)(TheatrePtr, int))LoaderSymbol("RT_SetBrightness")) #define xf86_RT_SetSharpness ((void (*)(TheatrePtr, CARD16))LoaderSymbol("RT_SetSharpness")) #define xf86_RT_SetContrast ((void (*)(TheatrePtr, int))LoaderSymbol("RT_SetContrast")) #define xf86_RT_SetInterlace ((void (*)(TheatrePtr, CARD8))LoaderSymbol("RT_SetInterlace")) #define xf86_RT_SetStandard ((void (*)(TheatrePtr, CARD16))LoaderSymbol("RT_SetStandard")) #define xf86_RT_SetOutputVideoSize ((void (*)(TheatrePtr, CARD16, CARD16, CARD8, CARD8))LoaderSymbol("RT_SetOutputVideoSize")) #define xf86_RT_SetConnector ((void (*)(TheatrePtr, CARD16, int))LoaderSymbol("RT_SetConnector")) #define xf86_RageTheatreDebugGain ((void (*)(TheatrePtr, Bool, CARD32))LoaderSymbol("RageTheatreDebugGain")) #define xf86_ShutdownTheatre ((void (*)(TheatrePtr))LoaderSymbol("ShutdownTheatre")) #define xf86_DumpRageTheatreRegs ((void (*)(TheatrePtr))LoaderSymbol("DumpRageTheatreRegs")) #define xf86_ResetTheatreRegsForTVout ((void (*)(TheatrePtr))LoaderSymbol("ResetTheatreRegsForTVout")) #define xf86_ResetTheatreRegsForNoTVout ((void (*)(TheatrePtr))LoaderSymbol("ResetTheatreRegsForNoTVout")) #else #define xf86_DetectTheatre DetectTheatre #define xf86_InitTheatre InitTheatre #define xf86_RT_SetTint RT_SetTint #define xf86_RT_SetSaturation RT_SetSaturation #define xf86_RT_SetBrightness RT_SetBrightness #define xf86_RT_SetSharpness RT_SetSharpness #define xf86_RT_SetContrast RT_SetContrast #define xf86_RT_SetInterlace RT_SetInterlace #define xf86_RT_SetStandard RT_SetStandard #define xf86_RT_SetOutputVideoSize RT_SetOutputVideoSize #define xf86_RT_SetConnector RT_SetConnector #define xf86_RageTheatreDebugGain RageTheatreDebugGain #define xf86_ShutdownTheatre ShutdownTheatre #define xf86_DumpRageTheatreRegs DumpRageTheatreRegs #endif #endif Index: atixv.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/atixv.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- atixv.c 19 May 2004 23:24:24 -0000 1.1.1.1 +++ atixv.c 20 May 2004 01:37:59 -0000 1.2 @@ -21,11 +21,45 @@ * PERFORMANCE OF THIS SOFTWARE. */ +#include "ati.h" #include "atiadapter.h" -#include "atimach64xv.h" #include "atistruct.h" +#include "atiregs.h" +#include "atichip.h" +#include "atimach64io.h" +#include "atimach64xv.h" [...2503 lines suppressed...] + outf(OVERLAY_SCALE_CNTL, 0x80000000); + pPriv->videoStatus = FREE_TIMER; + pPriv->freeTime = time + FREE_DELAY; + } + } else { /* FREE_TIMER */ + if(pPriv->freeTime < time) { + if(pPriv->linear) { + xf86FreeOffscreenLinear(pPriv->linear); + pPriv->linear = NULL; + } + pPriv->videoStatus = 0; + pATI->VideoTimerCallback = NULL; + } + } + } else /* shouldn't get here */ + pATI->VideoTimerCallback = NULL; +} + + +#endif /* !XvExtension */ --- NEW FILE: theatre.c --- #include "xf86.h" #include "generic_bus.h" #include "theatre.h" #include "theatre_reg.h" #undef read #undef write #undef ioctl static Bool theatre_read(TheatrePtr t,CARD32 reg, CARD32 *data) { if(t->theatre_num<0)return FALSE; return t->VIP->read(t->VIP, ((t->theatre_num & 0x3)<<14) | reg,4, (CARD8 *) data); } static Bool theatre_write(TheatrePtr t,CARD32 reg, CARD32 data) { if(t->theatre_num<0)return FALSE; return t->VIP->write(t->VIP,((t->theatre_num & 0x03)<<14) | reg,4, (CARD8 *) &data); [...2167 lines suppressed...] #endif RT_regw(VIP_DFCOUNT, 0x01); /* RT_regw(VIP_CLOCK_SEL_CNTL, 0xb7); /* versus 0x237 <-> 0x2b7 */ RT_regw(VIP_CLOCK_SEL_CNTL, 0x2b7); /* versus 0x237 <-> 0x2b7 */ RT_regw(VIP_VIN_PLL_CNTL, 0x60a6039); /* RT_regw(VIP_PLL_CNTL1, 0xacacac74); */ RT_regw(VIP_FRAME_LOCK_CNTL, 0x0f); /* RT_regw(VIP_ADC_CNTL, 0x02a420a8); RT_regw(VIP_COMB_CNTL_0, 0x0d438083); RT_regw(VIP_COMB_CNTL_2, 0x06080102); RT_regw(VIP_HS_MINMAXWIDTH, 0x462f); ... */ /* RT_regw(VIP_HS_PULSE_WIDTH, 0x359); RT_regw(VIP_HS_PLL_ERROR, 0xab6); RT_regw(VIP_HS_PLL_FS_PATH, 0x7fff08f8); RT_regw(VIP_VS_LINE_COUNT, 0x49b5e005); */ } Index: radeon.h =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/radeon.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- radeon.h 19 May 2004 23:24:30 -0000 1.1.1.1 +++ radeon.h 20 May 2004 01:37:59 -0000 1.2 @@ -530,6 +530,11 @@ void (*VideoTimerCallback)(ScrnInfoPtr, Time); FBLinearPtr videoLinear; int videoKey; + int RageTheatreCrystal; + int RageTheatreTunerPort; + int RageTheatreCompositePort; + int RageTheatreSVideoPort; + int tunerType; /* general */ Bool showCache; @@ -573,6 +578,10 @@ extern int RADEONMinBits(int val); extern void RADEONInitVideo(ScreenPtr pScreen); +#ifdef XvExtension +extern void RADEONLeaveVT_Video(ScrnInfoPtr pScrn); +extern void RADEONEnterVT_Video(ScrnInfoPtr pScrn); +#endif extern void RADEONResetVideo(ScrnInfoPtr pScrn); extern void R300CGWorkaround(ScrnInfoPtr pScrn); Index: atichip.h =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/atichip.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- atichip.h 19 May 2004 23:24:12 -0000 1.1.1.1 +++ atichip.h 20 May 2004 01:37:59 -0000 1.2 @@ -92,9 +92,9 @@ ATI_CHIP_RS100, /* IGP320 */ ATI_CHIP_RS200, /* IGP340 */ ATI_CHIP_RS250, /* Radoen 7000 IGP */ - ATI_CHIP_RV200, /* RV200 */ ATI_CHIP_RADEONMOBILITY7, /* Radeon M7 */ ATI_CHIP_R200, /* R200 */ + ATI_CHIP_RV200, /* RV200 */ ATI_CHIP_RV250, /* RV250 */ ATI_CHIP_RADEONMOBILITY9, /* Radeon M9 */ ATI_CHIP_RS300, /* Radoen 9000 IGP */ --- NEW FILE: fi1236_module.c --- #include "xf86Module.h" static MODULESETUPPROTO(fi1236Setup); static XF86ModuleVersionInfo fi1236VersRec = { "fi1236", MODULEVENDORSTRING, MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */ ABI_VIDEODRV_VERSION, MOD_CLASS_NONE, {0,0,0,0} }; XF86ModuleData fi1236ModuleData = { &fi1236VersRec, fi1236Setup, NULL }; static pointer fi1236Setup(pointer module, pointer opts, int *errmaj, int *errmin) { return (pointer)1; } --- NEW FILE: tda9850_module.c --- #include "xf86Module.h" static MODULESETUPPROTO(tda9850Setup); static XF86ModuleVersionInfo tda9850VersRec = { "tda9850", MODULEVENDORSTRING, MODINFOSTRING1, MODINFOSTRING2, XF86_VERSION_CURRENT, 1, 0, 0, ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */ ABI_VIDEODRV_VERSION, MOD_CLASS_NONE, {0,0,0,0} }; XF86ModuleData tda9850ModuleData = { &tda9850VersRec, tda9850Setup, NULL }; static pointer tda9850Setup(pointer module, pointer opts, int *errmaj, int *errmin) { return (pointer)1; } Index: atichip.c =================================================================== RCS file: /cvsroot/gatos/ati.4.4.0/atichip.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- atichip.c 19 May 2004 23:24:12 -0000 1.1.1.1 +++ atichip.c 20 May 2004 01:37:59 -0000 1.2 @@ -674,11 +674,14 @@ case NewChipID('Q', 'X'): return ATI_CHIP_RV200; + case NewChipID('I', 'd'): + case NewChipID('I', 'e'): case NewChipID('I', 'f'): case NewChipID('I', 'g'): return ATI_CHIP_RV250; case NewChipID('L', 'd'): + case NewChipID('L', 'e'): case NewChipID('L', 'f'): case NewChipID('L', 'g'): return ATI_CHIP_RADEONMOBILITY9; --- NEW FILE: theatre_reg.h --- #ifndef __THEATRE_REGS_H__ #define __THEATRE_REGS_H__ #define VIPH_CH0_DATA 0x0c00 #define VIPH_CH1_DATA 0x0c04 #define VIPH_CH2_DATA 0x0c08 #define VIPH_CH3_DATA 0x0c0c #define VIPH_CH0_ADDR 0x0c10 #define VIPH_CH1_ADDR 0x0c14 #define VIPH_CH2_ADDR 0x0c18 #define VIPH_CH3_ADDR 0x0c1c #define VIPH_CH0_SBCNT 0x0c20 #define VIPH_CH1_SBCNT 0x0c24 #define VIPH_CH2_SBCNT 0x0c28 #define VIPH_CH3_SBCNT 0x0c2c #define VIPH_CH0_ABCNT 0x0c30 #define VIPH_CH1_ABCNT 0x0c34 #define VIPH_CH2_ABCNT 0x0c38 #define VIPH_CH3_ABCNT 0x0c3c #define VIPH_CONTROL 0x0c40 #define VIPH_DV_LAT 0x0c44 #define VIPH_BM_CHUNK 0x0c48 #define VIPH_DV_INT 0x0c4c #define VIPH_TIMEOUT_STAT 0x0c50 #define VIPH_REG_DATA 0x0084 #define VIPH_REG_ADDR 0x0080 /* Address Space Rage Theatre Registers (VIP Access) */ #define VIP_VIP_VENDOR_DEVICE_ID 0x0000 #define VIP_VIP_SUB_VENDOR_DEVICE_ID 0x0004 #define VIP_VIP_COMMAND_STATUS 0x0008 #define VIP_VIP_REVISION_ID 0x000c #define VIP_HW_DEBUG 0x0010 #define VIP_SW_SCRATCH 0x0014 #define VIP_I2C_CNTL_0 0x0020 #define VIP_I2C_CNTL_1 0x0024 #define VIP_I2C_DATA 0x0028 #define VIP_INT_CNTL 0x002c #define VIP_GPIO_INOUT 0x0030 #define VIP_GPIO_CNTL 0x0034 #define VIP_CLKOUT_GPIO_CNTL 0x0038 #define VIP_RIPINTF_PORT_CNTL 0x003c #define VIP_ADC_CNTL 0x0400 #define VIP_ADC_DEBUG 0x0404 #define VIP_STANDARD_SELECT 0x0408 #define VIP_THERMO2BIN_STATUS 0x040c #define VIP_COMB_CNTL0 0x0440 #define VIP_COMB_CNTL1 0x0444 #define VIP_COMB_CNTL2 0x0448 #define VIP_COMB_LINE_LENGTH 0x044c #define VIP_NOISE_CNTL0 0x0450 #define VIP_HS_PLINE 0x0480 #define VIP_HS_DTOINC 0x0484 #define VIP_HS_PLLGAIN 0x0488 #define VIP_HS_MINMAXWIDTH 0x048c #define VIP_HS_GENLOCKDELAY 0x0490 #define VIP_HS_WINDOW_LIMIT 0x0494 #define VIP_HS_WINDOW_OC_SPEED 0x0498 #define VIP_HS_PULSE_WIDTH 0x049c #define VIP_HS_PLL_ERROR 0x04a0 #define VIP_HS_PLL_FS_PATH 0x04a4 #define VIP_SG_BLACK_GATE 0x04c0 #define VIP_SG_SYNCTIP_GATE 0x04c4 #define VIP_SG_UVGATE_GATE 0x04c8 #define VIP_LP_AGC_CLAMP_CNTL0 0x0500 #define VIP_LP_AGC_CLAMP_CNTL1 0x0504 #define VIP_LP_BRIGHTNESS 0x0508 #define VIP_LP_CONTRAST 0x050c #define VIP_LP_SLICE_LIMIT 0x0510 #define VIP_LP_WPA_CNTL0 0x0514 #define VIP_LP_WPA_CNTL1 0x0518 #define VIP_LP_BLACK_LEVEL 0x051c #define VIP_LP_SLICE_LEVEL 0x0520 #define VIP_LP_SYNCTIP_LEVEL 0x0524 #define VIP_LP_VERT_LOCKOUT 0x0528 #define VIP_VS_DETECTOR_CNTL 0x0540 #define VIP_VS_BLANKING_CNTL 0x0544 #define VIP_VS_FIELD_ID_CNTL 0x0548 #define VIP_VS_COUNTER_CNTL 0x054c #define VIP_VS_FRAME_TOTAL 0x0550 #define VIP_VS_LINE_COUNT 0x0554 #define VIP_CP_PLL_CNTL0 0x0580 #define VIP_CP_PLL_CNTL1 0x0584 #define VIP_CP_HUE_CNTL 0x0588 #define VIP_CP_BURST_GAIN 0x058c #define VIP_CP_AGC_CNTL 0x0590 #define VIP_CP_ACTIVE_GAIN 0x0594 #define VIP_CP_PLL_STATUS0 0x0598 #define VIP_CP_PLL_STATUS1 0x059c #define VIP_CP_PLL_STATUS2 0x05a0 #define VIP_CP_PLL_STATUS3 0x05a4 #define VIP_CP_PLL_STATUS4 0x05a8 #define VIP_CP_PLL_STATUS5 0x05ac #define VIP_CP_PLL_STATUS6 0x05b0 #define VIP_CP_PLL_STATUS7 0x05b4 #define VIP_CP_DEBUG_FORCE 0x05b8 #define VIP_CP_VERT_LOCKOUT 0x05bc #define VIP_H_ACTIVE_WINDOW 0x05c0 #define VIP_V_ACTIVE_WINDOW 0x05c4 #define VIP_H_VBI_WINDOW 0x05c8 #define VIP_V_VBI_WINDOW 0x05cc #define VIP_VBI_CONTROL 0x05d0 #define VIP_DECODER_DEBUG_CNTL 0x05d4 #define VIP_SINGLE_STEP_DATA 0x05d8 #define VIP_MASTER_CNTL 0x0040 #define VIP_RGB_CNTL 0x0048 #define VIP_CLKOUT_CNTL 0x004c #define VIP_SYNC_CNTL 0x0050 #define VIP_I2C_CNTL 0x0054 #define VIP_HTOTAL 0x0080 #define VIP_HDISP 0x0084 #define VIP_HSIZE 0x0088 #define VIP_HSTART 0x008c #define VIP_HCOUNT 0x0090 #define VIP_VTOTAL 0x0094 #define VIP_VDISP 0x0098 #define VIP_VCOUNT 0x009c #define VIP_VFTOTAL 0x00a0 #define VIP_DFCOUNT 0x00a4 #define VIP_DFRESTART 0x00a8 #define VIP_DHRESTART 0x00ac #define VIP_DVRESTART 0x00b0 #define VIP_SYNC_SIZE 0x00b4 #define VIP_TV_PLL_FINE_CNTL 0x00b8 #define VIP_CRT_PLL_FINE_CNTL 0x00bc #define VIP_TV_PLL_CNTL 0x00c0 #define VIP_CRT_PLL_CNTL 0x00c4 #define VIP_PLL_CNTL0 0x00c8 #define VIP_PLL_TEST_CNTL 0x00cc #define VIP_CLOCK_SEL_CNTL 0x00d0 #define VIP_VIN_PLL_CNTL 0x00d4 #define VIP_VIN_PLL_FINE_CNTL 0x00d8 #define VIP_AUD_PLL_CNTL 0x00e0 #define VIP_AUD_PLL_FINE_CNTL 0x00e4 #define VIP_AUD_CLK_DIVIDERS 0x00e8 #define VIP_AUD_DTO_INCREMENTS 0x00ec #define VIP_L54_PLL_CNTL 0x00f0 #define VIP_L54_PLL_FINE_CNTL 0x00f4 #define VIP_L54_DTO_INCREMENTS 0x00f8 #define VIP_PLL_CNTL1 0x00fc #define VIP_FRAME_LOCK_CNTL 0x0100 #define VIP_SYNC_LOCK_CNTL 0x0104 #define VIP_TVO_SYNC_PAT_ACCUM 0x0108 #define VIP_TVO_SYNC_THRESHOLD 0x010c #define VIP_TVO_SYNC_PAT_EXPECT 0x0110 #define VIP_DELAY_ONE_MAP_A 0x0114 #define VIP_DELAY_ONE_MAP_B 0x0118 #define VIP_DELAY_ZERO_MAP_A 0x011c #define VIP_DELAY_ZERO_MAP_B 0x0120 #define VIP_TVO_DATA_DELAY_A 0x0140 #define VIP_TVO_DATA_DELAY_B 0x0144 #define VIP_HOST_READ_DATA 0x0180 #define VIP_HOST_WRITE_DATA 0x0184 #define VIP_HOST_RD_WT_CNTL 0x0188 #define VIP_VSCALER_CNTL1 0x01c0 #define VIP_TIMING_CNTL 0x01c4 #define VIP_VSCALER_CNTL2 0x01c8 #define VIP_Y_FALL_CNTL ... [truncated message content] |
|
From: <gat...@li...> - 2004-05-19 23:41:53
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31687 Removed Files: Tag: orig Makefile Log Message: Makefile needs to be regenerated for each checkout. --- Makefile DELETED --- |
|
From: <gat...@li...> - 2004-05-19 23:40:49
|
Update of /cvsroot/gatos/ati.4.4.0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31488 Removed Files: Makefile Log Message: Makefile needs to be regenerated for each checkout. --- Makefile DELETED --- |
|
From: <gat...@li...> - 2004-01-18 16:00:41
|
Update of /cvsroot/gatos/ati.2
In directory sc8-pr-cvs1:/tmp/cvs-serv21851
Modified Files:
radeon_video.c
Log Message:
Disable I2C bus initialization on Radeon 9000 chips.
Index: radeon_video.c
===================================================================
RCS file: /cvsroot/gatos/ati.2/radeon_video.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -d -r1.99 -r1.100
--- radeon_video.c 7 Dec 2003 22:49:55 -0000 1.99
+++ radeon_video.c 18 Jan 2004 16:00:38 -0000 1.100
@@ -1926,6 +1926,18 @@
case PCI_CHIP_RADEON_LW:
xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Detected Radeon Mobility M7, disabling i2c and Rage Theatre\n");
break;
+ #ifndef PCI_CHIP_RADEON_If
+ #define PCI_CHIP_RADEON_If 0x496e
+ #endif
+ case PCI_CHIP_RADEON_If:
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Detected Radeon 9000 - skipping i2c initialization code.\n");
+ if(!pPriv->MM_TABLE_valid){
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Multimedia table is not valid and no forced settings have been specified\n");
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Skipping Rage Theatre initialization code.\n");
+ } else {
+ pPriv->theatre=xf86_DetectTheatre(pPriv->VIP);
+ }
+ break;
default:
if(!pPriv->MM_TABLE_valid){
xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Multimedia table is not valid and no forced settings have been specified\n");
|
|
From: <gat...@li...> - 2004-01-14 06:30:54
|
Update of /cvsroot/gatos/km
In directory sc8-pr-cvs1:/tmp/cvs-serv27896
Modified Files:
radeon.c radeon.h rage128.c rage128.h mach64.c mach64.h
Log Message:
Added support for the new style irq handler returns in kernel 2.6
Index: radeon.c
===================================================================
RCS file: /cvsroot/gatos/km/radeon.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- radeon.c 11 Jan 2004 21:10:23 -0000 1.95
+++ radeon.c 14 Jan 2004 06:30:51 -0000 1.96
@@ -390,7 +390,7 @@
stream, buffer, KM_TRANSFER_TO_SYSTEM_RAM, radeon_start_request_transfer, kms);
}
-void radeon_km_irq(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t radeon_km_irq(int irq, void *dev_id, struct pt_regs *regs)
{
KM_STRUCT *kms;
u32 status, status_cap, mask;
@@ -418,7 +418,7 @@
INT_BIT_CAP0;
if(!status){
/* INT_BIT_CAP0 will tell us if any interrupt bits are high */
- return;
+ return IRQ_NONE;
}
atomic_inc(&(kms->recursion_count));
/* bug ?? For some reason I think that changing recursion count in
@@ -428,7 +428,7 @@
if(atomic_read(&(kms->recursion_count))>1){
printk("km: irq handler double entry\n");
atomic_dec(&(kms->recursion_count));
- return; /* another interrupt handler is active */
+ return IRQ_NONE; /* another interrupt handler is active */
}
status_cap=0;
if(status & INT_BIT_CAP0){
@@ -488,6 +488,7 @@
}
atomic_dec(&(kms->recursion_count));
}
+ return IRQ_HANDLED;
}
/* this is now done in ati.2 XFree86 driver */
Index: radeon.h
===================================================================
RCS file: /cvsroot/gatos/km/radeon.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- radeon.h 24 Feb 2003 19:23:58 -0000 1.13
+++ radeon.h 14 Jan 2004 06:30:51 -0000 1.14
@@ -17,7 +17,7 @@
void radeon_stop_transfer(KM_STRUCT *kms);
void radeon_start_vbi_transfer(KM_STRUCT *kms);
void radeon_stop_vbi_transfer(KM_STRUCT *kms);
-void radeon_km_irq(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t radeon_km_irq(int irq, void *dev_id, struct pt_regs *regs);
int radeon_init_hardware(KM_STRUCT *kms);
void radeon_uninit_hardware(KM_STRUCT *kms);
int radeon_verify_page(KM_STRUCT *kms, long addr);
Index: rage128.c
===================================================================
RCS file: /cvsroot/gatos/km/rage128.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- rage128.c 11 Jan 2004 21:10:23 -0000 1.42
+++ rage128.c 14 Jan 2004 06:30:51 -0000 1.43
@@ -201,7 +201,7 @@
return 1;
}
-void rage128_km_irq(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t rage128_km_irq(int irq, void *dev_id, struct pt_regs *regs)
{
KM_STRUCT *kms;
long status, mask;
@@ -218,7 +218,7 @@
if(!rage128_is_capture_irq_active(kms)){
status=readl(kms->reg_aperture+RAGE128_GEN_INT_STATUS);
mask=readl(kms->reg_aperture+RAGE128_GEN_INT_CNTL);
- if(!(status & mask))return;
+ if(!(status & mask))return IRQ_NONE;
rage128_wait_for_idle(kms);
if(status & (1<<16))acknowledge_dma(kms);
writel(status & mask, kms->reg_aperture+RAGE128_GEN_INT_STATUS);
@@ -229,4 +229,5 @@
}
}
}
+ return IRQ_HANDLED;
}
Index: rage128.h
===================================================================
RCS file: /cvsroot/gatos/km/rage128.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- rage128.h 8 Feb 2003 16:19:52 -0000 1.6
+++ rage128.h 14 Jan 2004 06:30:51 -0000 1.7
@@ -13,7 +13,7 @@
void rage128_get_window_parameters(KM_STRUCT *kms, struct video_window *vwin);
void rage128_start_transfer(KM_STRUCT *kms);
void rage128_stop_transfer(KM_STRUCT *kms);
-void rage128_km_irq(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t rage128_km_irq(int irq, void *dev_id, struct pt_regs *regs);
Index: mach64.c
===================================================================
RCS file: /cvsroot/gatos/km/mach64.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- mach64.c 11 Jan 2004 21:10:23 -0000 1.51
+++ mach64.c 14 Jan 2004 06:30:51 -0000 1.52
@@ -169,7 +169,7 @@
stream, buffer, KM_TRANSFER_TO_SYSTEM_RAM, mach64_start_request_transfer, kms);
}
-void mach64_km_irq(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t mach64_km_irq(int irq, void *dev_id, struct pt_regs *regs)
{
KM_STRUCT *kms;
long status, status_cap, mask;
@@ -213,4 +213,5 @@
}
if(!(status & (MACH64_CAPBUF0_INT_ACK|MACH64_CAPBUF1_INT_ACK|MACH64_BUSMASTER_INT_ACK)))return;
}
+ return IRQ_HANDLED;
}
Index: mach64.h
===================================================================
RCS file: /cvsroot/gatos/km/mach64.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mach64.h 8 Feb 2003 16:19:52 -0000 1.6
+++ mach64.h 14 Jan 2004 06:30:51 -0000 1.7
@@ -13,7 +13,7 @@
void mach64_get_window_parameters(KM_STRUCT *kms, struct video_window *vwin);
void mach64_start_transfer(KM_STRUCT *kms);
void mach64_stop_transfer(KM_STRUCT *kms);
-void mach64_km_irq(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t mach64_km_irq(int irq, void *dev_id, struct pt_regs *regs);
|
|
From: <gat...@li...> - 2004-01-14 06:15:40
|
Update of /cvsroot/gatos/km
In directory sc8-pr-cvs1:/tmp/cvs-serv25344
Modified Files:
km.h
Log Message:
Use the new style irq handler for 2.6 kernels and add some defines to
preserve backwards compatibility with 2.4 kernels
Index: km.h
===================================================================
RCS file: /cvsroot/gatos/km/km.h,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- km.h 14 Dec 2003 19:27:03 -0000 1.50
+++ km.h 14 Jan 2004 06:15:37 -0000 1.51
@@ -16,6 +16,13 @@
#define KM_VERSION "alpha-3.0"
+#ifndef LINUX_2_6
+typedef void irqreturn_t;
+#define IRQ_NONE
+#define IRQ_HANDLED
+#define IRQ_RETVAL(x)
+#endif
+
typedef struct {
u32 from_addr;
u32 to_addr;
@@ -125,7 +132,7 @@
KM_FIELD *kmfl;
int (*init_hardware)(struct S_KM_STRUCT *kms);
void (*uninit_hardware)(struct S_KM_STRUCT *kms);
- void (*irq_handler)(int irq, void *dev_id, struct pt_regs *regs);
+ irqreturn_t (*irq_handler)(int irq, void *dev_id, struct pt_regs *regs);
int (*is_capture_active)(struct S_KM_STRUCT *kms);
int (*is_vbi_active)(struct S_KM_STRUCT *kms);
void (*get_window_parameters)(struct S_KM_STRUCT *kms, struct video_window *vwin);
|
|
From: <gat...@li...> - 2004-01-14 00:06:02
|
Update of /cvsroot/gatos/avview
In directory sc8-pr-cvs1:/tmp/cvs-serv31426
Modified Files:
avview.scp
Log Message:
Fix forgotten backslash that shows up when alsa_present == false
Index: avview.scp
===================================================================
RCS file: /cvsroot/gatos/avview/avview.scp,v
retrieving revision 1.150
retrieving revision 1.151
diff -u -d -r1.150 -r1.151
--- avview.scp 5 Jan 2004 21:03:45 -0000 1.150
+++ avview.scp 14 Jan 2004 00:05:59 -0000 1.151
@@ -865,7 +865,7 @@
"Display capture(V4L) subsection" checkbutton capture_window \
"Use physical screen size for aspect ratio" checkbutton use_physical_screen_size \
"Temporary message stays visible for as long as (secs)" choice { message_visible_secs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 } \
- "Warn about missing km" checkbutton warn_about_missing_km
+ "Warn about missing km" checkbutton warn_about_missing_km \
"Color theme" choice [concat theme_name $theme_names]
}
|
|
From: <gat...@li...> - 2004-01-11 21:14:14
|
Update of /cvsroot/gatos/km
In directory sc8-pr-cvs1:/tmp/cvs-serv6891
Added Files:
Makefile-2.6
Log Message:
new makefile needed for compilation of the km modules with linux kernel 2.6
--- NEW FILE: Makefile-2.6 ---
# to compile for linux kernel>2.6.0 rename this file to Makefile and then
# compile with: make -C /usr/src/linux-2.6.X SUBDIRS=$PWD modules
CFLAGS += -DLINUX_2_6
KM_OBJS=km.o km_v4l.o km_memory.o radeon.o mach64.o rage128.o
KM_API_OBJS=km_api.o km_api_data.o km_memory.o
km_drv-objs := ${KM_OBJS}
km_api_drv-objs := ${KM_API_OBJS}
obj-m += km_drv.o
obj-m += km_api_drv.o
|
|
From: <gat...@li...> - 2004-01-11 21:10:27
|
Update of /cvsroot/gatos/km
In directory sc8-pr-cvs1:/tmp/cvs-serv6007
Modified Files:
km.c km_api.c km_api_data.c km_memory.c km_v4l.c mach64.c
radeon.c rage128.c
Log Message:
adds support for linux kernel>2.6. The changes should be backwards compatible
Compiling for 2.4 should work with the unmodified 2.4 makefile.
Compiling for 2.6 is done with Makefile-2.6, required now by the module
linking stage in the 2.6 kernels.
No new features were added.
Index: km.c
===================================================================
RCS file: /cvsroot/gatos/km/km.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -d -r1.89 -r1.90
--- km.c 14 Dec 2003 21:57:05 -0000 1.89
+++ km.c 11 Jan 2004 21:10:23 -0000 1.90
@@ -11,8 +11,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/types.h>
#include <linux/config.h>
@@ -24,7 +28,9 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
+#ifndef LINUX_2_6
#include <linux/wrapper.h>
+#endif
#include <linux/videodev.h>
@@ -680,8 +686,17 @@
#define FIELD(name) kms->kmfl[find_kmfl(kms->kmfl, name)]
+#ifdef LINUX_2_6
+#ifdef CONFIG_PCI_NAMES
+FIELD("DEVICE_ID").data.c.string=kmalloc(strlen(dev->pretty_name)+1, GFP_KERNEL);
+memcpy(FIELD("DEVICE_ID").data.c.string, dev->pretty_name, strlen(dev->pretty_name)+1);
+#else
+FIELD("DEVICE_ID").data.c.string=0;
+#endif
+#else
FIELD("DEVICE_ID").data.c.string=kmalloc(strlen(dev->name)+1, GFP_KERNEL);
memcpy(FIELD("DEVICE_ID").data.c.string, dev->name, strlen(dev->name)+1);
+#endif
FIELD("LOCATION_ID").data.c.string=kmalloc(strlen(dev->slot_name)+10, GFP_KERNEL);
sprintf(FIELD("LOCATION_ID").data.c.string, "PCI:%s", dev->slot_name);
@@ -716,8 +731,18 @@
FIELD("VBI_STREAM_ACTIVE").data.t.priv=kms;
kms->kmd=add_km_device(kms->kmfl, kms);
+#ifdef LINUX_2_6
+#ifdef CONFIG_PCI_NAMES
+printk("Device %s %s (0x%04x:0x%04x) corresponds to /dev/video%d\n",
+ dev->pretty_name, dev->slot_name, dev->vendor, dev->device, kms->vd.minor);
+#else
+printk("Device %s (0x%04x:0x%04x) corresponds to /dev/video%d\n",
+ dev->slot_name, dev->vendor, dev->device, kms->vd.minor);
+#endif
+#else
printk("Device %s %s (0x%04x:0x%04x) corresponds to /dev/video%d\n",
dev->name, dev->slot_name, dev->vendor, dev->device, kms->vd.minor);
+#endif
pci_set_master(dev);
printk("kms variables: reg_aperture=0x%08x\n",
kms->reg_aperture);
@@ -977,7 +1002,7 @@
static int __init init_module(void)
{
int result;
-struct pci_dev *pdev;
+struct pci_dev *pdev=0;
const struct pci_device_id *pdid;
/* this does not do anything useful at the moment */
@@ -988,7 +1013,11 @@
printk("Page size is %ld sizeof(bm_list_descriptor)=%d sizeof(KM_STRUCT)=%d\n", PAGE_SIZE, sizeof(bm_list_descriptor), sizeof(KM_STRUCT));
num_devices=0;
result=-1;
+#ifdef LINUX_2_6
+ while( (pdev = pci_get_device(PCI_VENDOR_ID_ATI, PCI_ANY_ID, pdev))!=NULL ){
+#else
pci_for_each_dev(pdev){
+#endif
if((pdid=pci_match_device(km_pci_tbl, pdev))!=NULL){
if(km_probe(pdev, pdid)>=0)result=0;
}
Index: km_api.c
===================================================================
RCS file: /cvsroot/gatos/km/km_api.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- km_api.c 14 Dec 2003 21:57:05 -0000 1.38
+++ km_api.c 11 Jan 2004 21:10:23 -0000 1.39
@@ -9,8 +9,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/proc_fs.h>
@@ -186,7 +190,9 @@
kmd=(devices[number]);
if((kmd==NULL)||(kmd->fields==NULL))return NULL;
+#ifndef LINUX_2_6
MOD_INC_USE_COUNT;
+#endif
spin_lock(&(kmd->lock));
kmfpd=kmalloc(sizeof(KM_FILE_PRIVATE_DATA), GFP_KERNEL);
@@ -273,7 +279,9 @@
}
spin_unlock(&(kmd->lock));
+#ifndef LINUX_2_6
MOD_DEC_USE_COUNT;
+#endif
}
static int km_fo_control_release(struct inode * inode, struct file * file)
@@ -464,14 +472,18 @@
KM_DEVICE * kmd=NULL;
KM_FIELD *kf=NULL;
num=-1;
+#ifndef LINUX_2_6
MOD_INC_USE_COUNT;
+#endif
for(i=0;(num<0)&&(i<devices_free);i++){
if(devices[i]==NULL)num=i;
}
if(num<0){
if(devices_free>=devices_size)expand_devices();
if(devices_free>=devices_size){
- MOD_DEC_USE_COUNT;
+#ifndef LINUX_2_6
+ MOD_DEC_USE_COUNT;
+#endif
return -ENOMEM;
}
num=devices_free;
@@ -479,7 +491,9 @@
}
kmd=kmalloc(sizeof(KM_DEVICE), GFP_KERNEL);
if(kmd==NULL){
- MOD_DEC_USE_COUNT;
+#ifndef LINUX_2_6
+ MOD_DEC_USE_COUNT;
+#endif
return -ENOMEM;
}
devices[num]=kmd;
@@ -555,7 +569,9 @@
kfree(kmd);
}
spin_unlock(&(kmd->lock));
+#ifndef LINUX_2_6
MOD_DEC_USE_COUNT;
+#endif
return 0;
}
Index: km_api_data.c
===================================================================
RCS file: /cvsroot/gatos/km/km_api_data.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- km_api_data.c 18 Feb 2003 11:59:38 -0000 1.19
+++ km_api_data.c 11 Jan 2004 21:10:23 -0000 1.20
@@ -9,8 +9,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/proc_fs.h>
@@ -43,11 +47,15 @@
if(data_unit<0)return NULL;
if(data_unit>=du_free)return NULL;
kdu=&(data_units[data_unit]);
+#ifndef LINUX_2_6
MOD_INC_USE_COUNT;
+#endif
spin_lock(&(kdu->lock));
spin_unlock(&data_units_lock);
if(kdu->use_count<=0){
- MOD_DEC_USE_COUNT;
+#ifndef LINUX_2_6
+ MOD_DEC_USE_COUNT;
+#endif
spin_unlock(&(kdu->lock));
return NULL;
}
@@ -55,7 +63,9 @@
kdufpd=kmalloc(sizeof(KDU_FILE_PRIVATE_DATA), GFP_KERNEL);
if(kdufpd==NULL){
kdu->use_count--;
- MOD_DEC_USE_COUNT;
+#ifndef LINUX_2_6
+ MOD_DEC_USE_COUNT;
+#endif
spin_unlock(&(kdu->lock));
return NULL;
}
@@ -78,7 +88,9 @@
spin_lock(&(kdu->lock));
kdu->use_count--;
spin_unlock(&(kdu->lock));
+#ifndef LINUX_2_6
MOD_DEC_USE_COUNT;
+#endif
kfree(kdufpd);
}
@@ -261,7 +273,11 @@
if(chunk_size*i+PAGE_SIZE*j>offset+size)return 0;
page=kvirt_to_pa(dvb->ptr[i]+j*PAGE_SIZE);
start=vma->vm_start+chunk_size*i+PAGE_SIZE*j-offset;
+#ifdef LINUX_2_6
+ if(remap_page_range(vma,start, page, PAGE_SIZE, PAGE_SHARED))
+#else
if(remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED))
+#endif
return -EAGAIN;
}
return 0;
@@ -329,7 +345,9 @@
}
du_free++;
}
+#ifndef LINUX_2_6
MOD_INC_USE_COUNT;
+#endif
kdu=&(data_units[k]);
spin_lock_init(&(kdu->lock));
spin_lock(&(kdu->lock));
@@ -345,7 +363,9 @@
if(kdu->data==NULL){
printk(KERN_ERR "Could not create proc entry %s\n", temp);
spin_unlock(&(kdu->lock));
- MOD_DEC_USE_COUNT;
+#ifndef LINUX_2_6
+ MOD_DEC_USE_COUNT;
+#endif
return -1;
}
kdu->data->data=kdu;
@@ -398,7 +418,9 @@
spin_unlock(&data_units_lock);
kdu->use_count--;
if(kdu->use_count>0){
- MOD_DEC_USE_COUNT;
+#ifndef LINUX_2_6
+ MOD_DEC_USE_COUNT;
+#endif
spin_unlock(&(kdu->lock));
return; /* something is still using it */
}
@@ -410,7 +432,9 @@
}
if(kdu->free_private!=NULL)kdu->free_private(kdu);
spin_unlock(&(kdu->lock));
+#ifndef LINUX_2_6
MOD_DEC_USE_COUNT;
+#endif
}
int __init init_km_data_units(void)
Index: km_memory.c
===================================================================
RCS file: /cvsroot/gatos/km/km_memory.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- km_memory.c 24 Feb 2003 01:17:43 -0000 1.6
+++ km_memory.c 11 Jan 2004 21:10:23 -0000 1.7
@@ -7,8 +7,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/types.h>
#include <linux/config.h>
@@ -19,8 +23,13 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
+#ifndef LINUX_2_6
#include <linux/wrapper.h>
+#endif
#include <linux/mm.h>
+#ifdef LINUX_2_6
+#include <linux/page-flags.h>
+#endif
#include "km_memory.h"
@@ -40,7 +49,11 @@
while (size > 0)
{
page = vmalloc_to_page((void *)adr);
+#ifdef LINUX_2_6
+ SetPageReserved(page);
+#else
mem_map_reserve(page);
+#endif
adr+=PAGE_SIZE;
size-=PAGE_SIZE;
}
@@ -59,7 +72,11 @@
while (size > 0)
{
page =vmalloc_to_page((void *)adr);
+#ifdef LINUX_2_6
+ ClearPageReserved(page);
+#else
mem_map_unreserve(page);
+#endif
adr+=PAGE_SIZE;
size-=PAGE_SIZE;
}
Index: km_v4l.c
===================================================================
RCS file: /cvsroot/gatos/km/km_v4l.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- km_v4l.c 14 Dec 2003 21:57:05 -0000 1.45
+++ km_v4l.c 11 Jan 2004 21:10:23 -0000 1.46
@@ -9,8 +9,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/types.h>
#include <linux/config.h>
@@ -21,14 +25,23 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
+#ifndef LINUX_2_6
#include <linux/wrapper.h>
+#endif
#include <linux/videodev.h>
#include "km.h"
#include "km_memory.h"
+#ifdef LINUX_2_6
+static int km_v4l_open(struct inode *inode, struct file *file)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static int km_v4l_open(struct video_device *dev, int flags)
{
+#endif
+
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
int result;
@@ -52,8 +65,14 @@
}
+#ifdef LINUX_2_6
+static int km_v4l_close(struct inode *inode, struct file *file)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static void km_v4l_close(struct video_device *dev)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
km_data_destroy_kdufpd(kms->v4l_kdufpd);
@@ -61,17 +80,30 @@
close_km_device(kms->kmfpd);
kms->kmfpd=NULL;
+ return 0;
}
+#ifdef LINUX_2_6
+static ssize_t km_v4l_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
+{
+#else
static long km_v4l_write(struct video_device *v, const char *buf, unsigned long count, int nonblock)
{
+#endif
return -EINVAL;
}
+#ifdef LINUX_2_6
+static ssize_t km_v4l_read(struct file *file, char *buf, size_t count, loff_t *ppos)
+{
+ struct video_device *v = video_devdata(file);
+int done, nonblock = O_NONBLOCK&(file->f_flags);
+#else
static long km_v4l_read(struct video_device *v, char *buf, unsigned long count, int nonblock)
{
-KM_STRUCT *kms=(KM_STRUCT *)v->priv;
int done;
+#endif
+KM_STRUCT *kms=(KM_STRUCT *)v->priv;
KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd;
done=km_data_generic_stream_read(kdufpd, &(kms->capture.dvb),
@@ -85,8 +117,15 @@
return done;
}
+#ifdef LINUX_2_6
+static int km_v4l_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long ul_arg)
+{
+ void *arg = (void *)ul_arg;
+ struct video_device *dev = video_devdata(file);
+#else
static int km_v4l_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
spin_lock(&(kms->kms_lock));
switch(cmd){
@@ -163,10 +202,16 @@
}
/* ignore this - it is bogus */
+#ifdef LINUX_2_6
+static int km_v4l_mmap(struct file *file, struct vm_area_struct *vma)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static int km_v4l_mmap(struct video_device *dev, const char *adr, unsigned long size)
{
-KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
unsigned long start=(unsigned long) adr;
+#endif
+KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
unsigned long page,pos;
KDU_FILE_PRIVATE_DATA *kdufpd=kms->v4l_kdufpd;
return -ENOMEM;
@@ -195,16 +240,28 @@
return 0;
}
+#ifdef LINUX_2_6
+static unsigned int km_v4l_poll(struct file *file, poll_table *wait)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static unsigned int km_v4l_poll(struct video_device *dev, struct file *file,
poll_table *wait)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
return km_data_generic_stream_poll(kms->v4l_kdufpd, &(kms->capture.dvb), file, wait);
}
+#ifdef LINUX_2_6
+static int km_vbi_open(struct inode *inode, struct file *file)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static int km_vbi_open(struct video_device *dev, int flags)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
int result;
@@ -220,8 +277,14 @@
}
+#ifdef LINUX_2_6
+static int km_vbi_close(struct inode *inode, struct file *file)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static void km_vbi_close(struct video_device *dev)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
km_data_destroy_kdufpd(kms->vbi_kdufpd);
@@ -229,15 +292,26 @@
stop_vbi_capture(kms);
}
+#ifdef LINUX_2_6
+static ssize_t km_vbi_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
+#else
static long km_vbi_write(struct video_device *v, const char *buf, unsigned long count, int nonblock)
+#endif
{
return -EINVAL;
}
+#ifdef LINUX_2_6
+static ssize_t km_vbi_read(struct file *file, char *buf, size_t count, loff_t *ppos)
+{
+ struct video_device *v = video_devdata(file);
+ int done,r, nonblock = O_NONBLOCK&(file->f_flags);
+#else
static long km_vbi_read(struct video_device *v, char *buf, unsigned long count, int nonblock)
{
-KM_STRUCT *kms=(KM_STRUCT *)v->priv;
int done,r;
+#endif
+KM_STRUCT *kms=(KM_STRUCT *)v->priv;
KDU_FILE_PRIVATE_DATA *kdufpd=kms->vbi_kdufpd;
/* V4L reading apps *expect* to receive *two* full fields of data.. wacky !
@@ -263,8 +337,15 @@
#define BTTV_VBISIZE _IOR('v' , BASE_VIDIOCPRIVATE+8, int)
#endif
+#ifdef LINUX_2_6
+static int km_vbi_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long ul_arg)
+{
+ void *arg = (void *)ul_arg;
+ struct video_device *dev = video_devdata(file);
+#else
static int km_vbi_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
long size;
@@ -311,9 +392,15 @@
}
}
+#ifdef LINUX_2_6
+static unsigned int km_vbi_poll(struct file *file, poll_table *wait)
+{
+ struct video_device *dev = video_devdata(file);
+#else
static unsigned int km_vbi_poll(struct video_device *dev, struct file *file,
poll_table *wait)
{
+#endif
KM_STRUCT *kms=(KM_STRUCT *)dev->priv;
if(kms->vbi_kdufpd==NULL)return -EINVAL;
@@ -324,12 +411,29 @@
#define VID_HARDWARE_KM 100
#endif
+#ifdef LINUX_2_6
+static struct file_operations km_v4l_fops = {
+ .owner = THIS_MODULE,
+ .open = km_v4l_open,
+ .release = km_v4l_close,
+ .read = km_v4l_read,
+ .write = km_v4l_write,
+ .mmap = km_v4l_mmap,
+ .ioctl = km_v4l_ioctl,
+ .poll = km_v4l_poll,
+ .llseek = no_llseek
+};
+#endif
+
static struct video_device km_v4l_template=
{
owner: THIS_MODULE,
name: "Km",
type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT,
hardware: VID_HARDWARE_KM,
+#ifdef LINUX_2_6
+ fops: &km_v4l_fops,
+#else
open: km_v4l_open,
close: km_v4l_close,
read: km_v4l_read,
@@ -337,20 +441,38 @@
ioctl: km_v4l_ioctl,
poll: km_v4l_poll,
mmap: km_v4l_mmap,
+#endif
minor: -1,
};
+#ifdef LINUX_2_6
+static struct file_operations km_vbi_fops = {
+ .owner = THIS_MODULE,
+ .open = km_vbi_open,
+ .release = km_vbi_close,
+ .read = km_vbi_read,
+ .write = km_vbi_write,
+ .ioctl = km_vbi_ioctl,
+ .poll = km_vbi_poll,
+ .llseek = no_llseek
+};
+#endif
+
static struct video_device km_v4l_vbi_template=
{
owner: THIS_MODULE,
name: "Km",
type: VID_TYPE_CAPTURE|VID_TYPE_TELETEXT,
hardware: VID_HARDWARE_KM,
+#ifdef LINUX_2_6
+ fops: &km_vbi_fops,
+#else
open: km_vbi_open,
close: km_vbi_close,
read: km_vbi_read,
ioctl: km_vbi_ioctl,
poll: km_vbi_poll,
+#endif
minor: -1,
};
Index: mach64.c
===================================================================
RCS file: /cvsroot/gatos/km/mach64.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- mach64.c 5 Mar 2003 17:23:54 -0000 1.50
+++ mach64.c 11 Jan 2004 21:10:23 -0000 1.51
@@ -9,8 +9,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/types.h>
#include <linux/config.h>
@@ -21,7 +25,9 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
+#ifndef LINUX_2_6
#include <linux/wrapper.h>
+#endif
#include <linux/videodev.h>
#include <linux/delay.h>
Index: radeon.c
===================================================================
RCS file: /cvsroot/gatos/km/radeon.c,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -d -r1.94 -r1.95
--- radeon.c 6 Mar 2003 07:35:16 -0000 1.94
+++ radeon.c 11 Jan 2004 21:10:23 -0000 1.95
@@ -9,8 +9,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/types.h>
#include <linux/config.h>
@@ -21,7 +25,9 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
+#ifndef LINUX_2_6
#include <linux/wrapper.h>
+#endif
#include <linux/videodev.h>
#include <linux/delay.h>
Index: rage128.c
===================================================================
RCS file: /cvsroot/gatos/km/rage128.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- rage128.c 5 Mar 2003 17:23:55 -0000 1.41
+++ rage128.c 11 Jan 2004 21:10:23 -0000 1.42
@@ -9,8 +9,12 @@
#include <linux/autoconf.h>
#if defined(MODULE) && defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
+#ifdef LINUX_2_6
+#include <config/modversions.h>
+#else
#include <linux/modversions.h>
#endif
+#endif
#include <linux/types.h>
#include <linux/config.h>
@@ -21,7 +25,9 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
+#ifndef LINUX_2_6
#include <linux/wrapper.h>
+#endif
#include <linux/videodev.h>
#include <linux/delay.h>
|
|
From: <gat...@li...> - 2004-01-11 16:51:22
|
Update of /cvsroot/gatos/km
In directory sc8-pr-cvs1:/tmp/cvs-serv11303
Modified Files:
Makefile README km.actual.rfc.txt km_api.h
Log Message:
Update documentation.
Reduce amount of debugging messages.
Index: Makefile
===================================================================
RCS file: /cvsroot/gatos/km/Makefile,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- Makefile 30 Nov 2003 02:20:48 -0000 1.17
+++ Makefile 11 Jan 2004 16:51:07 -0000 1.18
@@ -61,7 +61,7 @@
install km_drv.o /lib/modules/`uname -r`/misc/
tarball:
- (cd .. ; tar cvf - km/*.[c,h] km/Makefile km/README | gzip - ) > km.tgz
+ (cd .. ; tar cvf - km/*.[c,h] km/Makefile km/README km/km.*.txt km/test*.tcl | gzip - ) > km.tgz
remove:
rmmod km_drv || true
Index: README
===================================================================
RCS file: /cvsroot/gatos/km/README,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- README 25 Feb 2003 07:18:18 -0000 1.12
+++ README 11 Jan 2004 16:51:12 -0000 1.13
@@ -39,18 +39,21 @@
ATI cards have only one overlay scaler unit and both xawtv and
xv_stream need it.
- 3) what can you do if you have one computer ? Get AVview and CVS
- version of ffmpeg off Sourceforge and capture snapshots and streams
- with AVview. You can view them later with xine, for example.
+ 3) what can you do if you have one computer ? Get AVview and
+ matching version of ffmpeg off GATOS website on Sourceforge
+ and capture snapshots and streams with AVview.
+
+ You can view them later with xine, for example.
- If you have got ffmpeg 0.4.5 get the patch from www.linuxvideo.org/gatos
- this version has a bug and will not work otherwise
-
4) you cannot use this module simultaneously with Linux framebuffer devices.
+ (More precisely your mileage will vary.. I have not tried this for a long
+ time)
5) you need Linux 2.4.20 (or later) to compile it properly
- 6) You might have problems if you don't let your BIOS assign an irq to
- your video card.
+ 6) You might (will !) have problems if you don't let your BIOS assign an
+ irq to your video card.
- Vladimir Dergachev
+ Vladimir Dergachev
+
+ http://www.an-vo.com/
Index: km.actual.rfc.txt
===================================================================
RCS file: /cvsroot/gatos/km/km.actual.rfc.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- km.actual.rfc.txt 8 Jun 2002 00:07:58 -0000 1.3
+++ km.actual.rfc.txt 11 Jan 2004 16:51:12 -0000 1.4
@@ -24,6 +24,11 @@
or non-blocking IO)
REPORT=FIELD_NAME - turn on out-of-sequence updates if
field value changes.
+
+ VIDEO_STREAM_ACTIVE=1 - turn on video capture
+ VIDEO_STREAM_ACTIVE=0 - turn off video capture
+ VBI_STREAM_ACTIVE=1 - turn on vbi capture
+ VBI_STREAM_ACTIVE=0 - turn off vbi capture
***** NOTES ******
@@ -31,4 +36,4 @@
For now, the write calls to controlX files should be done with one complete command
per call.
-For example see test1.tcl
+For example see test1.tcl or test3.tcl
Index: km_api.h
===================================================================
RCS file: /cvsroot/gatos/km/km_api.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- km_api.h 14 Dec 2003 22:17:10 -0000 1.25
+++ km_api.h 11 Jan 2004 16:51:12 -0000 1.26
@@ -149,7 +149,7 @@
int km_fo_control_perform_command(KM_FILE_PRIVATE_DATA *kmfpd, const char *command, size_t count);
-#if 1
+#if 0
#define KM_CHECKPOINT printk("**CKPT %s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
#define KM_API_DEBUG printk
#else
|