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

Lines Matching refs:cam

249 	struct camera_data *cam = video_get_drvdata(dev);
252 if (!cam) {
257 if(mutex_lock_interruptible(&cam->busy_lock))
260 if(!cam->present) {
265 if (cam->open_count > 0) {
269 if (cpia2_allocate_buffers(cam)) {
275 if (cpia2_reset_camera(cam) < 0) {
280 cam->APP_len = 0;
281 cam->COM_len = 0;
292 v4l2_prio_open(&cam->prio, &fh->prio);
296 ++cam->open_count;
298 cpia2_dbg_dump_registers(cam);
301 mutex_unlock(&cam->busy_lock);
313 struct camera_data *cam = video_get_drvdata(dev);
316 mutex_lock(&cam->busy_lock);
318 if (cam->present &&
319 (cam->open_count == 1
322 cpia2_usb_stream_stop(cam);
324 if(cam->open_count == 1) {
326 cpia2_save_camera_state(cam);
328 cpia2_set_low_power(cam);
329 cpia2_free_buffers(cam);
335 cam->mmapped = 0;
336 v4l2_prio_close(&cam->prio,&fh->prio);
341 if (--cam->open_count == 0) {
342 cpia2_free_buffers(cam);
343 if (!cam->present) {
345 mutex_unlock(&cam->busy_lock);
346 kfree(cam);
351 mutex_unlock(&cam->busy_lock);
365 struct camera_data *cam = video_get_drvdata(dev);
370 if(!cam)
378 return cpia2_read(cam, buf, count, noblock);
390 struct camera_data *cam = video_get_drvdata(dev);
394 if(!cam)
402 return cpia2_poll(cam, filp, wait);
411 static int ioctl_cap_query(void *arg, struct camera_data *cam)
417 if (cam->params.pnp_id.product == 0x151)
427 switch (cam->params.version.sensor_flags) {
489 static int ioctl_set_image_prop(void *arg, struct camera_data *cam)
496 memcpy(&cam->vp, vp, sizeof(*vp));
498 /* update cam->params.colorParams */
499 cam->params.color_params.brightness = vp->brightness / 256;
500 cam->params.color_params.saturation = vp->colour / 256;
501 cam->params.color_params.contrast = vp->contrast / 256;
504 cam->params.color_params.brightness,
505 cam->params.color_params.saturation,
506 cam->params.color_params.contrast);
508 cpia2_set_color_params(cam);
513 static int sync(struct camera_data *cam, int frame_nr)
515 struct framebuf *frame = &cam->buffers[frame_nr];
521 if (!cam->streaming) {
527 mutex_unlock(&cam->busy_lock);
528 wait_event_interruptible(cam->wq_stream,
529 !cam->streaming ||
531 mutex_lock(&cam->busy_lock);
534 if(!cam->present)
544 static int ioctl_set_window_size(void *arg, struct camera_data *cam,
559 err = v4l2_prio_change(&cam->prio, &fh->prio, V4L2_PRIORITY_RECORD);
563 cam->pixelformat = V4L2_PIX_FMT_JPEG;
566 cam->params.compression.inhibit_htables = 0;
572 if (vw->width != cam->vw.width || vw->height != cam->vw.height) {
573 cam->vw.width = vw->width;
574 cam->vw.height = vw->height;
575 cam->params.roi.width = vw->width;
576 cam->params.roi.height = vw->height;
577 cpia2_set_format(cam);
580 for (frame = 0; frame < cam->num_frames; ++frame) {
581 if (cam->buffers[frame].status == FRAME_READING)
582 if ((err = sync(cam, frame)) < 0)
585 cam->buffers[frame].status = FRAME_EMPTY;
596 static int ioctl_get_mbuf(void *arg, struct camera_data *cam)
603 vm->size = cam->frame_size*cam->num_frames;
604 vm->frames = cam->num_frames;
605 for (i = 0; i < cam->num_frames; i++)
606 vm->offsets[i] = cam->frame_size * i;
616 static int ioctl_mcapture(void *arg, struct camera_data *cam,
623 if (vm->frame < 0 || vm->frame >= cam->num_frames)
628 if (cam->video_size < 0) {
633 err = v4l2_prio_change(&cam->prio, &fh->prio, V4L2_PRIORITY_RECORD);
637 if (video_size != cam->video_size) {
638 cam->video_size = video_size;
639 cam->params.roi.width = vm->width;
640 cam->params.roi.height = vm->height;
641 cpia2_set_format(cam);
644 if (cam->buffers[vm->frame].status == FRAME_READING)
645 if ((err=sync(cam, vm->frame)) < 0)
648 cam->buffers[vm->frame].status = FRAME_EMPTY;
650 return cpia2_usb_stream_start(cam,cam->params.camera_state.stream_mode);
658 static int ioctl_sync(void *arg, struct camera_data *cam)
664 if (frame < 0 || frame >= cam->num_frames)
667 return sync(cam, frame);
677 static int ioctl_set_gpio(void *arg, struct camera_data *cam)
686 return cpia2_set_gpio(cam, (unsigned char)gpio_val);
697 static int ioctl_querycap(void *arg, struct camera_data *cam)
704 if (cam->params.pnp_id.product == 0x151)
708 switch (cam->params.pnp_id.device_type) {
719 switch (cam->params.version.sensor_flags) {
740 if (usb_make_path(cam->dev, vc->bus_info, sizeof(vc->bus_info)) <0)
761 static int ioctl_input(unsigned int ioclt_nr,void *arg,struct camera_data *cam)
785 static int ioctl_enum_fmt(void *arg,struct camera_data *cam)
821 static int ioctl_try_fmt(void *arg,struct camera_data *cam)
834 f->fmt.pix.sizeimage = cam->frame_size;
885 static int ioctl_set_fmt(void *arg,struct camera_data *cam, struct cpia2_fh *fh)
890 err = ioctl_try_fmt(arg, cam);
895 err = v4l2_prio_change(&cam->prio, &fh->prio, V4L2_PRIORITY_RECORD);
900 cam->pixelformat = f->fmt.pix.pixelformat;
904 cam->params.compression.inhibit_htables = 0;
912 if (f->fmt.pix.width != cam->vw.width ||
913 f->fmt.pix.height != cam->vw.height) {
914 cam->vw.width = f->fmt.pix.width;
915 cam->vw.height = f->fmt.pix.height;
916 cam->params.roi.width = f->fmt.pix.width;
917 cam->params.roi.height = f->fmt.pix.height;
918 cpia2_set_format(cam);
921 for (frame = 0; frame < cam->num_frames; ++frame) {
922 if (cam->buffers[frame].status == FRAME_READING)
923 if ((err = sync(cam, frame)) < 0)
926 cam->buffers[frame].status = FRAME_EMPTY;
940 static int ioctl_get_fmt(void *arg,struct camera_data *cam)
947 f->fmt.pix.width = cam->vw.width;
948 f->fmt.pix.height = cam->vw.height;
949 f->fmt.pix.pixelformat = cam->pixelformat;
952 f->fmt.pix.sizeimage = cam->frame_size;
968 static int ioctl_cropcap(void *arg,struct camera_data *cam)
977 c->bounds.width = cam->vw.width;
978 c->bounds.height = cam->vw.height;
981 c->defrect.width = cam->vw.width;
982 c->defrect.height = cam->vw.height;
997 static int ioctl_queryctrl(void *arg,struct camera_data *cam)
1019 if (cam->params.pnp_id.device_type == DEVICE_STV_672)
1024 if(cam->params.pnp_id.device_type == DEVICE_STV_672)
1028 if(cam->params.pnp_id.device_type == DEVICE_STV_672 &&
1029 cam->params.version.sensor_flags==CPIA2_VP_SENSOR_FLAGS_500){
1043 if(cam->params.pnp_id.device_type != DEVICE_STV_672)
1048 if(cam->params.pnp_id.product != 0x151)
1066 static int ioctl_querymenu(void *arg,struct camera_data *cam)
1083 if(cam->params.pnp_id.device_type == DEVICE_STV_672 &&
1084 cam->params.version.sensor_flags==CPIA2_VP_SENSOR_FLAGS_500){
1120 static int ioctl_g_ctrl(void *arg,struct camera_data *cam)
1126 cpia2_do_command(cam, CPIA2_CMD_GET_VP_BRIGHTNESS,
1128 c->value = cam->params.color_params.brightness;
1131 cpia2_do_command(cam, CPIA2_CMD_GET_CONTRAST,
1133 c->value = cam->params.color_params.contrast;
1136 cpia2_do_command(cam, CPIA2_CMD_GET_VP_SATURATION,
1138 c->value = cam->params.color_params.saturation;
1141 cpia2_do_command(cam, CPIA2_CMD_GET_USER_EFFECTS,
1143 c->value = (cam->params.vp_params.user_effects &
1147 cpia2_do_command(cam, CPIA2_CMD_GET_USER_EFFECTS,
1149 c->value = (cam->params.vp_params.user_effects &
1153 c->value = cam->params.vc_params.target_kb;
1156 cpia2_do_command(cam, CPIA2_CMD_GET_VP_GPIO_DATA,
1158 c->value = cam->params.vp_params.gpio_data;
1163 cpia2_do_command(cam, CPIA2_CMD_GET_FLICKER_MODES,
1165 if(cam->params.flicker_control.cam_register &
1169 if(cam->params.flicker_control.cam_register &
1191 if(cam->params.vp_params.frame_rate ==
1201 c->value = cam->params.camera_state.stream_mode;
1206 cpia2_do_command(cam, CPIA2_CMD_GET_VP_GPIO_DATA,
1209 if((cam->params.vp_params.gpio_data&GPIO_LIGHTS_MASK) ==
1238 static int ioctl_s_ctrl(void *arg,struct camera_data *cam)
1261 cpia2_set_brightness(cam, c->value);
1264 cpia2_set_contrast(cam, c->value);
1267 cpia2_set_saturation(cam, c->value);
1270 cpia2_set_property_mirror(cam, c->value);
1273 cpia2_set_property_flip(cam, c->value);
1276 retval = cpia2_set_target_kb(cam, c->value);
1279 retval = cpia2_set_gpio(cam, c->value);
1282 retval = cpia2_set_flicker_mode(cam,
1286 retval = cpia2_set_fps(cam, framerate_controls[c->value].value);
1289 retval = cpia2_usb_change_streaming_alternate(cam, c->value);
1292 retval = cpia2_set_gpio(cam, lights_controls[c->value].value);
1295 cpia2_usb_stream_pause(cam);
1296 cpia2_reset_camera(cam);
1297 cpia2_usb_stream_resume(cam);
1314 static int ioctl_g_jpegcomp(void *arg,struct camera_data *cam)
1323 if(!cam->params.compression.inhibit_htables) {
1327 parms->APPn = cam->APPn;
1328 parms->APP_len = cam->APP_len;
1329 if(cam->APP_len > 0) {
1330 memcpy(parms->APP_data, cam->APP_data, cam->APP_len);
1334 parms->COM_len = cam->COM_len;
1335 if(cam->COM_len > 0) {
1336 memcpy(parms->COM_data, cam->COM_data, cam->COM_len);
1355 static int ioctl_s_jpegcomp(void *arg,struct camera_data *cam)
1362 cam->params.compression.inhibit_htables =
1367 parms->APP_len <= sizeof(cam->APP_data) &&
1369 cam->APPn = parms->APPn;
1370 cam->APP_len = parms->APP_len;
1371 memcpy(cam->APP_data, parms->APP_data, parms->APP_len);
1378 cam->APP_len = 0;
1383 parms->COM_len <= sizeof(cam->COM_data)) {
1384 cam->COM_len = parms->COM_len;
1385 memcpy(cam->COM_data, parms->COM_data, parms->COM_len);
1404 static int ioctl_reqbufs(void *arg,struct camera_data *cam)
1412 DBG("REQBUFS requested:%d returning:%d\n", req->count, cam->num_frames);
1413 req->count = cam->num_frames;
1427 static int ioctl_querybuf(void *arg,struct camera_data *cam)
1432 buf->index > cam->num_frames)
1435 buf->m.offset = cam->buffers[buf->index].data - cam->frame_buffer;
1436 buf->length = cam->frame_size;
1440 if(cam->mmapped)
1445 switch (cam->buffers[buf->index].status) {
1453 buf->bytesused = cam->buffers[buf->index].length;
1454 buf->timestamp = cam->buffers[buf->index].timestamp;
1455 buf->sequence = cam->buffers[buf->index].seq;
1475 static int ioctl_qbuf(void *arg,struct camera_data *cam)
1481 buf->index > cam->num_frames)
1486 if(cam->buffers[buf->index].status == FRAME_READY)
1487 cam->buffers[buf->index].status = FRAME_EMPTY;
1500 static int find_earliest_filled_buffer(struct camera_data *cam)
1504 for (i=0; i<cam->num_frames; i++) {
1505 if(cam->buffers[i].status == FRAME_READY) {
1511 tv1 = &cam->buffers[i].timestamp;
1512 tv2 = &cam->buffers[found].timestamp;
1531 static int ioctl_dqbuf(void *arg,struct camera_data *cam, struct file *file)
1540 frame = find_earliest_filled_buffer(cam);
1547 struct framebuf *cb=cam->curbuff;
1548 mutex_unlock(&cam->busy_lock);
1549 wait_event_interruptible(cam->wq_stream,
1550 !cam->present ||
1551 (cb=cam->curbuff)->status == FRAME_READY);
1552 mutex_lock(&cam->busy_lock);
1555 if(!cam->present)
1562 buf->bytesused = cam->buffers[buf->index].length;
1565 buf->timestamp = cam->buffers[buf->index].timestamp;
1566 buf->sequence = cam->buffers[buf->index].seq;
1567 buf->m.offset = cam->buffers[buf->index].data - cam->frame_buffer;
1568 buf->length = cam->frame_size;
1574 cam->buffers[buf->index].status, buf->sequence, buf->bytesused);
1588 struct camera_data *cam = video_get_drvdata(dev);
1591 if (!cam)
1595 if (mutex_lock_interruptible(&cam->busy_lock))
1598 if (!cam->present) {
1599 mutex_unlock(&cam->busy_lock);
1610 retval = v4l2_prio_check(&cam->prio, &fh->prio);
1612 mutex_unlock(&cam->busy_lock);
1622 mutex_unlock(&cam->busy_lock);
1633 retval = ioctl_cap_query(arg, cam);
1643 memcpy(arg, &cam->vp, sizeof(struct video_picture));
1646 retval = ioctl_set_image_prop(arg, cam);
1649 memcpy(arg, &cam->vw, sizeof(struct video_window));
1652 retval = ioctl_set_window_size(arg, cam, file->private_data);
1655 retval = ioctl_get_mbuf(arg, cam);
1658 retval = ioctl_mcapture(arg, cam, file->private_data);
1661 retval = ioctl_sync(arg, cam);
1687 retval = ioctl_set_gpio(arg, cam);
1690 retval = ioctl_querycap(arg,cam);
1696 retval = ioctl_input(ioctl_nr, arg,cam);
1700 retval = ioctl_enum_fmt(arg,cam);
1703 retval = ioctl_try_fmt(arg,cam);
1706 retval = ioctl_get_fmt(arg,cam);
1709 retval = ioctl_set_fmt(arg,cam,file->private_data);
1713 retval = ioctl_cropcap(arg,cam);
1722 retval = ioctl_queryctrl(arg,cam);
1725 retval = ioctl_querymenu(arg,cam);
1728 retval = ioctl_g_ctrl(arg,cam);
1731 retval = ioctl_s_ctrl(arg,cam);
1735 retval = ioctl_g_jpegcomp(arg,cam);
1738 retval = ioctl_s_jpegcomp(arg,cam);
1752 if(cam->streaming &&
1759 v4l2_prio_max(&cam->prio) == V4L2_PRIORITY_RECORD) {
1763 retval = v4l2_prio_change(&cam->prio, &fh->prio, prio);
1769 retval = ioctl_reqbufs(arg,cam);
1772 retval = ioctl_querybuf(arg,cam);
1775 retval = ioctl_qbuf(arg,cam);
1778 retval = ioctl_dqbuf(arg,cam,file);
1783 DBG("VIDIOC_STREAMON, streaming=%d\n", cam->streaming);
1785 if(!cam->mmapped || type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1788 if(!cam->streaming) {
1789 retval = cpia2_usb_stream_start(cam,
1790 cam->params.camera_state.stream_mode);
1800 DBG("VIDIOC_STREAMOFF, streaming=%d\n", cam->streaming);
1802 if(!cam->mmapped || type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1805 if(cam->streaming) {
1806 retval = cpia2_usb_stream_stop(cam);
1851 mutex_unlock(&cam->busy_lock);
1870 struct camera_data *cam = video_get_drvdata(dev);
1878 retval = cpia2_remap_buffer(cam, area);
1891 static void reset_camera_struct_v4l(struct camera_data *cam)
1897 cam->vp.palette = (u16) VIDEO_PALETTE_RGB24; /* Is this right? */
1898 cam->vp.brightness = (u16) cam->params.color_params.brightness * 256;
1899 cam->vp.colour = (u16) cam->params.color_params.saturation * 256;
1900 cam->vp.contrast = (u16) cam->params.color_params.contrast * 256;
1902 cam->vw.x = 0;
1903 cam->vw.y = 0;
1904 cam->vw.width = cam->params.roi.width;
1905 cam->vw.height = cam->params.roi.height;
1906 cam->vw.flags = 0;
1907 cam->vw.clipcount = 0;
1909 cam->frame_size = buffer_size;
1910 cam->num_frames = num_buffers;
1913 cam->params.flicker_control.flicker_mode_req = flicker_mode;
1914 cam->params.flicker_control.mains_frequency = flicker_freq;
1917 cam->params.camera_state.stream_mode = alternate;
1919 cam->pixelformat = V4L2_PIX_FMT_JPEG;
1920 v4l2_prio_init(&cam->prio);
1957 int cpia2_register_camera(struct camera_data *cam)
1959 cam->vdev = video_device_alloc();
1960 if(!cam->vdev)
1963 memcpy(cam->vdev, &cpia2_template, sizeof(cpia2_template));
1964 video_set_drvdata(cam->vdev, cam);
1966 reset_camera_struct_v4l(cam);
1970 (cam->vdev, VFL_TYPE_GRABBER, video_nr) == -1) {
1972 video_device_release(cam->vdev);
1984 void cpia2_unregister_camera(struct camera_data *cam)
1986 if (!cam->open_count) {
1987 video_unregister_device(cam->vdev);
1991 cam->vdev->minor);