/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 |