• Home
  • Raw
  • Download

Lines Matching refs:cam

51 static int apply_vp_patch(struct camera_data *cam);
52 static int set_default_user_mode(struct camera_data *cam);
53 static int set_vw_size(struct camera_data *cam, int size);
54 static int configure_sensor(struct camera_data *cam,
56 static int config_sensor_410(struct camera_data *cam,
58 static int config_sensor_500(struct camera_data *cam,
60 static int set_all_properties(struct camera_data *cam);
61 static void wake_system(struct camera_data *cam);
62 static void set_lowlight_boost(struct camera_data *cam);
63 static void reset_camera_struct(struct camera_data *cam);
64 static int cpia2_set_high_power(struct camera_data *cam);
128 int cpia2_do_command(struct camera_data *cam, in cpia2_do_command() argument
133 unsigned int device = cam->params.pnp_id.device_type; in cpia2_do_command()
420 retval = cpia2_send_command(cam, &cmd); in cpia2_do_command()
430 cam->params.version.firmware_revision_hi = in cpia2_do_command()
432 cam->params.version.firmware_revision_lo = in cpia2_do_command()
436 cam->params.pnp_id.vendor = (cmd.buffer.block_data[0] << 8) | in cpia2_do_command()
438 cam->params.pnp_id.product = (cmd.buffer.block_data[2] << 8) | in cpia2_do_command()
440 cam->params.pnp_id.device_revision = in cpia2_do_command()
443 if (cam->params.pnp_id.vendor == 0x553) { in cpia2_do_command()
444 if (cam->params.pnp_id.product == 0x100) { in cpia2_do_command()
445 cam->params.pnp_id.device_type = DEVICE_STV_672; in cpia2_do_command()
446 } else if (cam->params.pnp_id.product == 0x140 || in cpia2_do_command()
447 cam->params.pnp_id.product == 0x151) { in cpia2_do_command()
448 cam->params.pnp_id.device_type = DEVICE_STV_676; in cpia2_do_command()
453 cam->params.version.asic_id = cmd.buffer.block_data[0]; in cpia2_do_command()
454 cam->params.version.asic_rev = cmd.buffer.block_data[1]; in cpia2_do_command()
457 cam->params.version.sensor_flags = cmd.buffer.block_data[0]; in cpia2_do_command()
458 cam->params.version.sensor_rev = cmd.buffer.block_data[1]; in cpia2_do_command()
461 cam->params.version.vp_device_hi = cmd.buffer.block_data[0]; in cpia2_do_command()
462 cam->params.version.vp_device_lo = cmd.buffer.block_data[1]; in cpia2_do_command()
465 cam->params.vp_params.gpio_data = cmd.buffer.block_data[0]; in cpia2_do_command()
468 cam->params.vp_params.gpio_direction = cmd.buffer.block_data[0]; in cpia2_do_command()
471 cam->params.vc_params.vc_mp_direction =cmd.buffer.block_data[0]; in cpia2_do_command()
474 cam->params.vc_params.vc_mp_data = cmd.buffer.block_data[0]; in cpia2_do_command()
477 cam->params.flicker_control.cam_register = in cpia2_do_command()
481 cam->params.vc_params.wakeup = cmd.buffer.block_data[0]; in cpia2_do_command()
484 cam->params.vc_params.pw_control = cmd.buffer.block_data[0]; in cpia2_do_command()
487 cam->params.camera_state.system_ctrl = cmd.buffer.block_data[0]; in cpia2_do_command()
490 cam->params.vp_params.system_state = cmd.buffer.block_data[0]; in cpia2_do_command()
493 cam->params.vp_params.system_ctrl = cmd.buffer.block_data[0]; in cpia2_do_command()
496 cam->params.vp_params.exposure_modes = cmd.buffer.block_data[0]; in cpia2_do_command()
499 cam->params.vp_params.device_config = cmd.buffer.block_data[0]; in cpia2_do_command()
502 cam->params.vc_params.vc_control = cmd.buffer.block_data[0]; in cpia2_do_command()
505 cam->params.vp_params.video_mode = cmd.buffer.block_data[0]; in cpia2_do_command()
508 cam->params.vp_params.user_effects = cmd.buffer.block_data[0]; in cpia2_do_command()
525 int cpia2_send_command(struct camera_data *cam, struct cpia2_command *cmd) in cpia2_send_command() argument
570 retval = cpia2_usb_transfer_cmd(cam, in cpia2_send_command()
600 static void cpia2_get_version_info(struct camera_data *cam) in cpia2_get_version_info() argument
602 cpia2_do_command(cam, CPIA2_CMD_GET_VERSION, TRANSFER_READ, 0); in cpia2_get_version_info()
603 cpia2_do_command(cam, CPIA2_CMD_GET_PNP_ID, TRANSFER_READ, 0); in cpia2_get_version_info()
604 cpia2_do_command(cam, CPIA2_CMD_GET_ASIC_TYPE, TRANSFER_READ, 0); in cpia2_get_version_info()
605 cpia2_do_command(cam, CPIA2_CMD_GET_SENSOR, TRANSFER_READ, 0); in cpia2_get_version_info()
606 cpia2_do_command(cam, CPIA2_CMD_GET_VP_DEVICE, TRANSFER_READ, 0); in cpia2_get_version_info()
615 int cpia2_reset_camera(struct camera_data *cam) in cpia2_reset_camera() argument
626 retval = configure_sensor(cam, in cpia2_reset_camera()
627 cam->params.roi.width, in cpia2_reset_camera()
628 cam->params.roi.height); in cpia2_reset_camera()
646 cpia2_send_command(cam, &cmd); in cpia2_reset_camera()
648 cpia2_set_high_power(cam); in cpia2_reset_camera()
650 if (cam->params.pnp_id.device_type == DEVICE_STV_672) { in cpia2_reset_camera()
657 cpia2_send_command(cam, &cmd); in cpia2_reset_camera()
662 if (cam->params.pnp_id.device_type == DEVICE_STV_672) in cpia2_reset_camera()
663 retval = apply_vp_patch(cam); in cpia2_reset_camera()
671 if (cam->params.pnp_id.device_type == DEVICE_STV_676) { in cpia2_reset_camera()
707 cpia2_send_command(cam, &cmd); in cpia2_reset_camera()
712 set_default_user_mode(cam); in cpia2_reset_camera()
717 set_all_properties(cam); in cpia2_reset_camera()
719 cpia2_do_command(cam, CPIA2_CMD_GET_USER_MODE, TRANSFER_READ, 0); in cpia2_reset_camera()
721 cam->params.vp_params.video_mode); in cpia2_reset_camera()
729 cpia2_do_command(cam, CPIA2_CMD_GET_VP_SYSTEM_CTRL, TRANSFER_READ, 0); in cpia2_reset_camera()
730 tmp_reg = cam->params.vp_params.system_ctrl; in cpia2_reset_camera()
734 cpia2_do_command(cam, CPIA2_CMD_GET_DEVICE_CONFIG, TRANSFER_READ, 0); in cpia2_reset_camera()
735 cmd.buffer.registers[1].value = cam->params.vp_params.device_config | in cpia2_reset_camera()
743 cpia2_send_command(cam, &cmd); in cpia2_reset_camera()
746 cpia2_do_command(cam, in cpia2_reset_camera()
752 cpia2_do_command(cam, in cpia2_reset_camera()
757 if (cam->params.pnp_id.device_type == DEVICE_STV_672) in cpia2_reset_camera()
758 cpia2_do_command(cam, in cpia2_reset_camera()
763 cpia2_do_command(cam, in cpia2_reset_camera()
769 if (cam->params.pnp_id.device_type == DEVICE_STV_676) in cpia2_reset_camera()
770 cpia2_do_command(cam, in cpia2_reset_camera()
776 cpia2_do_command(cam, CPIA2_CMD_GET_DEVICE_CONFIG, TRANSFER_READ, 0); in cpia2_reset_camera()
777 cmd.buffer.registers[0].value = cam->params.vp_params.device_config & in cpia2_reset_camera()
780 cpia2_do_command(cam, CPIA2_CMD_GET_VP_SYSTEM_CTRL, TRANSFER_READ, 0); in cpia2_reset_camera()
782 cam->params.vp_params.system_ctrl | CPIA2_VP_SYSTEMCTRL_HK_CONTROL; in cpia2_reset_camera()
790 cpia2_send_command(cam, &cmd); in cpia2_reset_camera()
793 cpia2_do_command(cam, CPIA2_CMD_GET_VC_CONTROL, TRANSFER_READ, 0); in cpia2_reset_camera()
794 if (cam->params.compression.inhibit_htables) { in cpia2_reset_camera()
795 tmp_reg = cam->params.vc_params.vc_control | in cpia2_reset_camera()
798 tmp_reg = cam->params.vc_params.vc_control & in cpia2_reset_camera()
801 cpia2_do_command(cam, CPIA2_CMD_SET_VC_CONTROL, TRANSFER_WRITE,tmp_reg); in cpia2_reset_camera()
807 target_kb = (cam->width * cam->height * 2 / 16384) * in cpia2_reset_camera()
808 cam->params.vc_params.quality / 100; in cpia2_reset_camera()
811 cpia2_do_command(cam, CPIA2_CMD_SET_TARGET_KB, in cpia2_reset_camera()
819 cpia2_do_command(cam, CPIA2_CMD_GET_PW_CONTROL, in cpia2_reset_camera()
823 tmp_reg = cam->params.vc_params.pw_control; in cpia2_reset_camera()
826 cpia2_do_command(cam, CPIA2_CMD_SET_PW_CONTROL, TRANSFER_WRITE,tmp_reg); in cpia2_reset_camera()
829 cpia2_do_command(cam, CPIA2_CMD_SET_PW_CONTROL, TRANSFER_WRITE,tmp_reg); in cpia2_reset_camera()
831 cpia2_do_command(cam, CPIA2_CMD_SET_DEF_JPEG_OPT, TRANSFER_WRITE, 0); in cpia2_reset_camera()
833 cpia2_do_command(cam, CPIA2_CMD_GET_USER_MODE, TRANSFER_READ, 0); in cpia2_reset_camera()
835 cam->params.vp_params.video_mode); in cpia2_reset_camera()
845 static int cpia2_set_high_power(struct camera_data *cam) in cpia2_set_high_power() argument
850 cpia2_do_command(cam,CPIA2_CMD_GET_SYSTEM_CTRL,TRANSFER_READ,0); in cpia2_set_high_power()
853 if(cam->params.camera_state.system_ctrl & in cpia2_set_high_power()
855 cpia2_do_command(cam, CPIA2_CMD_CLEAR_V2W_ERR, in cpia2_set_high_power()
859 cpia2_do_command(cam, CPIA2_CMD_SET_SYSTEM_CTRL, in cpia2_set_high_power()
863 cpia2_do_command(cam, CPIA2_CMD_GET_VP_SYSTEM_STATE, in cpia2_set_high_power()
865 if (cam->params.vp_params.system_state & in cpia2_set_high_power()
869 cam->params.camera_state.power_mode = LO_POWER_MODE; in cpia2_set_high_power()
876 cam->params.camera_state.power_mode = HI_POWER_MODE; in cpia2_set_high_power()
885 int cpia2_set_low_power(struct camera_data *cam) in cpia2_set_low_power() argument
887 cam->params.camera_state.power_mode = LO_POWER_MODE; in cpia2_set_low_power()
888 cpia2_do_command(cam, CPIA2_CMD_SET_SYSTEM_CTRL, TRANSFER_WRITE, 0); in cpia2_set_low_power()
897 static int cpia2_send_onebyte_command(struct camera_data *cam, in cpia2_send_onebyte_command() argument
904 return cpia2_send_command(cam, cmd); in cpia2_send_onebyte_command()
907 static int apply_vp_patch(struct camera_data *cam) in apply_vp_patch() argument
914 ret = request_firmware(&fw, fw_name, &cam->dev->dev); in apply_vp_patch()
925 cpia2_send_onebyte_command(cam, &cmd, 0x0A, fw->data[0]); /* hi */ in apply_vp_patch()
926 cpia2_send_onebyte_command(cam, &cmd, 0x0B, fw->data[1]); /* lo */ in apply_vp_patch()
933 cpia2_send_command(cam, &cmd); in apply_vp_patch()
937 cpia2_send_onebyte_command(cam, &cmd, 0x0A, fw->data[0]); /* hi */ in apply_vp_patch()
938 cpia2_send_onebyte_command(cam, &cmd, 0x0B, fw->data[1]); /* lo */ in apply_vp_patch()
941 cpia2_send_onebyte_command(cam, &cmd, 0x0D, 1); in apply_vp_patch()
952 static int set_default_user_mode(struct camera_data *cam) in set_default_user_mode() argument
956 int width = cam->params.roi.width; in set_default_user_mode()
957 int height = cam->params.roi.height; in set_default_user_mode()
959 switch (cam->params.version.sensor_flags) { in set_default_user_mode()
979 if (cam->params.pnp_id.device_type == DEVICE_STV_672) in set_default_user_mode()
986 cam->params.version.sensor_flags); in set_default_user_mode()
991 cam->params.version.sensor_flags, user_mode, frame_rate); in set_default_user_mode()
992 cpia2_do_command(cam, CPIA2_CMD_SET_USER_MODE, TRANSFER_WRITE, in set_default_user_mode()
994 if(cam->params.vp_params.frame_rate > 0 && in set_default_user_mode()
995 frame_rate > cam->params.vp_params.frame_rate) in set_default_user_mode()
996 frame_rate = cam->params.vp_params.frame_rate; in set_default_user_mode()
998 cpia2_set_fps(cam, frame_rate); in set_default_user_mode()
1051 static int set_vw_size(struct camera_data *cam, int size) in set_vw_size() argument
1055 cam->params.vp_params.video_size = size; in set_vw_size()
1060 cam->params.roi.width = STV_IMAGE_VGA_COLS; in set_vw_size()
1061 cam->params.roi.height = STV_IMAGE_VGA_ROWS; in set_vw_size()
1062 cam->width = STV_IMAGE_VGA_COLS; in set_vw_size()
1063 cam->height = STV_IMAGE_VGA_ROWS; in set_vw_size()
1067 cam->params.roi.width = STV_IMAGE_CIF_COLS; in set_vw_size()
1068 cam->params.roi.height = STV_IMAGE_CIF_ROWS; in set_vw_size()
1069 cam->width = STV_IMAGE_CIF_COLS; in set_vw_size()
1070 cam->height = STV_IMAGE_CIF_ROWS; in set_vw_size()
1074 cam->params.roi.width = STV_IMAGE_QVGA_COLS; in set_vw_size()
1075 cam->params.roi.height = STV_IMAGE_QVGA_ROWS; in set_vw_size()
1076 cam->width = STV_IMAGE_QVGA_COLS; in set_vw_size()
1077 cam->height = STV_IMAGE_QVGA_ROWS; in set_vw_size()
1080 cam->params.roi.width = 288; in set_vw_size()
1081 cam->params.roi.height = 216; in set_vw_size()
1082 cam->width = 288; in set_vw_size()
1083 cam->height = 216; in set_vw_size()
1086 cam->width = 256; in set_vw_size()
1087 cam->height = 192; in set_vw_size()
1088 cam->params.roi.width = 256; in set_vw_size()
1089 cam->params.roi.height = 192; in set_vw_size()
1092 cam->width = 224; in set_vw_size()
1093 cam->height = 168; in set_vw_size()
1094 cam->params.roi.width = 224; in set_vw_size()
1095 cam->params.roi.height = 168; in set_vw_size()
1098 cam->width = 192; in set_vw_size()
1099 cam->height = 144; in set_vw_size()
1100 cam->params.roi.width = 192; in set_vw_size()
1101 cam->params.roi.height = 144; in set_vw_size()
1105 cam->params.roi.width = STV_IMAGE_QCIF_COLS; in set_vw_size()
1106 cam->params.roi.height = STV_IMAGE_QCIF_ROWS; in set_vw_size()
1107 cam->width = STV_IMAGE_QCIF_COLS; in set_vw_size()
1108 cam->height = STV_IMAGE_QCIF_ROWS; in set_vw_size()
1121 static int configure_sensor(struct camera_data *cam, in configure_sensor() argument
1126 switch (cam->params.version.sensor_flags) { in configure_sensor()
1131 retval = config_sensor_410(cam, req_width, req_height); in configure_sensor()
1134 retval = config_sensor_500(cam, req_width, req_height); in configure_sensor()
1148 static int config_sensor_410(struct camera_data *cam, in config_sensor_410() argument
1171 set_vw_size(cam, image_size); in config_sensor_410()
1172 width = cam->params.roi.width; in config_sensor_410()
1173 height = cam->params.roi.height; in config_sensor_410()
1211 if (cam->params.pnp_id.device_type == DEVICE_STV_672) { in config_sensor_410()
1224 if (cam->params.pnp_id.device_type == DEVICE_STV_672) { in config_sensor_410()
1274 cmd.buffer.registers[i++].value = cam->params.roi.width / 4; in config_sensor_410()
1277 cmd.buffer.registers[i++].value = cam->params.roi.height / 4; in config_sensor_410()
1323 cpia2_send_command(cam, &cmd); in config_sensor_410()
1334 static int config_sensor_500(struct camera_data *cam, in config_sensor_500() argument
1343 unsigned int device = cam->params.pnp_id.device_type; in config_sensor_500()
1357 set_vw_size(cam, image_size); in config_sensor_500()
1358 width = cam->params.roi.width; in config_sensor_500()
1359 height = cam->params.roi.height; in config_sensor_500()
1529 cpia2_send_command(cam, &cmd); in config_sensor_500()
1541 static int set_all_properties(struct camera_data *cam) in set_all_properties() argument
1548 cpia2_usb_change_streaming_alternate(cam, in set_all_properties()
1549 cam->params.camera_state.stream_mode); in set_all_properties()
1551 cpia2_do_command(cam, in set_all_properties()
1553 TRANSFER_WRITE, cam->params.vp_params.gpio_direction); in set_all_properties()
1554 cpia2_do_command(cam, CPIA2_CMD_SET_VC_MP_GPIO_DATA, TRANSFER_WRITE, in set_all_properties()
1555 cam->params.vp_params.gpio_data); in set_all_properties()
1557 v4l2_ctrl_handler_setup(&cam->hdl); in set_all_properties()
1559 wake_system(cam); in set_all_properties()
1561 set_lowlight_boost(cam); in set_all_properties()
1571 void cpia2_save_camera_state(struct camera_data *cam) in cpia2_save_camera_state() argument
1573 cpia2_do_command(cam, CPIA2_CMD_GET_USER_EFFECTS, TRANSFER_READ, 0); in cpia2_save_camera_state()
1574 cpia2_do_command(cam, CPIA2_CMD_GET_VC_MP_GPIO_DIRECTION, TRANSFER_READ, in cpia2_save_camera_state()
1576 cpia2_do_command(cam, CPIA2_CMD_GET_VC_MP_GPIO_DATA, TRANSFER_READ, 0); in cpia2_save_camera_state()
1586 int cpia2_set_flicker_mode(struct camera_data *cam, int mode) in cpia2_set_flicker_mode() argument
1591 if(cam->params.pnp_id.device_type != DEVICE_STV_672) in cpia2_set_flicker_mode()
1595 if((err = cpia2_do_command(cam, CPIA2_CMD_GET_FLICKER_MODES, in cpia2_set_flicker_mode()
1598 cam_reg = cam->params.flicker_control.cam_register; in cpia2_set_flicker_mode()
1617 if((err = cpia2_do_command(cam, CPIA2_CMD_SET_FLICKER_MODES, in cpia2_set_flicker_mode()
1622 if((err = cpia2_do_command(cam, CPIA2_CMD_GET_VP_EXP_MODES, in cpia2_set_flicker_mode()
1625 cam_reg = cam->params.vp_params.exposure_modes; in cpia2_set_flicker_mode()
1633 if((err = cpia2_do_command(cam, CPIA2_CMD_SET_VP_EXP_MODES, in cpia2_set_flicker_mode()
1637 if((err = cpia2_do_command(cam, CPIA2_CMD_REHASH_VP4, in cpia2_set_flicker_mode()
1645 cam->params.flicker_control.flicker_mode_req = mode; in cpia2_set_flicker_mode()
1659 void cpia2_set_property_flip(struct camera_data *cam, int prop_val) in cpia2_set_property_flip() argument
1663 cpia2_do_command(cam, CPIA2_CMD_GET_USER_EFFECTS, TRANSFER_READ, 0); in cpia2_set_property_flip()
1664 cam_reg = cam->params.vp_params.user_effects; in cpia2_set_property_flip()
1674 cam->params.vp_params.user_effects = cam_reg; in cpia2_set_property_flip()
1675 cpia2_do_command(cam, CPIA2_CMD_SET_USER_EFFECTS, TRANSFER_WRITE, in cpia2_set_property_flip()
1684 void cpia2_set_property_mirror(struct camera_data *cam, int prop_val) in cpia2_set_property_mirror() argument
1688 cpia2_do_command(cam, CPIA2_CMD_GET_USER_EFFECTS, TRANSFER_READ, 0); in cpia2_set_property_mirror()
1689 cam_reg = cam->params.vp_params.user_effects; in cpia2_set_property_mirror()
1699 cam->params.vp_params.user_effects = cam_reg; in cpia2_set_property_mirror()
1700 cpia2_do_command(cam, CPIA2_CMD_SET_USER_EFFECTS, TRANSFER_WRITE, in cpia2_set_property_mirror()
1709 int cpia2_set_gpio(struct camera_data *cam, unsigned char setting) in cpia2_set_gpio() argument
1718 ret = cpia2_do_command(cam, in cpia2_set_gpio()
1724 cam->params.vp_params.gpio_direction = 255; in cpia2_set_gpio()
1726 ret = cpia2_do_command(cam, in cpia2_set_gpio()
1732 cam->params.vp_params.gpio_data = setting; in cpia2_set_gpio()
1742 int cpia2_set_fps(struct camera_data *cam, int framerate) in cpia2_set_fps() argument
1749 if(cam->params.pnp_id.device_type == DEVICE_STV_672 && in cpia2_set_fps()
1750 cam->params.version.sensor_flags == in cpia2_set_fps()
1764 if (cam->params.pnp_id.device_type == DEVICE_STV_672 && in cpia2_set_fps()
1768 retval = cpia2_do_command(cam, in cpia2_set_fps()
1774 cam->params.vp_params.frame_rate = framerate; in cpia2_set_fps()
1784 void cpia2_set_brightness(struct camera_data *cam, unsigned char value) in cpia2_set_brightness() argument
1790 if (cam->params.pnp_id.device_type == DEVICE_STV_672 && value == 0) in cpia2_set_brightness()
1793 cpia2_do_command(cam, CPIA2_CMD_SET_VP_BRIGHTNESS, TRANSFER_WRITE, value); in cpia2_set_brightness()
1801 void cpia2_set_contrast(struct camera_data *cam, unsigned char value) in cpia2_set_contrast() argument
1804 cpia2_do_command(cam, CPIA2_CMD_SET_CONTRAST, TRANSFER_WRITE, value); in cpia2_set_contrast()
1812 void cpia2_set_saturation(struct camera_data *cam, unsigned char value) in cpia2_set_saturation() argument
1815 cpia2_do_command(cam,CPIA2_CMD_SET_VP_SATURATION, TRANSFER_WRITE,value); in cpia2_set_saturation()
1823 static void wake_system(struct camera_data *cam) in wake_system() argument
1825 cpia2_do_command(cam, CPIA2_CMD_SET_WAKEUP, TRANSFER_WRITE, 0); in wake_system()
1834 static void set_lowlight_boost(struct camera_data *cam) in set_lowlight_boost() argument
1838 if (cam->params.pnp_id.device_type != DEVICE_STV_672 || in set_lowlight_boost()
1839 cam->params.version.sensor_flags != CPIA2_VP_SENSOR_FLAGS_500) in set_lowlight_boost()
1851 cpia2_send_command(cam, &cmd); in set_lowlight_boost()
1853 if (cam->params.vp_params.lowlight_boost) { in set_lowlight_boost()
1860 cpia2_send_command(cam, &cmd); in set_lowlight_boost()
1863 cpia2_do_command(cam, CPIA2_CMD_REHASH_VP4, TRANSFER_WRITE, 1); in set_lowlight_boost()
1872 void cpia2_set_format(struct camera_data *cam) in cpia2_set_format() argument
1874 cam->flush = true; in cpia2_set_format()
1876 cpia2_usb_stream_pause(cam); in cpia2_set_format()
1879 cpia2_set_low_power(cam); in cpia2_set_format()
1880 cpia2_reset_camera(cam); in cpia2_set_format()
1881 cam->flush = false; in cpia2_set_format()
1883 cpia2_dbg_dump_registers(cam); in cpia2_set_format()
1885 cpia2_usb_stream_resume(cam); in cpia2_set_format()
1893 void cpia2_dbg_dump_registers(struct camera_data *cam) in cpia2_dbg_dump_registers() argument
1907 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
1919 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
1931 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
1936 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
1942 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
1952 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
1958 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2012 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2041 if (cam->params.pnp_id.device_type == DEVICE_STV_672) { in cpia2_dbg_dump_registers()
2044 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2066 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2072 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2086 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2092 cpia2_send_command(cam, &cmd); in cpia2_dbg_dump_registers()
2111 static void reset_camera_struct(struct camera_data *cam) in reset_camera_struct() argument
2116 cam->params.vp_params.lowlight_boost = 0; in reset_camera_struct()
2119 cam->params.flicker_control.flicker_mode_req = NEVER_FLICKER; in reset_camera_struct()
2122 cam->params.compression.jpeg_options = CPIA2_VC_VC_JPEG_OPT_DEFAULT; in reset_camera_struct()
2123 cam->params.compression.creep_period = 2; in reset_camera_struct()
2124 cam->params.compression.user_squeeze = 20; in reset_camera_struct()
2125 cam->params.compression.inhibit_htables = false; in reset_camera_struct()
2128 cam->params.vp_params.gpio_direction = 0; /* write, the default safe mode */ in reset_camera_struct()
2129 cam->params.vp_params.gpio_data = 0; in reset_camera_struct()
2132 cam->params.vc_params.quality = 100; in reset_camera_struct()
2137 if(cam->params.pnp_id.device_type == DEVICE_STV_672) { in reset_camera_struct()
2138 if(cam->params.version.sensor_flags == CPIA2_VP_SENSOR_FLAGS_500) in reset_camera_struct()
2139 cam->params.vp_params.frame_rate = CPIA2_VP_FRAMERATE_15; in reset_camera_struct()
2141 cam->params.vp_params.frame_rate = CPIA2_VP_FRAMERATE_30; in reset_camera_struct()
2143 cam->params.vp_params.frame_rate = CPIA2_VP_FRAMERATE_30; in reset_camera_struct()
2150 if (cam->params.version.sensor_flags == CPIA2_VP_SENSOR_FLAGS_500) { in reset_camera_struct()
2151 cam->sensor_type = CPIA2_SENSOR_500; in reset_camera_struct()
2152 cam->video_size = VIDEOSIZE_VGA; in reset_camera_struct()
2153 cam->params.roi.width = STV_IMAGE_VGA_COLS; in reset_camera_struct()
2154 cam->params.roi.height = STV_IMAGE_VGA_ROWS; in reset_camera_struct()
2156 cam->sensor_type = CPIA2_SENSOR_410; in reset_camera_struct()
2157 cam->video_size = VIDEOSIZE_CIF; in reset_camera_struct()
2158 cam->params.roi.width = STV_IMAGE_CIF_COLS; in reset_camera_struct()
2159 cam->params.roi.height = STV_IMAGE_CIF_ROWS; in reset_camera_struct()
2162 cam->width = cam->params.roi.width; in reset_camera_struct()
2163 cam->height = cam->params.roi.height; in reset_camera_struct()
2172 void cpia2_deinit_camera_struct(struct camera_data *cam, struct usb_interface *intf) in cpia2_deinit_camera_struct() argument
2174 v4l2_device_unregister(&cam->v4l2_dev); in cpia2_deinit_camera_struct()
2175 kfree(cam); in cpia2_deinit_camera_struct()
2186 struct camera_data *cam; in cpia2_init_camera_struct() local
2188 cam = kzalloc(sizeof(*cam), GFP_KERNEL); in cpia2_init_camera_struct()
2190 if (!cam) { in cpia2_init_camera_struct()
2195 cam->v4l2_dev.release = cpia2_camera_release; in cpia2_init_camera_struct()
2196 if (v4l2_device_register(&intf->dev, &cam->v4l2_dev) < 0) { in cpia2_init_camera_struct()
2197 v4l2_err(&cam->v4l2_dev, "couldn't register v4l2_device\n"); in cpia2_init_camera_struct()
2198 kfree(cam); in cpia2_init_camera_struct()
2202 mutex_init(&cam->v4l2_lock); in cpia2_init_camera_struct()
2203 init_waitqueue_head(&cam->wq_stream); in cpia2_init_camera_struct()
2205 return cam; in cpia2_init_camera_struct()
2214 int cpia2_init_camera(struct camera_data *cam) in cpia2_init_camera() argument
2218 cam->mmapped = false; in cpia2_init_camera()
2221 cpia2_set_high_power(cam); in cpia2_init_camera()
2222 cpia2_get_version_info(cam); in cpia2_init_camera()
2223 if (cam->params.version.asic_id != CPIA2_ASIC_672) { in cpia2_init_camera()
2225 cam->params.version.asic_id); in cpia2_init_camera()
2230 cpia2_do_command(cam, CPIA2_CMD_SET_VC_MP_GPIO_DIRECTION, in cpia2_init_camera()
2232 cpia2_do_command(cam, CPIA2_CMD_SET_VC_MP_GPIO_DATA, in cpia2_init_camera()
2236 reset_camera_struct(cam); in cpia2_init_camera()
2238 cpia2_set_low_power(cam); in cpia2_init_camera()
2250 int cpia2_allocate_buffers(struct camera_data *cam) in cpia2_allocate_buffers() argument
2254 if(!cam->buffers) { in cpia2_allocate_buffers()
2255 u32 size = cam->num_frames*sizeof(struct framebuf); in cpia2_allocate_buffers()
2256 cam->buffers = kmalloc(size, GFP_KERNEL); in cpia2_allocate_buffers()
2257 if(!cam->buffers) { in cpia2_allocate_buffers()
2263 if(!cam->frame_buffer) { in cpia2_allocate_buffers()
2264 cam->frame_buffer = rvmalloc(cam->frame_size*cam->num_frames); in cpia2_allocate_buffers()
2265 if (!cam->frame_buffer) { in cpia2_allocate_buffers()
2267 kfree(cam->buffers); in cpia2_allocate_buffers()
2268 cam->buffers = NULL; in cpia2_allocate_buffers()
2273 for(i=0; i<cam->num_frames-1; ++i) { in cpia2_allocate_buffers()
2274 cam->buffers[i].next = &cam->buffers[i+1]; in cpia2_allocate_buffers()
2275 cam->buffers[i].data = cam->frame_buffer +i*cam->frame_size; in cpia2_allocate_buffers()
2276 cam->buffers[i].status = FRAME_EMPTY; in cpia2_allocate_buffers()
2277 cam->buffers[i].length = 0; in cpia2_allocate_buffers()
2278 cam->buffers[i].max_length = 0; in cpia2_allocate_buffers()
2279 cam->buffers[i].num = i; in cpia2_allocate_buffers()
2281 cam->buffers[i].next = cam->buffers; in cpia2_allocate_buffers()
2282 cam->buffers[i].data = cam->frame_buffer +i*cam->frame_size; in cpia2_allocate_buffers()
2283 cam->buffers[i].status = FRAME_EMPTY; in cpia2_allocate_buffers()
2284 cam->buffers[i].length = 0; in cpia2_allocate_buffers()
2285 cam->buffers[i].max_length = 0; in cpia2_allocate_buffers()
2286 cam->buffers[i].num = i; in cpia2_allocate_buffers()
2287 cam->curbuff = cam->buffers; in cpia2_allocate_buffers()
2288 cam->workbuff = cam->curbuff->next; in cpia2_allocate_buffers()
2289 DBG("buffers=%p, curbuff=%p, workbuff=%p\n", cam->buffers, cam->curbuff, in cpia2_allocate_buffers()
2290 cam->workbuff); in cpia2_allocate_buffers()
2299 void cpia2_free_buffers(struct camera_data *cam) in cpia2_free_buffers() argument
2301 if(cam->buffers) { in cpia2_free_buffers()
2302 kfree(cam->buffers); in cpia2_free_buffers()
2303 cam->buffers = NULL; in cpia2_free_buffers()
2305 if(cam->frame_buffer) { in cpia2_free_buffers()
2306 rvfree(cam->frame_buffer, cam->frame_size*cam->num_frames); in cpia2_free_buffers()
2307 cam->frame_buffer = NULL; in cpia2_free_buffers()
2316 long cpia2_read(struct camera_data *cam, in cpia2_read() argument
2329 if (!cam) { in cpia2_read()
2334 if (!cam->streaming) { in cpia2_read()
2336 cpia2_usb_stream_start(cam, in cpia2_read()
2337 cam->params.camera_state.stream_mode); in cpia2_read()
2341 frame = cam->curbuff; in cpia2_read()
2347 mutex_unlock(&cam->v4l2_lock); in cpia2_read()
2348 wait_event_interruptible(cam->wq_stream, in cpia2_read()
2349 !video_is_registered(&cam->vdev) || in cpia2_read()
2350 (frame = cam->curbuff)->status == FRAME_READY); in cpia2_read()
2351 mutex_lock(&cam->v4l2_lock); in cpia2_read()
2354 if (!video_is_registered(&cam->vdev)) in cpia2_read()
2376 __poll_t cpia2_poll(struct camera_data *cam, struct file *filp, in cpia2_poll() argument
2382 !cam->streaming) { in cpia2_poll()
2384 cpia2_usb_stream_start(cam, in cpia2_poll()
2385 cam->params.camera_state.stream_mode); in cpia2_poll()
2388 poll_wait(filp, &cam->wq_stream, wait); in cpia2_poll()
2390 if (cam->curbuff->status == FRAME_READY) in cpia2_poll()
2401 int cpia2_remap_buffer(struct camera_data *cam, struct vm_area_struct *vma) in cpia2_remap_buffer() argument
2411 if (!video_is_registered(&cam->vdev)) in cpia2_remap_buffer()
2414 if (size > cam->frame_size*cam->num_frames || in cpia2_remap_buffer()
2415 (start_offset % cam->frame_size) != 0 || in cpia2_remap_buffer()
2416 (start_offset+size > cam->frame_size*cam->num_frames)) in cpia2_remap_buffer()
2419 pos = ((unsigned long) (cam->frame_buffer)) + start_offset; in cpia2_remap_buffer()
2432 cam->mmapped = true; in cpia2_remap_buffer()