Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 773 → Rev 771

/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