Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 772 → Rev 773

/shark/trunk/drivers/cm7326/saa7146_core.c
18,6 → 18,8
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
 
#include <linuxcomp.h>
 
#include <media/saa7146.h>
 
/* global variables */
27,7 → 29,7
static int initialized = 0;
int saa7146_num = 0;
 
unsigned int saa7146_debug = 0;
unsigned int saa7146_debug = 9;
 
MODULE_PARM(saa7146_debug,"i");
MODULE_PARM_DESC(saa7146_debug, "debug level (default: 0)");
301,7 → 303,7
u32 ssr = (saa7146_read(dev, SSR) >> 17) & 0x1f;
DEB_I2C(("irq: i2c, status: 0x%08x, psr:0x%02x, ssr:0x%02x).\n",status,psr,ssr));
dev->i2c_op = 0;
wake_up(&dev->i2c_wq);
//wake_up(&dev->i2c_wq);
} else {
DEB_I2C(("unexpected irq: i2c, status: 0x%08x, isr %#x\n",status, isr));
}
424,7 → 426,7
/* the rest + print status message */
/* create a nice device name */
sprintf(&dev->name[0], "saa7146 (%d)",saa7146_num);
sprintf26(&dev->name[0], "saa7146 (%d)",saa7146_num);
 
INFO(("found saa7146 @ mem %p (revision %d, irq %d) (0x%04x,0x%04x).\n", dev->mem, dev->revision,dev->pci->irq,dev->pci->subsystem_vendor,dev->pci->subsystem_device));
dev->ext = ext;
/shark/trunk/drivers/cm7326/saa7146_video.c
1,3 → 1,5
#include <linuxcomp.h>
 
#include <media/saa7146_vv.h>
 
static int memory = 32;
346,13 → 348,13
err = try_win(dev,&f->fmt.win);
if (0 != err)
return err;
down(&dev->lock);
//down(&dev->lock);
fh->ov.win = f->fmt.win;
fh->ov.nclips = f->fmt.win.clipcount;
if (fh->ov.nclips > 16)
fh->ov.nclips = 16;
if (copy_from_user(fh->ov.clips,f->fmt.win.clips,sizeof(struct v4l2_clip)*fh->ov.nclips)) {
up(&dev->lock);
//up(&dev->lock);
return -EFAULT;
}
368,7 → 370,7
spin_unlock_irqrestore(&dev->slock,flags);
}
}
up(&dev->lock);
//up(&dev->lock);
return 0;
default:
DEB_D(("unknown format type '%d'\n",f->type));
842,7 → 844,7
strcpy(cap->driver, "saa7146 v4l2");
strlcpy(cap->card, dev->ext->name, sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name);
sprintf26(cap->bus_info,"PCI:%s",dev->pci->slot_name);
cap->version = SAA7146_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
888,7 → 890,7
DEB_S(("planar pixelformat '%4.4s' not allowed for overlay\n",(char *)&fmt->pixelformat));
}
down(&dev->lock);
//down(&dev->lock);
if( vv->ov_data != NULL ) {
ov_fh = vv->ov_data->fh;
saa7146_stop_preview(ov_fh);
906,7 → 908,7
saa7146_start_preview(ov_fh);
}
 
up(&dev->lock);
//up(&dev->lock);
 
return 0;
}
970,9 → 972,9
#endif
{
DEB_EE(("VIDIOC_S_CTRL\n"));
down(&dev->lock);
//down(&dev->lock);
err = set_control(fh,arg);
up(&dev->lock);
//up(&dev->lock);
return err;
}
case VIDIOC_G_PARM:
1045,7 → 1047,7
}
 
DEB_D(("before getting lock...\n"));
down(&dev->lock);
//down(&dev->lock);
DEB_D(("got lock\n"));
if( vv->ov_data != NULL ) {
1067,7 → 1069,7
if( 0 != restart_overlay ) {
saa7146_start_preview(ov_fh);
}
up(&dev->lock);
//up(&dev->lock);
 
if( 0 == found ) {
DEB_EE(("VIDIOC_S_STD: standard not found.\n"));
1191,11 → 1193,11
DEB_D(("VIDIOCGMBUF \n"));
 
q = &fh->video_q;
down(&q->lock);
//down(&q->lock);
err = videobuf_mmap_setup(file,q,gbuffers,gbufsize,
V4L2_MEMORY_MMAP);
if (err < 0) {
up(&q->lock);
//up(&q->lock);
return err;
}
memset(mbuf,0,sizeof(*mbuf));
1203,7 → 1205,7
mbuf->size = gbuffers * gbufsize;
for (i = 0; i < gbuffers; i++)
mbuf->offsets[i] = i * gbufsize;
up(&q->lock);
//up(&q->lock);
return 0;
}
default:
/shark/trunk/drivers/cm7326/saa7146_fops.c
1,3 → 1,5
#include <linuxcomp.h>
 
#include <media/saa7146_vv.h>
 
#define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1)
16,12 → 18,12
 
/* is it free? */
DEB_D(("getting lock...\n"));
down(&dev->lock);
//down(&dev->lock);
DEB_D(("got lock\n"));
if (vv->resources & bit) {
DEB_D(("locked! vv->resources:0x%02x, we want:0x%02x\n",vv->resources,bit));
/* no, someone else uses it */
up(&dev->lock);
//up(&dev->lock);
return 0;
}
/* it's free, grab it */
28,7 → 30,7
fh->resources |= bit;
vv->resources |= bit;
DEB_D(("res: get %d\n",bit));
up(&dev->lock);
//up(&dev->lock);
return 1;
}
 
