/shark/trunk/drivers/cm7326/saa7146_core.c |
---|
18,8 → 18,6 |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
*/ |
#include <linuxcomp.h> |
#include <media/saa7146.h> |
/* global variables */ |
29,7 → 27,7 |
static int initialized = 0; |
int saa7146_num = 0; |
unsigned int saa7146_debug = 9; |
unsigned int saa7146_debug = 0; |
MODULE_PARM(saa7146_debug,"i"); |
MODULE_PARM_DESC(saa7146_debug, "debug level (default: 0)"); |
303,7 → 301,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)); |
} |
426,7 → 424,7 |
/* the rest + print status message */ |
/* create a nice device name */ |
sprintf26(&dev->name[0], "saa7146 (%d)",saa7146_num); |
sprintf(&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,5 → 1,3 |
#include <linuxcomp.h> |
#include <media/saa7146_vv.h> |
static int memory = 32; |
348,13 → 346,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; |
} |
370,7 → 368,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)); |
844,7 → 842,7 |
strcpy(cap->driver, "saa7146 v4l2"); |
strlcpy(cap->card, dev->ext->name, sizeof(cap->card)); |
sprintf26(cap->bus_info,"PCI:%s",dev->pci->slot_name); |
sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name); |
cap->version = SAA7146_VERSION_CODE; |
cap->capabilities = |
V4L2_CAP_VIDEO_CAPTURE | |
890,7 → 888,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); |
908,7 → 906,7 |
saa7146_start_preview(ov_fh); |
} |
//up(&dev->lock); |
up(&dev->lock); |
return 0; |
} |
972,9 → 970,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: |
1047,7 → 1045,7 |
} |
DEB_D(("before getting lock...\n")); |
//down(&dev->lock); |
down(&dev->lock); |
DEB_D(("got lock\n")); |
if( vv->ov_data != NULL ) { |
1069,7 → 1067,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")); |
1193,11 → 1191,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)); |
1205,7 → 1203,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,5 → 1,3 |
#include <linuxcomp.h> |
#include <media/saa7146_vv.h> |
#define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1) |
18,12 → 16,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 */ |
30,7 → 28,7 |
fh->resources |= bit; |
vv->resources |= bit; |
DEB_D(("res: get %d\n",bit)); |
//up(&dev->lock); |
up(&dev->lock); |
return 1; |
} |
54,12 → 52,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); |
} |
131,8 → 129,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; |
} |
234,8 → 232,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); |
304,7 → 302,7 |
kfree(fh); |
file->private_data = NULL; |
} |
//up(&saa7146_devices_lock); |
up(&saa7146_devices_lock); |
return result; |
} |
315,8 → 313,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); |
328,7 → 326,7 |
file->private_data = NULL; |
kfree(fh); |
//up(&saa7146_devices_lock); |
up(&saa7146_devices_lock); |
return 0; |
} |
447,7 → 445,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,8 → 23,6 |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
*/ |
#include <linuxcomp.h> |
#define DEBUG_VARIABLE debug |
#include "drivers/saa7146_vv.h" |
33,7 → 31,7 |
#endif |
/* module parameters */ |
static int debug = 9; |
static int debug = 0; |
MODULE_PARM(debug,"i"); |
MODULE_PARM_DESC(debug, "debug verbosity"); |
/shark/trunk/drivers/cm7326/saa7146_i2c.c |
---|
1,5 → 1,3 |
#include <linuxcomp.h> |
#include <linux/version.h> |
#include <media/saa7146_vv.h> |
6,9 → 4,8 |
/* helper function */ |
static void my_wait(struct saa7146_dev *dev, long ms) |
{ |
//set_current_state(TASK_INTERRUPTIBLE); |
//schedule_timeout((((ms+10)/10)*HZ)/1000); |
udelay(ms*1000); |
set_current_state(TASK_INTERRUPTIBLE); |
schedule_timeout((((ms+10)/10)*HZ)/1000); |
} |
u32 saa7146_i2c_func(struct i2c_adapter *adapter) |
203,11 → 200,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); |
290,8 → 287,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)); |
377,7 → 374,7 |
} |
} |
//up(&dev->i2c_lock); |
up(&dev->i2c_lock); |
return err; |
} |
/shark/trunk/drivers/cm7326/saa7146_hlp.c |
---|
1,5 → 1,3 |
#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 saa7146_core.o saa7146_fops.o saa7146_hlp.o saa7146_i2c.o saa7146_video.o |
OBJS = cm7326.o |
OTHERINCL += -I$(BASE)/drivers/cm7326/include -I$(BASE)/drivers/linuxc26/include -I$(BASE)/drivers/i2c/include |