/shark/trunk/drivers/cm7326/saa7146_core.c |
---|
74,11 → 74,11 |
int start; |
/* wait for registers to be programmed */ |
start = jiffies; |
start = jiffies26; |
while (1) { |
if (saa7146_read(dev, MC2) & 2) |
break; |
if (jiffies-start > HZ/20) { |
if (jiffies26-start > HZ/20) { |
DEB_S(("timed out while waiting for registers getting programmed\n")); |
return -ETIMEDOUT; |
} |
85,12 → 85,12 |
} |
/* wait for transfer to complete */ |
start = jiffies; |
start = jiffies26; |
while (1) { |
if (!(saa7146_read(dev, PSR) & SPCI_DEBI_S)) |
break; |
saa7146_read(dev, MC2); |
if (jiffies-start > HZ/4) { |
if (jiffies26-start > HZ/4) { |
DEB_S(("timed out while waiting for transfer completion\n")); |
return -ETIMEDOUT; |
} |
116,7 → 116,7 |
if (NULL == sglist) |
return NULL; |
memset(sglist,0,sizeof(struct scatterlist)*nr_pages); |
for (i = 0; i < nr_pages; i++, virt += PAGE_SIZE) { |
/* for (i = 0; i < nr_pages; i++, virt += PAGE_SIZE) { |
pg = vmalloc_to_page(virt); |
if (NULL == pg) |
goto err; |
124,7 → 124,7 |
BUG(); |
sglist[i].page = pg; |
sglist[i].length = PAGE_SIZE; |
} |
}*/ |
return sglist; |
err: |
159,7 → 159,7 |
return NULL; |
} |
slen = pci_map_sg(pci,pt->slist,pages,PCI_DMA_FROMDEVICE); |
//slen = pci_map_sg(pci,pt->slist,pages,PCI_DMA_FROMDEVICE); |
if (0 != saa7146_pgtable_build_single(pci, pt, pt->slist, slen)) { |
return NULL; |
} |
433,14 → 433,14 |
pci_set_drvdata(pci,dev); |
init_MUTEX(&dev->lock); |
//init_MUTEX(&dev->lock); |
dev->int_slock = SPIN_LOCK_UNLOCKED; |
dev->slock = SPIN_LOCK_UNLOCKED; |
init_MUTEX(&dev->i2c_lock); |
//init_MUTEX(&dev->i2c_lock); |
dev->module = THIS_MODULE; |
init_waitqueue_head(&dev->i2c_wq); |
//init_waitqueue_head(&dev->i2c_wq); |
/* set some sane pci arbitrition values */ |
saa7146_write(dev, PCI_BT_V1, 0x1c00101f); |
523,7 → 523,7 |
if( 0 == initialized ) { |
INIT_LIST_HEAD(&saa7146_devices); |
init_MUTEX(&saa7146_devices_lock); |
//init_MUTEX(&saa7146_devices_lock); |
initialized = 1; |
} |
544,17 → 544,17 |
return 0; |
} |
static int __init saa7146_init_module(void) |
int __init saa7146_init_module(void) |
{ |
if( 0 == initialized ) { |
INIT_LIST_HEAD(&saa7146_devices); |
init_MUTEX(&saa7146_devices_lock); |
//init_MUTEX(&saa7146_devices_lock); |
initialized = 1; |
} |
return 0; |
} |
static void __exit saa7146_cleanup_module(void) |
void __exit saa7146_cleanup_module(void) |
{ |
} |
/shark/trunk/drivers/cm7326/saa7146_video.c |
---|
843,7 → 843,7 |
DEB_EE(("VIDIOC_QUERYCAP\n")); |
strcpy(cap->driver, "saa7146 v4l2"); |
strlcpy(cap->card, dev->ext->name, sizeof(cap->card)); |
strncpy(cap->card, dev->ext->name, sizeof(cap->card)); |
sprintf26(cap->bus_info,"PCI:%s",dev->pci->slot_name); |
cap->version = SAA7146_VERSION_CODE; |
cap->capabilities = |
926,7 → 926,7 |
} |
memset(f,0,sizeof(*f)); |
f->index = index; |
strlcpy(f->description,formats[index].name,sizeof(f->description)); |
strncpy(f->description,formats[index].name,sizeof(f->description)); |
f->pixelformat = formats[index].pixelformat; |
break; |
} |
1025,7 → 1025,7 |
return -EINVAL; |
if( e->index < dev->ext_vv_data->num_stds ) { |
DEB_EE(("VIDIOC_ENUMSTD: index:%d\n",e->index)); |
v4l2_video_std_construct(e, dev->ext_vv_data->stds[e->index].id, dev->ext_vv_data->stds[e->index].name); |
//v4l2_video_std_construct(e, dev->ext_vv_data->stds[e->index].id, dev->ext_vv_data->stds[e->index].name); |
return 0; |
} |
return -EINVAL; |
1209,8 → 1209,7 |
return 0; |
} |
default: |
return v4l_compat_translate_ioctl(inode,file,cmd,arg, |
saa7146_video_do_ioctl); |
return 0;//v4l_compat_translate_ioctl(inode,file,cmd,arg,saa7146_video_do_ioctl); |
} |
return 0; |
} |
1227,7 → 1226,7 |
buf->vb.state = STATE_ACTIVE; |
saa7146_set_capture(dev,buf,next); |
mod_timer(&vv->video_q.timeout, jiffies+BUFFER_TIMEOUT); |
mod_timer(&vv->video_q.timeout, jiffies26+BUFFER_TIMEOUT); |
return 0; |
} |
1401,7 → 1400,7 |
V4L2_FIELD_INTERLACED, |
sizeof(struct saa7146_buf)); |
init_MUTEX(&fh->video_q.lock); |
//init_MUTEX(&fh->video_q.lock); |
return 0; |
} |
/shark/trunk/drivers/cm7326/saa7146_fops.c |
---|
74,8 → 74,8 |
BUG(); |
videobuf_waiton(&buf->vb,0,0); |
videobuf_dma_pci_unmap(dev->pci, &buf->vb.dma); |
videobuf_dma_free(&buf->vb.dma); |
//videobuf_dma_pci_unmap(dev->pci, &buf->vb.dma); |
//videobuf_dma_free(&buf->vb.dma); |
buf->vb.state = STATE_NEEDS_INIT; |
} |
283,7 → 283,7 |
if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) { |
DEB_S(("initializing vbi...\n")); |
result = saa7146_vbi_uops.open(dev,file); |
result = 0;//saa7146_vbi_uops.open(dev,file); |
} else { |
DEB_S(("initializing video...\n")); |
result = saa7146_video_uops.open(dev,file); |
319,7 → 319,7 |
// return -ERESTARTSYS; |
if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) { |
saa7146_vbi_uops.release(dev,file); |
//saa7146_vbi_uops.release(dev,file); |
} else { |
saa7146_video_uops.release(dev,file); |
} |
411,7 → 411,7 |
} |
case V4L2_BUF_TYPE_VBI_CAPTURE: { |
// DEB_EE(("V4L2_BUF_TYPE_VBI_CAPTURE: file:%p, data:%p, count:%lu\n", file, data, (unsigned long)count)); |
return saa7146_vbi_uops.read(file,data,count,ppos); |
return 0;//saa7146_vbi_uops.read(file,data,count,ppos); |
} |
break; |
default: |
452,7 → 452,7 |
return; |
} |
DEB_INT(("irq: RPS1 (0x%08x).\n",isr)); |
saa7146_vbi_uops.irq_done(dev,isr); |
//saa7146_vbi_uops.irq_done(dev,isr); |
} |
} |
497,7 → 497,7 |
memset(vv->d_clipping.cpu_addr, 0x0, SAA7146_CLIPPING_MEM); |
saa7146_video_uops.init(dev,vv); |
saa7146_vbi_uops.init(dev,vv); |
//saa7146_vbi_uops.init(dev,vv); |
dev->vv_data = vv; |
dev->vv_callback = &vv_callback; |
526,7 → 526,7 |
DEB_EE(("dev:%p, name:'%s', type:%d\n",dev,name,type)); |
*vid = device_template; |
strlcpy(vid->name, name, sizeof(vid->name)); |
strncpy(vid->name, name, sizeof(vid->name)); |
vid->priv = dev; |
// fixme: -1 should be an insmod parameter *for the extension* (like "video_nr"); |
/shark/trunk/drivers/cm7326/saa7146_i2c.c |
---|
215,19 → 215,19 |
saa7146_write(dev, MC2, (MASK_00 | MASK_16)); |
/* do not poll for i2c-status before upload is complete */ |
timeout = jiffies + HZ/100 + 1; /* 10ms */ |
timeout = jiffies26 + HZ/100 + 1; /* 10ms */ |
while(1) { |
mc2 = (saa7146_read(dev, MC2) & 0x1); |
if( 0 != mc2 ) { |
break; |
} |
if (time_after(jiffies,timeout)) { |
if (jiffies26-timeout>0) { |
printk(KERN_WARNING "saa7146_i2c_writeout: timed out waiting for MC2\n"); |
return -EIO; |
} |
} |
/* wait until we get a transfer done or error */ |
timeout = jiffies + HZ/100 + 1; /* 10ms */ |
timeout = jiffies26 + HZ/100 + 1; /* 10ms */ |
while(1) { |
/** |
* first read usually delivers bogus results... |
236,7 → 236,7 |
status = saa7146_i2c_status(dev); |
if ((status & 0x3) != 1) |
break; |
if (time_after(jiffies,timeout)) { |
if (jiffies26-timeout>0) { |
/* this is normal when probing the bus |
* (no answer from nonexisistant device...) |
*/ |
/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 saa7146_core.o saa7146_hlp.o saa7146_i2c.o saa7146_video.o saa7146_fops.o |
OTHERINCL += -I$(BASE)/drivers/cm7326/include -I$(BASE)/drivers/linuxc26/include -I$(BASE)/drivers/i2c/include |