52,12 → 54,12
BUG();
 
DEB_D(("getting lock...\n"));
down(&dev->lock);
//down(&dev->lock);
DEB_D(("got lock\n"));
fh->resources &= ~bits;
vv->resources &= ~bits;
DEB_D(("res: put %d\n",bits));
up(&dev->lock);
//up(&dev->lock);
}
 
 
129,8 → 131,8
}
q->curr->vb.state = state;
do_gettimeofday(&q->curr->vb.ts);
wake_up(&q->curr->vb.done);
//do_gettimeofday(&q->curr->vb.ts);
//wake_up(&q->curr->vb.done);
 
q->curr = NULL;
}
232,8 → 234,8
 
DEB_EE(("inode:%p, file:%p, minor:%d\n",inode,file,minor));
 
if (down_interruptible(&saa7146_devices_lock))
return -ERESTARTSYS;
//if (down_interruptible(&saa7146_devices_lock))
// return -ERESTARTSYS;
 
list_for_each(list,&saa7146_devices) {
h = list_entry(list, struct saa7146_dev, item);
302,7 → 304,7
kfree(fh);
file->private_data = NULL;
}
up(&saa7146_devices_lock);
//up(&saa7146_devices_lock);
return result;
}
 
313,8 → 315,8
 
DEB_EE(("inode:%p, file:%p\n",inode,file));
 
if (down_interruptible(&saa7146_devices_lock))
return -ERESTARTSYS;
//if (down_interruptible(&saa7146_devices_lock))
// return -ERESTARTSYS;
 
if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
saa7146_vbi_uops.release(dev,file);
326,7 → 328,7
file->private_data = NULL;
kfree(fh);
 
up(&saa7146_devices_lock);
//up(&saa7146_devices_lock);
 
return 0;
}
445,7 → 447,7
u32 mc2 = saa7146_read(dev, MC2);
if( 0 != (mc2 & MASK_15)) {
DEB_INT(("irq: RPS1 vbi workaround (0x%08x).\n",isr));
wake_up(&dev->vv_data->vbi_wq);
//wake_up(&dev->vv_data->vbi_wq);
saa7146_write(dev,MC2, MASK_31);
return;
}
/shark/trunk/drivers/cm7326/cm7326.c
23,6 → 23,8
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
 
#include <linuxcomp.h>
 
#define DEBUG_VARIABLE debug
#include "drivers/saa7146_vv.h"
 
31,7 → 33,7
#endif
 
/* module parameters */
static int debug = 0;
static int debug = 9;
MODULE_PARM(debug,"i");
MODULE_PARM_DESC(debug, "debug verbosity");
 
/shark/trunk/drivers/cm7326/saa7146_i2c.c
1,3 → 1,5
#include <linuxcomp.h>
 
#include <linux/version.h>
#include <media/saa7146_vv.h>
 
4,8 → 6,9
/* helper function */
static void my_wait(struct saa7146_dev *dev, long ms)
{
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout((((ms+10)/10)*HZ)/1000);
//set_current_state(TASK_INTERRUPTIBLE);
//schedule_timeout((((ms+10)/10)*HZ)/1000);
udelay(ms*1000);
}
 
u32 saa7146_i2c_func(struct i2c_adapter *adapter)
200,11 → 203,11
IER_ENABLE(dev, MASK_16|MASK_17);
saa7146_write(dev, MC2, (MASK_00 | MASK_16));
 
wait_event_interruptible(dev->i2c_wq, dev->i2c_op == 0);
if (signal_pending (current)) {
//wait_event_interruptible(dev->i2c_wq, dev->i2c_op == 0);
//if (signal_pending (current)) {
/* a signal arrived */
return -ERESTARTSYS;
}
// return -ERESTARTSYS;
//}
status = saa7146_read(dev, I2C_STATUS);
} else {
saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate);
287,8 → 290,8
int address_err = 0;
int short_delay = 0;
if (down_interruptible (&dev->i2c_lock))
return -ERESTARTSYS;
//if (down_interruptible (&dev->i2c_lock))
// return -ERESTARTSYS;
 
for(i=0;i<num;i++) {
DEB_I2C(("msg:%d/%d\n",i+1,num));
374,7 → 377,7
}
}
 
up(&dev->i2c_lock);
//up(&dev->i2c_lock);
return err;
}
 
/shark/trunk/drivers/cm7326/saa7146_hlp.c
1,3 → 1,5
#include <linuxcomp.h>
 
#include <media/saa7146_vv.h>
 
#define my_min(type,x,y) \
/shark/trunk/drivers/cm7326/makefile
10,7 → 10,7
 
OBJS_PATH = $(BASE)/drivers/cm7326
 
OBJS = cm7326.o
OBJS = cm7326.o saa7146_core.o saa7146_fops.o saa7146_hlp.o saa7146_i2c.o saa7146_video.o
 
OTHERINCL += -I$(BASE)/drivers/cm7326/include -I$(BASE)/drivers/linuxc26/include -I$(BASE)/drivers/i2c/include