• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/media/video/

Lines Matching refs:meye

41 #include "meye.h"
42 #include <linux/meye.h>
71 static struct meye meye;
113 * NOTE: The meye device expects DMA addresses on 32 bits, we build
121 memset(meye.mchip_ptable, 0, sizeof(meye.mchip_ptable));
124 if (dma_set_mask(&meye.mchip_dev->dev, DMA_32BIT_MASK))
127 meye.mchip_ptable_toc = dma_alloc_coherent(&meye.mchip_dev->dev,
129 &meye.mchip_dmahandle,
131 if (!meye.mchip_ptable_toc) {
132 meye.mchip_dmahandle = 0;
136 pt = meye.mchip_ptable_toc;
139 meye.mchip_ptable[i] = dma_alloc_coherent(&meye.mchip_dev->dev,
143 if (!meye.mchip_ptable[i]) {
145 pt = meye.mchip_ptable_toc;
148 dma_free_coherent(&meye.mchip_dev->dev,
150 meye.mchip_ptable[j], dma);
153 dma_free_coherent(&meye.mchip_dev->dev,
155 meye.mchip_ptable_toc,
156 meye.mchip_dmahandle);
157 meye.mchip_ptable_toc = NULL;
158 meye.mchip_dmahandle = 0;
172 pt = meye.mchip_ptable_toc;
175 if (meye.mchip_ptable[i])
176 dma_free_coherent(&meye.mchip_dev->dev,
178 meye.mchip_ptable[i], dma);
182 if (meye.mchip_ptable_toc)
183 dma_free_coherent(&meye.mchip_dev->dev,
185 meye.mchip_ptable_toc,
186 meye.mchip_dmahandle);
188 memset(meye.mchip_ptable, 0, sizeof(meye.mchip_ptable));
189 meye.mchip_ptable_toc = NULL;
190 meye.mchip_dmahandle = 0;
199 memcpy(buf + i, meye.mchip_ptable[start++], PAGE_SIZE);
203 memcpy(buf + i, meye.mchip_ptable[start], size % PAGE_SIZE);
348 "meye: invalid quality level %d - using 8\n", quality);
403 return meye.params.subsample ? 320 : 640;
409 return meye.params.subsample ? 240 : 480;
420 status = readl(meye.mchip_mmregs +
423 printk(KERN_WARNING "meye: fifo not ready\n");
434 status = readl(meye.mchip_mmregs + MCHIP_HIC_STATUS);
442 "meye: mchip_sync() timeout on reg 0x%x status=0x%x\n",
450 writel(v, meye.mchip_mmregs + reg);
457 return readl(meye.mchip_mmregs + reg);
472 mchip_set(MCHIP_MCC_R_SAMPLING, meye.params.subsample);
483 mchip_set(MCHIP_HIC_S_RATE, meye.params.framerate);
496 writel(tables[i], meye.mchip_mmregs + MCHIP_VRJ_TABLE_DATA);
498 tables = jpeg_quantisation_tables(&length, meye.params.quality);
500 writel(tables[i], meye.mchip_mmregs + MCHIP_VRJ_TABLE_DATA);
535 meye.mchip_fnum = 0;
541 if (!meye.mchip_dmahandle)
550 if (meye.mchip_dmahandle) {
562 meye.mchip_mode = MCHIP_HIC_MODE_NOOP;
574 printk(KERN_ERR "meye: need to reset HIC!\n");
579 printk(KERN_ERR "meye: resetting HIC hanged!\n");
591 v = mchip_read(MCHIP_MM_FIR(meye.mchip_fnum));
598 mchip_set(MCHIP_MM_FIR(meye.mchip_fnum), 0);
599 meye.mchip_fnum++;
600 meye.mchip_fnum %= 4;
632 printk(KERN_WARNING "meye: oversized compressed frame %d\n",
666 mchip_dma_setup(meye.mchip_dmahandle);
711 mchip_dma_setup(meye.mchip_dmahandle);
713 meye.mchip_mode = MCHIP_HIC_MODE_CONT_OUT;
759 mchip_dma_setup(meye.mchip_dmahandle);
761 meye.mchip_mode = MCHIP_HIC_MODE_CONT_COMP;
781 if (meye.mchip_mode != MCHIP_HIC_MODE_CONT_OUT &&
782 meye.mchip_mode != MCHIP_HIC_MODE_CONT_COMP)
790 if (meye.mchip_mode == MCHIP_HIC_MODE_CONT_OUT) {
791 if (kfifo_get(meye.grabq, (unsigned char *)&reqnr,
796 mchip_cont_read_frame(v, meye.grab_fbuffer + gbufsize * reqnr,
798 meye.grab_buffer[reqnr].size = mchip_hsize() * mchip_vsize() * 2;
799 meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
800 do_gettimeofday(&meye.grab_buffer[reqnr].timestamp);
801 meye.grab_buffer[reqnr].sequence = sequence++;
802 kfifo_put(meye.doneq, (unsigned char *)&reqnr, sizeof(int));
803 wake_up_interruptible(&meye.proc_list);
806 size = mchip_comp_read_frame(v, meye.grab_temp, gbufsize);
811 if (kfifo_get(meye.grabq, (unsigned char *)&reqnr,
816 memcpy(meye.grab_fbuffer + gbufsize * reqnr, meye.grab_temp,
818 meye.grab_buffer[reqnr].size = size;
819 meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
820 do_gettimeofday(&meye.grab_buffer[reqnr].timestamp);
821 meye.grab_buffer[reqnr].sequence = sequence++;
822 kfifo_put(meye.doneq, (unsigned char *)&reqnr, sizeof(int));
823 wake_up_interruptible(&meye.proc_list);
844 printk(KERN_ERR "meye: mchip framebuffer allocation failed\n");
850 meye.grab_buffer[i].state = MEYE_BUF_UNUSED;
851 kfifo_reset(meye.grabq);
852 kfifo_reset(meye.doneq);
871 strcpy(b->name,meye.video_dev->name);
902 *p = meye.picture;
912 mutex_lock(&meye.lock);
921 meye.picture = *p;
922 mutex_unlock(&meye.lock);
933 mutex_lock(&meye.lock);
935 switch (meye.grab_buffer[*i].state) {
938 mutex_unlock(&meye.lock);
942 mutex_unlock(&meye.lock);
945 if (wait_event_interruptible(meye.proc_list,
946 (meye.grab_buffer[*i].state != MEYE_BUF_USING))) {
947 mutex_unlock(&meye.lock);
952 meye.grab_buffer[*i].state = MEYE_BUF_UNUSED;
953 kfifo_get(meye.doneq, (unsigned char *)&unused, sizeof(int));
955 mutex_unlock(&meye.lock);
969 if (!meye.grab_fbuffer)
971 if (meye.grab_buffer[vm->frame].state != MEYE_BUF_UNUSED)
974 mutex_lock(&meye.lock);
976 if (meye.params.subsample) {
977 meye.params.subsample = 0;
981 if (!meye.params.subsample) {
982 meye.params.subsample = 1;
986 mutex_unlock(&meye.lock);
990 if (restart || meye.mchip_mode != MCHIP_HIC_MODE_CONT_OUT)
992 meye.grab_buffer[vm->frame].state = MEYE_BUF_USING;
993 kfifo_put(meye.grabq, (unsigned char *)&vm->frame, sizeof(int));
994 mutex_unlock(&meye.lock);
1012 *p = meye.params;
1026 mutex_lock(&meye.lock);
1027 if (meye.params.subsample != jp->subsample ||
1028 meye.params.quality != jp->quality)
1030 meye.params = *jp;
1032 meye.params.sharpness);
1034 meye.params.agc);
1036 meye.params.picture);
1037 mutex_unlock(&meye.lock);
1044 if (!meye.grab_fbuffer)
1053 if (meye.grab_buffer[*nb].state != MEYE_BUF_UNUSED)
1055 mutex_lock(&meye.lock);
1056 if (meye.mchip_mode != MCHIP_HIC_MODE_CONT_COMP)
1058 meye.grab_buffer[*nb].state = MEYE_BUF_USING;
1059 kfifo_put(meye.grabq, (unsigned char *)nb, sizeof(int));
1060 mutex_unlock(&meye.lock);
1071 mutex_lock(&meye.lock);
1072 switch (meye.grab_buffer[*i].state) {
1075 mutex_unlock(&meye.lock);
1079 mutex_unlock(&meye.lock);
1082 if (wait_event_interruptible(meye.proc_list,
1083 (meye.grab_buffer[*i].state != MEYE_BUF_USING))) {
1084 mutex_unlock(&meye.lock);
1089 meye.grab_buffer[*i].state = MEYE_BUF_UNUSED;
1090 kfifo_get(meye.doneq, (unsigned char *)&unused, sizeof(int));
1092 *i = meye.grab_buffer[*i].size;
1093 mutex_unlock(&meye.lock);
1099 if (!meye.grab_fbuffer)
1101 if (meye.grab_buffer[0].state != MEYE_BUF_UNUSED)
1103 mutex_lock(&meye.lock);
1104 meye.grab_buffer[0].state = MEYE_BUF_USING;
1107 meye.grab_fbuffer,
1109 meye.grab_buffer[0].state = MEYE_BUF_DONE;
1110 mutex_unlock(&meye.lock);
1117 if (!meye.grab_fbuffer)
1119 if (meye.grab_buffer[0].state != MEYE_BUF_UNUSED)
1121 mutex_lock(&meye.lock);
1122 meye.grab_buffer[0].state = MEYE_BUF_USING;
1126 *len = mchip_compress_frame(meye.grab_fbuffer, gbufsize);
1128 meye.grab_buffer[0].state = MEYE_BUF_DONE;
1129 mutex_unlock(&meye.lock);
1140 strcpy(cap->driver, "meye");
1141 strcpy(cap->card, "meye");
1142 sprintf(cap->bus_info, "PCI:%s", pci_name(meye.mchip_dev));
1272 mutex_lock(&meye.lock);
1277 meye.picture.brightness = c->value << 10;
1282 meye.picture.hue = c->value << 10;
1287 meye.picture.contrast = c->value << 10;
1292 meye.picture.colour = c->value << 10;
1297 meye.params.agc = c->value;
1302 meye.params.sharpness = c->value;
1307 meye.params.picture = c->value;
1310 meye.params.quality = c->value;
1313 meye.params.framerate = c->value;
1316 mutex_unlock(&meye.lock);
1319 mutex_unlock(&meye.lock);
1326 mutex_lock(&meye.lock);
1329 c->value = meye.picture.brightness >> 10;
1332 c->value = meye.picture.hue >> 10;
1335 c->value = meye.picture.contrast >> 10;
1338 c->value = meye.picture.colour >> 10;
1341 c->value = meye.params.agc;
1344 c->value = meye.params.sharpness;
1347 c->value = meye.params.picture;
1350 c->value = meye.params.quality;
1353 c->value = meye.params.framerate;
1356 mutex_unlock(&meye.lock);
1359 mutex_unlock(&meye.lock);
1424 switch (meye.mchip_mode) {
1456 mutex_lock(&meye.lock);
1460 meye.params.subsample = 1;
1464 meye.params.subsample = 0;
1468 meye.mchip_mode = MCHIP_HIC_MODE_CONT_OUT;
1471 meye.mchip_mode = MCHIP_HIC_MODE_CONT_COMP;
1474 mutex_unlock(&meye.lock);
1492 if (meye.grab_fbuffer && req->count == gbuffers) {
1496 mutex_lock(&meye.lock);
1497 if (meye.grab_fbuffer) {
1499 if (meye.vma_use_count[i]) {
1500 mutex_unlock(&meye.lock);
1503 rvfree(meye.grab_fbuffer, gbuffers * gbufsize);
1504 meye.grab_fbuffer = NULL;
1508 meye.grab_fbuffer = rvmalloc(gbuffers * gbufsize);
1509 if (!meye.grab_fbuffer) {
1510 printk(KERN_ERR "meye: v4l framebuffer allocation"
1512 mutex_unlock(&meye.lock);
1516 meye.vma_use_count[i] = 0;
1517 mutex_unlock(&meye.lock);
1530 buf->bytesused = meye.grab_buffer[index].size;
1532 if (meye.grab_buffer[index].state == MEYE_BUF_USING)
1534 if (meye.grab_buffer[index].state == MEYE_BUF_DONE)
1537 buf->timestamp = meye.grab_buffer[index].timestamp;
1538 buf->sequence = meye.grab_buffer[index].sequence;
1554 if (meye.grab_buffer[buf->index].state != MEYE_BUF_UNUSED)
1556 mutex_lock(&meye.lock);
1559 meye.grab_buffer[buf->index].state = MEYE_BUF_USING;
1560 kfifo_put(meye.grabq, (unsigned char *)&buf->index, sizeof(int));
1561 mutex_unlock(&meye.lock);
1574 mutex_lock(&meye.lock);
1575 if (kfifo_len(meye.doneq) == 0 && file->f_flags & O_NONBLOCK) {
1576 mutex_unlock(&meye.lock);
1579 if (wait_event_interruptible(meye.proc_list,
1580 kfifo_len(meye.doneq) != 0) < 0) {
1581 mutex_unlock(&meye.lock);
1584 if (!kfifo_get(meye.doneq, (unsigned char *)&reqnr,
1586 mutex_unlock(&meye.lock);
1589 if (meye.grab_buffer[reqnr].state != MEYE_BUF_DONE) {
1590 mutex_unlock(&meye.lock);
1594 buf->bytesused = meye.grab_buffer[reqnr].size;
1597 buf->timestamp = meye.grab_buffer[reqnr].timestamp;
1598 buf->sequence = meye.grab_buffer[reqnr].sequence;
1602 meye.grab_buffer[reqnr].state = MEYE_BUF_UNUSED;
1603 mutex_unlock(&meye.lock);
1608 mutex_lock(&meye.lock);
1609 switch (meye.mchip_mode) {
1617 mutex_unlock(&meye.lock);
1620 mutex_unlock(&meye.lock);
1627 mutex_lock(&meye.lock);
1629 kfifo_reset(meye.grabq);
1630 kfifo_reset(meye.doneq);
1632 meye.grab_buffer[i].state = MEYE_BUF_UNUSED;
1633 mutex_unlock(&meye.lock);
1655 mutex_lock(&meye.lock);
1656 poll_wait(file, &meye.proc_list, wait);
1657 if (kfifo_len(meye.doneq))
1659 mutex_unlock(&meye.lock);
1666 meye.vma_use_count[idx]++;
1672 meye.vma_use_count[idx]--;
1687 mutex_lock(&meye.lock);
1689 mutex_unlock(&meye.lock);
1692 if (!meye.grab_fbuffer) {
1696 meye.grab_fbuffer = rvmalloc(gbuffers*gbufsize);
1697 if (!meye.grab_fbuffer) {
1698 printk(KERN_ERR "meye: v4l framebuffer allocation failed\n");
1699 mutex_unlock(&meye.lock);
1703 meye.vma_use_count[i] = 0;
1705 pos = (unsigned long)meye.grab_fbuffer + offset;
1710 mutex_unlock(&meye.lock);
1727 mutex_unlock(&meye.lock);
1744 .name = "meye",
1756 meye.pm_mchip_mode = meye.mchip_mode;
1765 pci_write_config_word(meye.mchip_dev, MCHIP_PCI_SOFTRESET_SET, 1);
1776 switch (meye.pm_mchip_mode) {
1795 if (meye.mchip_dev != NULL) {
1796 printk(KERN_ERR "meye: only one device allowed!\n");
1800 meye.mchip_dev = pcidev;
1801 meye.video_dev = video_device_alloc();
1802 if (!meye.video_dev) {
1803 printk(KERN_ERR "meye: video_device_alloc() failed!\n");
1808 meye.grab_temp = vmalloc(MCHIP_NB_PAGES_MJPEG * PAGE_SIZE);
1809 if (!meye.grab_temp) {
1810 printk(KERN_ERR "meye: grab buffer allocation failed\n");
1814 spin_lock_init(&meye.grabq_lock);
1815 meye.grabq = kfifo_alloc(sizeof(int) * MEYE_MAX_BUFNBRS, GFP_KERNEL,
1816 &meye.grabq_lock);
1817 if (IS_ERR(meye.grabq)) {
1818 printk(KERN_ERR "meye: fifo allocation failed\n");
1821 spin_lock_init(&meye.doneq_lock);
1822 meye.doneq = kfifo_alloc(sizeof(int) * MEYE_MAX_BUFNBRS, GFP_KERNEL,
1823 &meye.doneq_lock);
1824 if (IS_ERR(meye.doneq)) {
1825 printk(KERN_ERR "meye: fifo allocation failed\n");
1829 memcpy(meye.video_dev, &meye_template, sizeof(meye_template));
1830 meye.video_dev->dev = &meye.mchip_dev->dev;
1833 printk(KERN_ERR "meye: unable to power on the camera\n");
1834 printk(KERN_ERR "meye: did you enable the camera in "
1840 if ((ret = pci_enable_device(meye.mchip_dev))) {
1841 printk(KERN_ERR "meye: pci_enable_device failed\n");
1845 mchip_adr = pci_resource_start(meye.mchip_dev,0);
1847 printk(KERN_ERR "meye: mchip has no device base address\n");
1850 if (!request_mem_region(pci_resource_start(meye.mchip_dev, 0),
1851 pci_resource_len(meye.mchip_dev, 0),
1852 "meye")) {
1853 printk(KERN_ERR "meye: request_mem_region failed\n");
1856 meye.mchip_mmregs = ioremap(mchip_adr, MCHIP_MM_REGS);
1857 if (!meye.mchip_mmregs) {
1858 printk(KERN_ERR "meye: ioremap failed\n");
1862 meye.mchip_irq = pcidev->irq;
1863 if (request_irq(meye.mchip_irq, meye_irq,
1864 IRQF_DISABLED | IRQF_SHARED, "meye", meye_irq)) {
1865 printk(KERN_ERR "meye: request_irq failed\n");
1869 pci_read_config_byte(meye.mchip_dev, PCI_REVISION_ID, &revision);
1870 pci_write_config_byte(meye.mchip_dev, PCI_CACHE_LINE_SIZE, 8);
1871 pci_write_config_byte(meye.mchip_dev, PCI_LATENCY_TIMER, 64);
1873 pci_set_master(meye.mchip_dev);
1876 pci_write_config_word(meye.mchip_dev, MCHIP_PCI_SOFTRESET_SET, 1);
1890 if (video_register_device(meye.video_dev, VFL_TYPE_GRABBER,
1892 printk(KERN_ERR "meye: video_register_device failed\n");
1896 mutex_init(&meye.lock);
1897 init_waitqueue_head(&meye.proc_list);
1898 meye.picture.depth = 16;
1899 meye.picture.palette = VIDEO_PALETTE_YUV422;
1900 meye.picture.brightness = 32 << 10;
1901 meye.picture.hue = 32 << 10;
1902 meye.picture.colour = 32 << 10;
1903 meye.picture.contrast = 32 << 10;
1904 meye.picture.whiteness = 0;
1905 meye.params.subsample = 0;
1906 meye.params.quality = 8;
1907 meye.params.sharpness = 32;
1908 meye.params.agc = 48;
1909 meye.params.picture = 0;
1910 meye.params.framerate = 0;
1920 printk(KERN_INFO "meye: Motion Eye Camera Driver v%s.\n",
1922 printk(KERN_INFO "meye: mchip KL5A72002 rev. %d, base %lx, irq %d\n",
1923 revision, mchip_adr, meye.mchip_irq);
1928 free_irq(meye.mchip_irq, meye_irq);
1930 iounmap(meye.mchip_mmregs);
1932 release_mem_region(pci_resource_start(meye.mchip_dev, 0),
1933 pci_resource_len(meye.mchip_dev, 0));
1935 pci_disable_device(meye.mchip_dev);
1939 kfifo_free(meye.doneq);
1941 kfifo_free(meye.grabq);
1943 vfree(meye.grab_temp);
1945 video_device_release(meye.video_dev);
1952 video_unregister_device(meye.video_dev);
1961 free_irq(meye.mchip_irq, meye_irq);
1963 iounmap(meye.mchip_mmregs);
1965 release_mem_region(pci_resource_start(meye.mchip_dev, 0),
1966 pci_resource_len(meye.mchip_dev, 0));
1968 pci_disable_device(meye.mchip_dev);
1972 kfifo_free(meye.doneq);
1973 kfifo_free(meye.grabq);
1975 vfree(meye.grab_temp);
1977 if (meye.grab_fbuffer) {
1978 rvfree(meye.grab_fbuffer, gbuffers*gbufsize);
1979 meye.grab_fbuffer = NULL;
1982 printk(KERN_INFO "meye: removed\n");
1994 .name = "meye",
2010 printk(KERN_INFO "meye: using %d buffers with %dk (%dk total)"