Lines Matching refs:dev

238 	struct vivid_dev *dev = video_drvdata(file);  in vidioc_querycap()  local
243 "platform:%s", dev->v4l2_dev.name); in vidioc_querycap()
245 cap->capabilities = dev->vid_cap_caps | dev->vid_out_caps | in vidioc_querycap()
246 dev->vbi_cap_caps | dev->vbi_out_caps | in vidioc_querycap()
247 dev->radio_rx_caps | dev->radio_tx_caps | in vidioc_querycap()
248 dev->sdr_cap_caps | dev->meta_cap_caps | in vidioc_querycap()
249 dev->meta_out_caps | dev->touch_cap_caps | in vidioc_querycap()
298 struct vivid_dev *dev = video_drvdata(file); in vidioc_g_frequency() local
304 &dev->radio_rx_freq : &dev->radio_tx_freq, vf); in vidioc_g_frequency()
312 struct vivid_dev *dev = video_drvdata(file); in vidioc_s_frequency() local
318 &dev->radio_rx_freq : &dev->radio_tx_freq, vf); in vidioc_s_frequency()
423 struct vivid_dev *dev = video_drvdata(file); in vidioc_log_status() local
428 tpg_log_status(&dev->tpg); in vidioc_log_status()
572 static bool vivid_is_last_user(struct vivid_dev *dev) in vivid_is_last_user() argument
575 vivid_is_in_use(dev->has_vid_cap, &dev->vid_cap_dev) + in vivid_is_last_user()
576 vivid_is_in_use(dev->has_vid_out, &dev->vid_out_dev) + in vivid_is_last_user()
577 vivid_is_in_use(dev->has_vbi_cap, &dev->vbi_cap_dev) + in vivid_is_last_user()
578 vivid_is_in_use(dev->has_vbi_out, &dev->vbi_out_dev) + in vivid_is_last_user()
579 vivid_is_in_use(dev->has_radio_rx, &dev->radio_rx_dev) + in vivid_is_last_user()
580 vivid_is_in_use(dev->has_radio_tx, &dev->radio_tx_dev) + in vivid_is_last_user()
581 vivid_is_in_use(dev->has_sdr_cap, &dev->sdr_cap_dev) + in vivid_is_last_user()
582 vivid_is_in_use(dev->has_meta_cap, &dev->meta_cap_dev) + in vivid_is_last_user()
583 vivid_is_in_use(dev->has_meta_out, &dev->meta_out_dev) + in vivid_is_last_user()
584 vivid_is_in_use(dev->has_touch_cap, &dev->touch_cap_dev); in vivid_is_last_user()
589 static void vivid_reconnect(struct vivid_dev *dev) in vivid_reconnect() argument
591 if (dev->has_vid_cap) in vivid_reconnect()
592 set_bit(V4L2_FL_REGISTERED, &dev->vid_cap_dev.flags); in vivid_reconnect()
593 if (dev->has_vid_out) in vivid_reconnect()
594 set_bit(V4L2_FL_REGISTERED, &dev->vid_out_dev.flags); in vivid_reconnect()
595 if (dev->has_vbi_cap) in vivid_reconnect()
596 set_bit(V4L2_FL_REGISTERED, &dev->vbi_cap_dev.flags); in vivid_reconnect()
597 if (dev->has_vbi_out) in vivid_reconnect()
598 set_bit(V4L2_FL_REGISTERED, &dev->vbi_out_dev.flags); in vivid_reconnect()
599 if (dev->has_radio_rx) in vivid_reconnect()
600 set_bit(V4L2_FL_REGISTERED, &dev->radio_rx_dev.flags); in vivid_reconnect()
601 if (dev->has_radio_tx) in vivid_reconnect()
602 set_bit(V4L2_FL_REGISTERED, &dev->radio_tx_dev.flags); in vivid_reconnect()
603 if (dev->has_sdr_cap) in vivid_reconnect()
604 set_bit(V4L2_FL_REGISTERED, &dev->sdr_cap_dev.flags); in vivid_reconnect()
605 if (dev->has_meta_cap) in vivid_reconnect()
606 set_bit(V4L2_FL_REGISTERED, &dev->meta_cap_dev.flags); in vivid_reconnect()
607 if (dev->has_meta_out) in vivid_reconnect()
608 set_bit(V4L2_FL_REGISTERED, &dev->meta_out_dev.flags); in vivid_reconnect()
609 if (dev->has_touch_cap) in vivid_reconnect()
610 set_bit(V4L2_FL_REGISTERED, &dev->touch_cap_dev.flags); in vivid_reconnect()
611 dev->disconnect_error = false; in vivid_reconnect()
616 struct vivid_dev *dev = video_drvdata(file); in vivid_fop_release() local
619 mutex_lock(&dev->mutex); in vivid_fop_release()
621 dev->disconnect_error && !video_is_registered(vdev) && in vivid_fop_release()
622 vivid_is_last_user(dev)) { in vivid_fop_release()
628 v4l2_info(&dev->v4l2_dev, "reconnect\n"); in vivid_fop_release()
629 vivid_reconnect(dev); in vivid_fop_release()
631 if (file->private_data == dev->radio_rx_rds_owner) { in vivid_fop_release()
632 dev->radio_rx_rds_last_block = 0; in vivid_fop_release()
633 dev->radio_rx_rds_owner = NULL; in vivid_fop_release()
635 if (file->private_data == dev->radio_tx_rds_owner) { in vivid_fop_release()
636 dev->radio_tx_rds_last_block = 0; in vivid_fop_release()
637 dev->radio_tx_rds_owner = NULL; in vivid_fop_release()
639 mutex_unlock(&dev->mutex); in vivid_fop_release()
827 struct vivid_dev *dev = container_of(v4l2_dev, struct vivid_dev, v4l2_dev); in vivid_dev_release() local
829 vivid_free_controls(dev); in vivid_dev_release()
830 v4l2_device_unregister(&dev->v4l2_dev); in vivid_dev_release()
832 media_device_cleanup(&dev->mdev); in vivid_dev_release()
834 vfree(dev->scaled_line); in vivid_dev_release()
835 vfree(dev->blended_line); in vivid_dev_release()
836 vfree(dev->edid); in vivid_dev_release()
837 tpg_free(&dev->tpg); in vivid_dev_release()
838 kfree(dev->query_dv_timings_qmenu); in vivid_dev_release()
839 kfree(dev->query_dv_timings_qmenu_strings); in vivid_dev_release()
840 kfree(dev); in vivid_dev_release()
846 struct vivid_dev *dev = container_of(req->mdev, struct vivid_dev, mdev); in vivid_req_validate() local
848 if (dev->req_validate_error) { in vivid_req_validate()
849 dev->req_validate_error = false; in vivid_req_validate()
861 static int vivid_create_queue(struct vivid_dev *dev, in vivid_create_queue() argument
867 if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE && dev->multiplanar) in vivid_create_queue()
869 else if (buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT && dev->multiplanar) in vivid_create_queue()
871 else if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE && !dev->has_raw_vbi_cap) in vivid_create_queue()
873 else if (buf_type == V4L2_BUF_TYPE_VBI_OUTPUT && !dev->has_raw_vbi_out) in vivid_create_queue()
879 if (allocators[dev->inst] != 1) in vivid_create_queue()
881 q->drv_priv = dev; in vivid_create_queue()
884 q->mem_ops = allocators[dev->inst] == 1 ? &vb2_dma_contig_memops : in vivid_create_queue()
887 q->min_buffers_needed = supports_requests[dev->inst] ? 0 : min_buffers_needed; in vivid_create_queue()
888 q->lock = &dev->mutex; in vivid_create_queue()
889 q->dev = dev->v4l2_dev.dev; in vivid_create_queue()
890 q->supports_requests = supports_requests[dev->inst]; in vivid_create_queue()
891 q->requires_requests = supports_requests[dev->inst] >= 2; in vivid_create_queue()
892 q->allow_cache_hints = (cache_hints[dev->inst] == 1); in vivid_create_queue()
897 static int vivid_detect_feature_set(struct vivid_dev *dev, int inst, in vivid_detect_feature_set() argument
909 dev->multiplanar = multiplanar[inst] > 1; in vivid_detect_feature_set()
910 v4l2_info(&dev->v4l2_dev, "using %splanar format API\n", in vivid_detect_feature_set()
911 dev->multiplanar ? "multi" : "single "); in vivid_detect_feature_set()
914 dev->num_inputs = num_inputs[inst]; in vivid_detect_feature_set()
916 if (dev->num_inputs < 1) in vivid_detect_feature_set()
917 dev->num_inputs = 1; in vivid_detect_feature_set()
919 dev->num_inputs = 0; in vivid_detect_feature_set()
921 if (dev->num_inputs >= MAX_INPUTS) in vivid_detect_feature_set()
922 dev->num_inputs = MAX_INPUTS; in vivid_detect_feature_set()
923 for (i = 0; i < dev->num_inputs; i++) { in vivid_detect_feature_set()
924 dev->input_type[i] = (input_types[inst] >> (i * 2)) & 0x3; in vivid_detect_feature_set()
925 dev->input_name_counter[i] = in_type_counter[dev->input_type[i]]++; in vivid_detect_feature_set()
927 dev->has_audio_inputs = in_type_counter[TV] && in_type_counter[SVID]; in vivid_detect_feature_set()
931 dev->num_inputs--; in vivid_detect_feature_set()
933 dev->num_hdmi_inputs = in_type_counter[HDMI]; in vivid_detect_feature_set()
936 dev->num_outputs = num_outputs[inst]; in vivid_detect_feature_set()
938 if (dev->num_outputs < 1) in vivid_detect_feature_set()
939 dev->num_outputs = 1; in vivid_detect_feature_set()
941 dev->num_outputs = 0; in vivid_detect_feature_set()
943 if (dev->num_outputs >= MAX_OUTPUTS) in vivid_detect_feature_set()
944 dev->num_outputs = MAX_OUTPUTS; in vivid_detect_feature_set()
945 for (i = 0; i < dev->num_outputs; i++) { in vivid_detect_feature_set()
946 dev->output_type[i] = ((output_types[inst] >> i) & 1) ? HDMI : SVID; in vivid_detect_feature_set()
947 dev->output_name_counter[i] = out_type_counter[dev->output_type[i]]++; in vivid_detect_feature_set()
948 dev->display_present[i] = true; in vivid_detect_feature_set()
950 dev->has_audio_outputs = out_type_counter[SVID]; in vivid_detect_feature_set()
958 dev->num_outputs--; in vivid_detect_feature_set()
960 dev->num_hdmi_outputs = out_type_counter[HDMI]; in vivid_detect_feature_set()
963 dev->has_vid_cap = node_type & 0x0001; in vivid_detect_feature_set()
967 dev->has_raw_vbi_cap = node_type & 0x0004; in vivid_detect_feature_set()
968 dev->has_sliced_vbi_cap = node_type & 0x0008; in vivid_detect_feature_set()
969 dev->has_vbi_cap = dev->has_raw_vbi_cap | dev->has_sliced_vbi_cap; in vivid_detect_feature_set()
973 dev->has_meta_cap = node_type & 0x20000; in vivid_detect_feature_set()
977 !dev->has_vid_cap && !dev->has_meta_cap) { in vivid_detect_feature_set()
978 v4l2_warn(&dev->v4l2_dev, in vivid_detect_feature_set()
983 !dev->has_vid_cap && !dev->has_vbi_cap && !dev->has_meta_cap) { in vivid_detect_feature_set()
984 v4l2_warn(&dev->v4l2_dev, in vivid_detect_feature_set()
990 dev->has_vid_out = node_type & 0x0100; in vivid_detect_feature_set()
994 dev->has_raw_vbi_out = node_type & 0x0400; in vivid_detect_feature_set()
995 dev->has_sliced_vbi_out = node_type & 0x0800; in vivid_detect_feature_set()
996 dev->has_vbi_out = dev->has_raw_vbi_out | dev->has_sliced_vbi_out; in vivid_detect_feature_set()
1000 dev->has_meta_out = node_type & 0x40000; in vivid_detect_feature_set()
1004 !dev->has_vid_out && !dev->has_vbi_out && !dev->has_meta_out) { in vivid_detect_feature_set()
1005 v4l2_warn(&dev->v4l2_dev, in vivid_detect_feature_set()
1009 if (out_type_counter[HDMI] && !dev->has_vid_out && !dev->has_meta_out) { in vivid_detect_feature_set()
1010 v4l2_warn(&dev->v4l2_dev, in vivid_detect_feature_set()
1016 dev->has_radio_rx = node_type & 0x0010; in vivid_detect_feature_set()
1019 dev->has_radio_tx = node_type & 0x1000; in vivid_detect_feature_set()
1022 dev->has_sdr_cap = node_type & 0x0020; in vivid_detect_feature_set()
1025 dev->has_tv_tuner = in_type_counter[TV]; in vivid_detect_feature_set()
1028 *has_tuner = ((dev->has_vid_cap || dev->has_vbi_cap) && in_type_counter[TV]) || in vivid_detect_feature_set()
1029 dev->has_radio_rx || dev->has_sdr_cap; in vivid_detect_feature_set()
1032 *has_modulator = dev->has_radio_tx; in vivid_detect_feature_set()
1034 if (dev->has_vid_cap) in vivid_detect_feature_set()
1036 dev->has_fb = node_type & 0x10000; in vivid_detect_feature_set()
1044 dev->has_crop_cap = *ccs_cap & 1; in vivid_detect_feature_set()
1045 dev->has_compose_cap = *ccs_cap & 2; in vivid_detect_feature_set()
1046 dev->has_scaler_cap = *ccs_cap & 4; in vivid_detect_feature_set()
1047 v4l2_info(&dev->v4l2_dev, "Capture Crop: %c Compose: %c Scaler: %c\n", in vivid_detect_feature_set()
1048 dev->has_crop_cap ? 'Y' : 'N', in vivid_detect_feature_set()
1049 dev->has_compose_cap ? 'Y' : 'N', in vivid_detect_feature_set()
1050 dev->has_scaler_cap ? 'Y' : 'N'); in vivid_detect_feature_set()
1059 dev->has_crop_out = *ccs_out & 1; in vivid_detect_feature_set()
1060 dev->has_compose_out = *ccs_out & 2; in vivid_detect_feature_set()
1061 dev->has_scaler_out = *ccs_out & 4; in vivid_detect_feature_set()
1062 v4l2_info(&dev->v4l2_dev, "Output Crop: %c Compose: %c Scaler: %c\n", in vivid_detect_feature_set()
1063 dev->has_crop_out ? 'Y' : 'N', in vivid_detect_feature_set()
1064 dev->has_compose_out ? 'Y' : 'N', in vivid_detect_feature_set()
1065 dev->has_scaler_out ? 'Y' : 'N'); in vivid_detect_feature_set()
1069 dev->has_touch_cap = node_type & 0x80000; in vivid_detect_feature_set()
1074 static void vivid_set_capabilities(struct vivid_dev *dev) in vivid_set_capabilities() argument
1076 if (dev->has_vid_cap) { in vivid_set_capabilities()
1078 dev->vid_cap_caps = dev->multiplanar ? in vivid_set_capabilities()
1081 dev->vid_cap_caps |= V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; in vivid_set_capabilities()
1082 if (dev->has_audio_inputs) in vivid_set_capabilities()
1083 dev->vid_cap_caps |= V4L2_CAP_AUDIO; in vivid_set_capabilities()
1084 if (dev->has_tv_tuner) in vivid_set_capabilities()
1085 dev->vid_cap_caps |= V4L2_CAP_TUNER; in vivid_set_capabilities()
1087 if (dev->has_vid_out) { in vivid_set_capabilities()
1089 dev->vid_out_caps = dev->multiplanar ? in vivid_set_capabilities()
1092 if (dev->has_fb) in vivid_set_capabilities()
1093 dev->vid_out_caps |= V4L2_CAP_VIDEO_OUTPUT_OVERLAY; in vivid_set_capabilities()
1094 dev->vid_out_caps |= V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; in vivid_set_capabilities()
1095 if (dev->has_audio_outputs) in vivid_set_capabilities()
1096 dev->vid_out_caps |= V4L2_CAP_AUDIO; in vivid_set_capabilities()
1098 if (dev->has_vbi_cap) { in vivid_set_capabilities()
1100 dev->vbi_cap_caps = (dev->has_raw_vbi_cap ? V4L2_CAP_VBI_CAPTURE : 0) | in vivid_set_capabilities()
1101 (dev->has_sliced_vbi_cap ? V4L2_CAP_SLICED_VBI_CAPTURE : 0); in vivid_set_capabilities()
1102 dev->vbi_cap_caps |= V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; in vivid_set_capabilities()
1103 if (dev->has_audio_inputs) in vivid_set_capabilities()
1104 dev->vbi_cap_caps |= V4L2_CAP_AUDIO; in vivid_set_capabilities()
1105 if (dev->has_tv_tuner) in vivid_set_capabilities()
1106 dev->vbi_cap_caps |= V4L2_CAP_TUNER; in vivid_set_capabilities()
1108 if (dev->has_vbi_out) { in vivid_set_capabilities()
1110 dev->vbi_out_caps = (dev->has_raw_vbi_out ? V4L2_CAP_VBI_OUTPUT : 0) | in vivid_set_capabilities()
1111 (dev->has_sliced_vbi_out ? V4L2_CAP_SLICED_VBI_OUTPUT : 0); in vivid_set_capabilities()
1112 dev->vbi_out_caps |= V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; in vivid_set_capabilities()
1113 if (dev->has_audio_outputs) in vivid_set_capabilities()
1114 dev->vbi_out_caps |= V4L2_CAP_AUDIO; in vivid_set_capabilities()
1116 if (dev->has_sdr_cap) { in vivid_set_capabilities()
1118 dev->sdr_cap_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_TUNER; in vivid_set_capabilities()
1119 dev->sdr_cap_caps |= V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; in vivid_set_capabilities()
1122 if (dev->has_radio_rx) in vivid_set_capabilities()
1123 dev->radio_rx_caps = V4L2_CAP_RADIO | V4L2_CAP_RDS_CAPTURE | in vivid_set_capabilities()
1127 if (dev->has_radio_tx) in vivid_set_capabilities()
1128 dev->radio_tx_caps = V4L2_CAP_RDS_OUTPUT | V4L2_CAP_MODULATOR | in vivid_set_capabilities()
1132 if (dev->has_meta_cap) { in vivid_set_capabilities()
1133 dev->meta_cap_caps = V4L2_CAP_META_CAPTURE | in vivid_set_capabilities()
1135 if (dev->has_audio_inputs) in vivid_set_capabilities()
1136 dev->meta_cap_caps |= V4L2_CAP_AUDIO; in vivid_set_capabilities()
1137 if (dev->has_tv_tuner) in vivid_set_capabilities()
1138 dev->meta_cap_caps |= V4L2_CAP_TUNER; in vivid_set_capabilities()
1141 if (dev->has_meta_out) { in vivid_set_capabilities()
1142 dev->meta_out_caps = V4L2_CAP_META_OUTPUT | in vivid_set_capabilities()
1144 if (dev->has_audio_outputs) in vivid_set_capabilities()
1145 dev->meta_out_caps |= V4L2_CAP_AUDIO; in vivid_set_capabilities()
1148 if (dev->has_touch_cap) { in vivid_set_capabilities()
1149 dev->touch_cap_caps = V4L2_CAP_TOUCH | V4L2_CAP_STREAMING | in vivid_set_capabilities()
1151 dev->touch_cap_caps |= dev->multiplanar ? in vivid_set_capabilities()
1156 static void vivid_disable_unused_ioctls(struct vivid_dev *dev, in vivid_disable_unused_ioctls() argument
1163 if (!dev->has_audio_inputs) { in vivid_disable_unused_ioctls()
1164 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_AUDIO); in vivid_disable_unused_ioctls()
1165 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_G_AUDIO); in vivid_disable_unused_ioctls()
1166 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_ENUMAUDIO); in vivid_disable_unused_ioctls()
1167 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_S_AUDIO); in vivid_disable_unused_ioctls()
1168 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_G_AUDIO); in vivid_disable_unused_ioctls()
1169 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_ENUMAUDIO); in vivid_disable_unused_ioctls()
1170 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_S_AUDIO); in vivid_disable_unused_ioctls()
1171 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_G_AUDIO); in vivid_disable_unused_ioctls()
1172 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_ENUMAUDIO); in vivid_disable_unused_ioctls()
1174 if (!dev->has_audio_outputs) { in vivid_disable_unused_ioctls()
1175 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_S_AUDOUT); in vivid_disable_unused_ioctls()
1176 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_G_AUDOUT); in vivid_disable_unused_ioctls()
1177 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_ENUMAUDOUT); in vivid_disable_unused_ioctls()
1178 v4l2_disable_ioctl(&dev->vbi_out_dev, VIDIOC_S_AUDOUT); in vivid_disable_unused_ioctls()
1179 v4l2_disable_ioctl(&dev->vbi_out_dev, VIDIOC_G_AUDOUT); in vivid_disable_unused_ioctls()
1180 v4l2_disable_ioctl(&dev->vbi_out_dev, VIDIOC_ENUMAUDOUT); in vivid_disable_unused_ioctls()
1181 v4l2_disable_ioctl(&dev->meta_out_dev, VIDIOC_S_AUDOUT); in vivid_disable_unused_ioctls()
1182 v4l2_disable_ioctl(&dev->meta_out_dev, VIDIOC_G_AUDOUT); in vivid_disable_unused_ioctls()
1183 v4l2_disable_ioctl(&dev->meta_out_dev, VIDIOC_ENUMAUDOUT); in vivid_disable_unused_ioctls()
1186 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_STD); in vivid_disable_unused_ioctls()
1187 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_G_STD); in vivid_disable_unused_ioctls()
1188 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_ENUMSTD); in vivid_disable_unused_ioctls()
1189 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_QUERYSTD); in vivid_disable_unused_ioctls()
1192 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_S_STD); in vivid_disable_unused_ioctls()
1193 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_G_STD); in vivid_disable_unused_ioctls()
1194 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_ENUMSTD); in vivid_disable_unused_ioctls()
1197 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_FREQUENCY); in vivid_disable_unused_ioctls()
1198 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_G_FREQUENCY); in vivid_disable_unused_ioctls()
1199 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_S_FREQUENCY); in vivid_disable_unused_ioctls()
1200 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_G_FREQUENCY); in vivid_disable_unused_ioctls()
1201 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_S_FREQUENCY); in vivid_disable_unused_ioctls()
1202 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_G_FREQUENCY); in vivid_disable_unused_ioctls()
1205 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_TUNER); in vivid_disable_unused_ioctls()
1206 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_G_TUNER); in vivid_disable_unused_ioctls()
1207 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_S_TUNER); in vivid_disable_unused_ioctls()
1208 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_G_TUNER); in vivid_disable_unused_ioctls()
1209 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_S_TUNER); in vivid_disable_unused_ioctls()
1210 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_G_TUNER); in vivid_disable_unused_ioctls()
1213 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_EDID); in vivid_disable_unused_ioctls()
1214 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_G_EDID); in vivid_disable_unused_ioctls()
1215 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_DV_TIMINGS_CAP); in vivid_disable_unused_ioctls()
1216 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_G_DV_TIMINGS); in vivid_disable_unused_ioctls()
1217 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_DV_TIMINGS); in vivid_disable_unused_ioctls()
1218 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_ENUM_DV_TIMINGS); in vivid_disable_unused_ioctls()
1219 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_QUERY_DV_TIMINGS); in vivid_disable_unused_ioctls()
1222 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_G_EDID); in vivid_disable_unused_ioctls()
1223 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_DV_TIMINGS_CAP); in vivid_disable_unused_ioctls()
1224 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_G_DV_TIMINGS); in vivid_disable_unused_ioctls()
1225 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_S_DV_TIMINGS); in vivid_disable_unused_ioctls()
1226 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_ENUM_DV_TIMINGS); in vivid_disable_unused_ioctls()
1228 if (!dev->has_fb) { in vivid_disable_unused_ioctls()
1229 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_G_FBUF); in vivid_disable_unused_ioctls()
1230 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_S_FBUF); in vivid_disable_unused_ioctls()
1231 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_OVERLAY); in vivid_disable_unused_ioctls()
1233 v4l2_disable_ioctl(&dev->vid_cap_dev, VIDIOC_S_HW_FREQ_SEEK); in vivid_disable_unused_ioctls()
1234 v4l2_disable_ioctl(&dev->vbi_cap_dev, VIDIOC_S_HW_FREQ_SEEK); in vivid_disable_unused_ioctls()
1235 v4l2_disable_ioctl(&dev->sdr_cap_dev, VIDIOC_S_HW_FREQ_SEEK); in vivid_disable_unused_ioctls()
1236 v4l2_disable_ioctl(&dev->meta_cap_dev, VIDIOC_S_HW_FREQ_SEEK); in vivid_disable_unused_ioctls()
1237 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_S_FREQUENCY); in vivid_disable_unused_ioctls()
1238 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_G_FREQUENCY); in vivid_disable_unused_ioctls()
1239 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_ENUM_FRAMESIZES); in vivid_disable_unused_ioctls()
1240 v4l2_disable_ioctl(&dev->vid_out_dev, VIDIOC_ENUM_FRAMEINTERVALS); in vivid_disable_unused_ioctls()
1241 v4l2_disable_ioctl(&dev->vbi_out_dev, VIDIOC_S_FREQUENCY); in vivid_disable_unused_ioctls()
1242 v4l2_disable_ioctl(&dev->vbi_out_dev, VIDIOC_G_FREQUENCY); in vivid_disable_unused_ioctls()
1243 v4l2_disable_ioctl(&dev->meta_out_dev, VIDIOC_S_FREQUENCY); in vivid_disable_unused_ioctls()
1244 v4l2_disable_ioctl(&dev->meta_out_dev, VIDIOC_G_FREQUENCY); in vivid_disable_unused_ioctls()
1245 v4l2_disable_ioctl(&dev->touch_cap_dev, VIDIOC_S_PARM); in vivid_disable_unused_ioctls()
1246 v4l2_disable_ioctl(&dev->touch_cap_dev, VIDIOC_ENUM_FRAMESIZES); in vivid_disable_unused_ioctls()
1247 v4l2_disable_ioctl(&dev->touch_cap_dev, VIDIOC_ENUM_FRAMEINTERVALS); in vivid_disable_unused_ioctls()
1250 static int vivid_init_dv_timings(struct vivid_dev *dev) in vivid_init_dv_timings() argument
1254 while (v4l2_dv_timings_presets[dev->query_dv_timings_size].bt.width) in vivid_init_dv_timings()
1255 dev->query_dv_timings_size++; in vivid_init_dv_timings()
1261 dev->query_dv_timings_qmenu = kmalloc_array(dev->query_dv_timings_size, in vivid_init_dv_timings()
1267 dev->query_dv_timings_qmenu_strings = in vivid_init_dv_timings()
1268 kmalloc_array(dev->query_dv_timings_size, 32, GFP_KERNEL); in vivid_init_dv_timings()
1270 if (!dev->query_dv_timings_qmenu || in vivid_init_dv_timings()
1271 !dev->query_dv_timings_qmenu_strings) in vivid_init_dv_timings()
1274 for (i = 0; i < dev->query_dv_timings_size; i++) { in vivid_init_dv_timings()
1276 char *p = dev->query_dv_timings_qmenu_strings + i * 32; in vivid_init_dv_timings()
1279 dev->query_dv_timings_qmenu[i] = p; in vivid_init_dv_timings()
1291 static int vivid_create_queues(struct vivid_dev *dev) in vivid_create_queues() argument
1296 if (dev->has_vid_cap) { in vivid_create_queues()
1298 ret = vivid_create_queue(dev, &dev->vb_vid_cap_q, in vivid_create_queues()
1305 if (dev->has_vid_out) { in vivid_create_queues()
1307 ret = vivid_create_queue(dev, &dev->vb_vid_out_q, in vivid_create_queues()
1314 if (dev->has_vbi_cap) { in vivid_create_queues()
1316 ret = vivid_create_queue(dev, &dev->vb_vbi_cap_q, in vivid_create_queues()
1323 if (dev->has_vbi_out) { in vivid_create_queues()
1325 ret = vivid_create_queue(dev, &dev->vb_vbi_out_q, in vivid_create_queues()
1332 if (dev->has_sdr_cap) { in vivid_create_queues()
1334 ret = vivid_create_queue(dev, &dev->vb_sdr_cap_q, in vivid_create_queues()
1341 if (dev->has_meta_cap) { in vivid_create_queues()
1343 ret = vivid_create_queue(dev, &dev->vb_meta_cap_q, in vivid_create_queues()
1350 if (dev->has_meta_out) { in vivid_create_queues()
1352 ret = vivid_create_queue(dev, &dev->vb_meta_out_q, in vivid_create_queues()
1359 if (dev->has_touch_cap) { in vivid_create_queues()
1361 ret = vivid_create_queue(dev, &dev->vb_touch_cap_q, in vivid_create_queues()
1368 if (dev->has_fb) { in vivid_create_queues()
1370 ret = vivid_fb_init(dev); in vivid_create_queues()
1373 v4l2_info(&dev->v4l2_dev, "Framebuffer device registered as fb%d\n", in vivid_create_queues()
1374 dev->fb_info.node); in vivid_create_queues()
1380 struct vivid_dev *dev, int inst, in vivid_create_devnodes() argument
1390 if (dev->has_vid_cap) { in vivid_create_devnodes()
1391 vfd = &dev->vid_cap_dev; in vivid_create_devnodes()
1396 vfd->device_caps = dev->vid_cap_caps; in vivid_create_devnodes()
1398 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1399 vfd->queue = &dev->vb_vid_cap_q; in vivid_create_devnodes()
1406 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1407 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1410 dev->vid_cap_pad.flags = MEDIA_PAD_FL_SINK; in vivid_create_devnodes()
1411 ret = media_entity_pads_init(&vfd->entity, 1, &dev->vid_cap_pad); in vivid_create_devnodes()
1418 ret = cec_register_adapter(dev->cec_rx_adap, &pdev->dev); in vivid_create_devnodes()
1420 cec_delete_adapter(dev->cec_rx_adap); in vivid_create_devnodes()
1421 dev->cec_rx_adap = NULL; in vivid_create_devnodes()
1424 cec_s_phys_addr(dev->cec_rx_adap, 0, false); in vivid_create_devnodes()
1425 v4l2_info(&dev->v4l2_dev, "CEC adapter %s registered for HDMI input 0\n", in vivid_create_devnodes()
1426 dev_name(&dev->cec_rx_adap->devnode.dev)); in vivid_create_devnodes()
1433 v4l2_info(&dev->v4l2_dev, "V4L2 capture device registered as %s\n", in vivid_create_devnodes()
1437 if (dev->has_vid_out) { in vivid_create_devnodes()
1441 vfd = &dev->vid_out_dev; in vivid_create_devnodes()
1447 vfd->device_caps = dev->vid_out_caps; in vivid_create_devnodes()
1449 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1450 vfd->queue = &dev->vb_vid_out_q; in vivid_create_devnodes()
1457 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1458 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1461 dev->vid_out_pad.flags = MEDIA_PAD_FL_SOURCE; in vivid_create_devnodes()
1462 ret = media_entity_pads_init(&vfd->entity, 1, &dev->vid_out_pad); in vivid_create_devnodes()
1469 ret = cec_register_adapter(dev->cec_tx_adap[i], &pdev->dev); in vivid_create_devnodes()
1472 cec_delete_adapter(dev->cec_tx_adap[i]); in vivid_create_devnodes()
1473 dev->cec_tx_adap[i] = NULL; in vivid_create_devnodes()
1477 v4l2_info(&dev->v4l2_dev, "CEC adapter %s registered for HDMI output %d\n", in vivid_create_devnodes()
1478 dev_name(&dev->cec_tx_adap[i]->devnode.dev), i); in vivid_create_devnodes()
1480 cec_s_phys_addr(dev->cec_tx_adap[i], (i + 1) << 12, false); in vivid_create_devnodes()
1482 cec_s_phys_addr(dev->cec_tx_adap[i], 0x1000, false); in vivid_create_devnodes()
1489 v4l2_info(&dev->v4l2_dev, "V4L2 output device registered as %s\n", in vivid_create_devnodes()
1493 if (dev->has_vbi_cap) { in vivid_create_devnodes()
1494 vfd = &dev->vbi_cap_dev; in vivid_create_devnodes()
1499 vfd->device_caps = dev->vbi_cap_caps; in vivid_create_devnodes()
1501 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1502 vfd->queue = &dev->vb_vbi_cap_q; in vivid_create_devnodes()
1503 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1505 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1508 dev->vbi_cap_pad.flags = MEDIA_PAD_FL_SINK; in vivid_create_devnodes()
1509 ret = media_entity_pads_init(&vfd->entity, 1, &dev->vbi_cap_pad); in vivid_create_devnodes()
1517 v4l2_info(&dev->v4l2_dev, "V4L2 capture device registered as %s, supports %s VBI\n", in vivid_create_devnodes()
1519 (dev->has_raw_vbi_cap && dev->has_sliced_vbi_cap) ? in vivid_create_devnodes()
1521 (dev->has_raw_vbi_cap ? "raw" : "sliced")); in vivid_create_devnodes()
1524 if (dev->has_vbi_out) { in vivid_create_devnodes()
1525 vfd = &dev->vbi_out_dev; in vivid_create_devnodes()
1531 vfd->device_caps = dev->vbi_out_caps; in vivid_create_devnodes()
1533 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1534 vfd->queue = &dev->vb_vbi_out_q; in vivid_create_devnodes()
1535 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1537 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1540 dev->vbi_out_pad.flags = MEDIA_PAD_FL_SOURCE; in vivid_create_devnodes()
1541 ret = media_entity_pads_init(&vfd->entity, 1, &dev->vbi_out_pad); in vivid_create_devnodes()
1549 v4l2_info(&dev->v4l2_dev, "V4L2 output device registered as %s, supports %s VBI\n", in vivid_create_devnodes()
1551 (dev->has_raw_vbi_out && dev->has_sliced_vbi_out) ? in vivid_create_devnodes()
1553 (dev->has_raw_vbi_out ? "raw" : "sliced")); in vivid_create_devnodes()
1556 if (dev->has_sdr_cap) { in vivid_create_devnodes()
1557 vfd = &dev->sdr_cap_dev; in vivid_create_devnodes()
1562 vfd->device_caps = dev->sdr_cap_caps; in vivid_create_devnodes()
1564 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1565 vfd->queue = &dev->vb_sdr_cap_q; in vivid_create_devnodes()
1566 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1567 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1570 dev->sdr_cap_pad.flags = MEDIA_PAD_FL_SINK; in vivid_create_devnodes()
1571 ret = media_entity_pads_init(&vfd->entity, 1, &dev->sdr_cap_pad); in vivid_create_devnodes()
1579 v4l2_info(&dev->v4l2_dev, "V4L2 capture device registered as %s\n", in vivid_create_devnodes()
1583 if (dev->has_radio_rx) { in vivid_create_devnodes()
1584 vfd = &dev->radio_rx_dev; in vivid_create_devnodes()
1589 vfd->device_caps = dev->radio_rx_caps; in vivid_create_devnodes()
1591 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1592 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1593 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1598 v4l2_info(&dev->v4l2_dev, "V4L2 receiver device registered as %s\n", in vivid_create_devnodes()
1602 if (dev->has_radio_tx) { in vivid_create_devnodes()
1603 vfd = &dev->radio_tx_dev; in vivid_create_devnodes()
1609 vfd->device_caps = dev->radio_tx_caps; in vivid_create_devnodes()
1611 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1612 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1613 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1618 v4l2_info(&dev->v4l2_dev, "V4L2 transmitter device registered as %s\n", in vivid_create_devnodes()
1622 if (dev->has_meta_cap) { in vivid_create_devnodes()
1623 vfd = &dev->meta_cap_dev; in vivid_create_devnodes()
1628 vfd->device_caps = dev->meta_cap_caps; in vivid_create_devnodes()
1630 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1631 vfd->queue = &dev->vb_meta_cap_q; in vivid_create_devnodes()
1632 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1634 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1636 dev->meta_cap_pad.flags = MEDIA_PAD_FL_SINK; in vivid_create_devnodes()
1638 &dev->meta_cap_pad); in vivid_create_devnodes()
1646 v4l2_info(&dev->v4l2_dev, in vivid_create_devnodes()
1651 if (dev->has_meta_out) { in vivid_create_devnodes()
1652 vfd = &dev->meta_out_dev; in vivid_create_devnodes()
1658 vfd->device_caps = dev->meta_out_caps; in vivid_create_devnodes()
1660 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1661 vfd->queue = &dev->vb_meta_out_q; in vivid_create_devnodes()
1662 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1664 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1666 dev->meta_out_pad.flags = MEDIA_PAD_FL_SOURCE; in vivid_create_devnodes()
1668 &dev->meta_out_pad); in vivid_create_devnodes()
1676 v4l2_info(&dev->v4l2_dev, in vivid_create_devnodes()
1681 if (dev->has_touch_cap) { in vivid_create_devnodes()
1682 vfd = &dev->touch_cap_dev; in vivid_create_devnodes()
1687 vfd->device_caps = dev->touch_cap_caps; in vivid_create_devnodes()
1689 vfd->v4l2_dev = &dev->v4l2_dev; in vivid_create_devnodes()
1690 vfd->queue = &dev->vb_touch_cap_q; in vivid_create_devnodes()
1692 vfd->lock = &dev->mutex; in vivid_create_devnodes()
1693 video_set_drvdata(vfd, dev); in vivid_create_devnodes()
1695 dev->touch_cap_pad.flags = MEDIA_PAD_FL_SINK; in vivid_create_devnodes()
1697 &dev->touch_cap_pad); in vivid_create_devnodes()
1705 v4l2_info(&dev->v4l2_dev, in vivid_create_devnodes()
1712 ret = media_device_register(&dev->mdev); in vivid_create_devnodes()
1714 dev_err(dev->mdev.dev, in vivid_create_devnodes()
1732 struct vivid_dev *dev; in vivid_create_instance() local
1740 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in vivid_create_instance()
1741 if (!dev) in vivid_create_instance()
1744 dev->inst = inst; in vivid_create_instance()
1747 dev->v4l2_dev.mdev = &dev->mdev; in vivid_create_instance()
1750 strscpy(dev->mdev.model, VIVID_MODULE_NAME, sizeof(dev->mdev.model)); in vivid_create_instance()
1751 snprintf(dev->mdev.bus_info, sizeof(dev->mdev.bus_info), in vivid_create_instance()
1753 dev->mdev.dev = &pdev->dev; in vivid_create_instance()
1754 media_device_init(&dev->mdev); in vivid_create_instance()
1755 dev->mdev.ops = &vivid_media_ops; in vivid_create_instance()
1759 snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name), in vivid_create_instance()
1761 ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev); in vivid_create_instance()
1763 kfree(dev); in vivid_create_instance()
1766 dev->v4l2_dev.release = vivid_dev_release; in vivid_create_instance()
1768 ret = vivid_detect_feature_set(dev, inst, node_type, in vivid_create_instance()
1775 vivid_set_capabilities(dev); in vivid_create_instance()
1779 tpg_init(&dev->tpg, 640, 360); in vivid_create_instance()
1780 if (tpg_alloc(&dev->tpg, array_size(MAX_WIDTH, MAX_ZOOM))) in vivid_create_instance()
1782 dev->scaled_line = vzalloc(array_size(MAX_WIDTH, MAX_ZOOM)); in vivid_create_instance()
1783 if (!dev->scaled_line) in vivid_create_instance()
1785 dev->blended_line = vzalloc(array_size(MAX_WIDTH, MAX_ZOOM)); in vivid_create_instance()
1786 if (!dev->blended_line) in vivid_create_instance()
1790 dev->edid = vmalloc(array_size(256, 128)); in vivid_create_instance()
1791 if (!dev->edid) in vivid_create_instance()
1794 ret = vivid_init_dv_timings(dev); in vivid_create_instance()
1798 vivid_disable_unused_ioctls(dev, has_tuner, has_modulator, in vivid_create_instance()
1802 dev->fmt_cap = &vivid_formats[0]; in vivid_create_instance()
1803 dev->fmt_out = &vivid_formats[0]; in vivid_create_instance()
1804 if (!dev->multiplanar) in vivid_create_instance()
1806 dev->webcam_size_idx = 1; in vivid_create_instance()
1807 dev->webcam_ival_idx = 3; in vivid_create_instance()
1808 tpg_s_fourcc(&dev->tpg, dev->fmt_cap->fourcc); in vivid_create_instance()
1809 dev->std_out = V4L2_STD_PAL; in vivid_create_instance()
1810 if (dev->input_type[0] == TV || dev->input_type[0] == SVID) in vivid_create_instance()
1812 if (dev->output_type[0] == SVID) in vivid_create_instance()
1815 dev->dv_timings_cap[i] = def_dv_timings; in vivid_create_instance()
1816 dev->std_cap[i] = V4L2_STD_PAL; in vivid_create_instance()
1818 dev->dv_timings_out = def_dv_timings; in vivid_create_instance()
1819 dev->tv_freq = 2804 /* 175.25 * 16 */; in vivid_create_instance()
1820 dev->tv_audmode = V4L2_TUNER_MODE_STEREO; in vivid_create_instance()
1821 dev->tv_field_cap = V4L2_FIELD_INTERLACED; in vivid_create_instance()
1822 dev->tv_field_out = V4L2_FIELD_INTERLACED; in vivid_create_instance()
1823 dev->radio_rx_freq = 95000 * 16; in vivid_create_instance()
1824 dev->radio_rx_audmode = V4L2_TUNER_MODE_STEREO; in vivid_create_instance()
1825 if (dev->has_radio_tx) { in vivid_create_instance()
1826 dev->radio_tx_freq = 95500 * 16; in vivid_create_instance()
1827 dev->radio_rds_loop = false; in vivid_create_instance()
1829 dev->radio_tx_subchans = V4L2_TUNER_SUB_STEREO | V4L2_TUNER_SUB_RDS; in vivid_create_instance()
1830 dev->sdr_adc_freq = 300000; in vivid_create_instance()
1831 dev->sdr_fm_freq = 50000000; in vivid_create_instance()
1832 dev->sdr_pixelformat = V4L2_SDR_FMT_CU8; in vivid_create_instance()
1833 dev->sdr_buffersize = SDR_CAP_SAMPLES_PER_BUF * 2; in vivid_create_instance()
1835 dev->edid_max_blocks = dev->edid_blocks = 2; in vivid_create_instance()
1836 memcpy(dev->edid, vivid_hdmi_edid, sizeof(vivid_hdmi_edid)); in vivid_create_instance()
1837 dev->radio_rds_init_time = ktime_get(); in vivid_create_instance()
1840 ret = vivid_create_controls(dev, ccs_cap == -1, ccs_out == -1, no_error_inj, in vivid_create_instance()
1848 if (dev->num_outputs && dev->output_type[0] != HDMI) in vivid_create_instance()
1849 v4l2_ctrl_activate(dev->ctrl_display_present, false); in vivid_create_instance()
1850 if (dev->num_inputs && dev->input_type[0] != HDMI) { in vivid_create_instance()
1851 v4l2_ctrl_activate(dev->ctrl_dv_timings_signal_mode, false); in vivid_create_instance()
1852 v4l2_ctrl_activate(dev->ctrl_dv_timings, false); in vivid_create_instance()
1853 } else if (dev->num_inputs && dev->input_type[0] == HDMI) { in vivid_create_instance()
1854 v4l2_ctrl_activate(dev->ctrl_std_signal_mode, false); in vivid_create_instance()
1855 v4l2_ctrl_activate(dev->ctrl_standard, false); in vivid_create_instance()
1862 vivid_update_format_cap(dev, false); in vivid_create_instance()
1863 vivid_update_format_out(dev); in vivid_create_instance()
1866 dev->timeperframe_tch_cap.numerator = 1; in vivid_create_instance()
1867 dev->timeperframe_tch_cap.denominator = 10; in vivid_create_instance()
1868 vivid_set_touch(dev, 0); in vivid_create_instance()
1871 spin_lock_init(&dev->slock); in vivid_create_instance()
1872 mutex_init(&dev->mutex); in vivid_create_instance()
1875 INIT_LIST_HEAD(&dev->vid_cap_active); in vivid_create_instance()
1876 INIT_LIST_HEAD(&dev->vid_out_active); in vivid_create_instance()
1877 INIT_LIST_HEAD(&dev->vbi_cap_active); in vivid_create_instance()
1878 INIT_LIST_HEAD(&dev->vbi_out_active); in vivid_create_instance()
1879 INIT_LIST_HEAD(&dev->sdr_cap_active); in vivid_create_instance()
1880 INIT_LIST_HEAD(&dev->meta_cap_active); in vivid_create_instance()
1881 INIT_LIST_HEAD(&dev->meta_out_active); in vivid_create_instance()
1882 INIT_LIST_HEAD(&dev->touch_cap_active); in vivid_create_instance()
1884 spin_lock_init(&dev->cec_xfers_slock); in vivid_create_instance()
1887 dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); in vivid_create_instance()
1889 ret = vivid_create_queues(dev); in vivid_create_instance()
1894 if (dev->has_vid_cap && in_type_counter[HDMI]) { in vivid_create_instance()
1897 adap = vivid_cec_alloc_adap(dev, 0, false); in vivid_create_instance()
1901 dev->cec_rx_adap = adap; in vivid_create_instance()
1904 if (dev->has_vid_out) { in vivid_create_instance()
1905 for (i = 0; i < dev->num_outputs; i++) { in vivid_create_instance()
1908 if (dev->output_type[i] != HDMI) in vivid_create_instance()
1911 dev->cec_output2bus_map[i] = cec_tx_bus_cnt; in vivid_create_instance()
1912 adap = vivid_cec_alloc_adap(dev, cec_tx_bus_cnt, true); in vivid_create_instance()
1915 for (i = 0; i < dev->num_outputs; i++) in vivid_create_instance()
1916 cec_delete_adapter(dev->cec_tx_adap[i]); in vivid_create_instance()
1920 dev->cec_tx_adap[cec_tx_bus_cnt] = adap; in vivid_create_instance()
1925 if (dev->cec_rx_adap || cec_tx_bus_cnt) { in vivid_create_instance()
1926 init_waitqueue_head(&dev->kthread_waitq_cec); in vivid_create_instance()
1927 dev->kthread_cec = kthread_run(vivid_cec_bus_thread, dev, in vivid_create_instance()
1928 "vivid_cec-%s", dev->v4l2_dev.name); in vivid_create_instance()
1929 if (IS_ERR(dev->kthread_cec)) { in vivid_create_instance()
1930 ret = PTR_ERR(dev->kthread_cec); in vivid_create_instance()
1931 dev->kthread_cec = NULL; in vivid_create_instance()
1932 v4l2_err(&dev->v4l2_dev, "kernel_thread() failed\n"); in vivid_create_instance()
1939 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_vid_cap); in vivid_create_instance()
1940 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_vid_out); in vivid_create_instance()
1941 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_vbi_cap); in vivid_create_instance()
1942 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_vbi_out); in vivid_create_instance()
1943 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_radio_rx); in vivid_create_instance()
1944 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_radio_tx); in vivid_create_instance()
1945 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_sdr_cap); in vivid_create_instance()
1946 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_meta_cap); in vivid_create_instance()
1947 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_meta_out); in vivid_create_instance()
1948 v4l2_ctrl_handler_setup(&dev->ctrl_hdl_touch_cap); in vivid_create_instance()
1951 ret = vivid_create_devnodes(pdev, dev, inst, cec_tx_bus_cnt, in vivid_create_instance()
1958 vivid_devs[inst] = dev; in vivid_create_instance()
1963 vb2_video_unregister_device(&dev->touch_cap_dev); in vivid_create_instance()
1964 vb2_video_unregister_device(&dev->meta_out_dev); in vivid_create_instance()
1965 vb2_video_unregister_device(&dev->meta_cap_dev); in vivid_create_instance()
1966 video_unregister_device(&dev->radio_tx_dev); in vivid_create_instance()
1967 video_unregister_device(&dev->radio_rx_dev); in vivid_create_instance()
1968 vb2_video_unregister_device(&dev->sdr_cap_dev); in vivid_create_instance()
1969 vb2_video_unregister_device(&dev->vbi_out_dev); in vivid_create_instance()
1970 vb2_video_unregister_device(&dev->vbi_cap_dev); in vivid_create_instance()
1971 vb2_video_unregister_device(&dev->vid_out_dev); in vivid_create_instance()
1972 vb2_video_unregister_device(&dev->vid_cap_dev); in vivid_create_instance()
1973 cec_unregister_adapter(dev->cec_rx_adap); in vivid_create_instance()
1975 cec_unregister_adapter(dev->cec_tx_adap[i]); in vivid_create_instance()
1976 if (dev->kthread_cec) in vivid_create_instance()
1977 kthread_stop(dev->kthread_cec); in vivid_create_instance()
1979 v4l2_device_put(&dev->v4l2_dev); in vivid_create_instance()
2026 struct vivid_dev *dev; in vivid_remove() local
2030 dev = vivid_devs[i]; in vivid_remove()
2031 if (!dev) in vivid_remove()
2034 if (dev->disconnect_error) in vivid_remove()
2035 vivid_reconnect(dev); in vivid_remove()
2037 media_device_unregister(&dev->mdev); in vivid_remove()
2040 if (dev->has_vid_cap) { in vivid_remove()
2041 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2042 video_device_node_name(&dev->vid_cap_dev)); in vivid_remove()
2043 vb2_video_unregister_device(&dev->vid_cap_dev); in vivid_remove()
2045 if (dev->has_vid_out) { in vivid_remove()
2046 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2047 video_device_node_name(&dev->vid_out_dev)); in vivid_remove()
2048 vb2_video_unregister_device(&dev->vid_out_dev); in vivid_remove()
2050 if (dev->has_vbi_cap) { in vivid_remove()
2051 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2052 video_device_node_name(&dev->vbi_cap_dev)); in vivid_remove()
2053 vb2_video_unregister_device(&dev->vbi_cap_dev); in vivid_remove()
2055 if (dev->has_vbi_out) { in vivid_remove()
2056 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2057 video_device_node_name(&dev->vbi_out_dev)); in vivid_remove()
2058 vb2_video_unregister_device(&dev->vbi_out_dev); in vivid_remove()
2060 if (dev->has_sdr_cap) { in vivid_remove()
2061 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2062 video_device_node_name(&dev->sdr_cap_dev)); in vivid_remove()
2063 vb2_video_unregister_device(&dev->sdr_cap_dev); in vivid_remove()
2065 if (dev->has_radio_rx) { in vivid_remove()
2066 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2067 video_device_node_name(&dev->radio_rx_dev)); in vivid_remove()
2068 video_unregister_device(&dev->radio_rx_dev); in vivid_remove()
2070 if (dev->has_radio_tx) { in vivid_remove()
2071 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2072 video_device_node_name(&dev->radio_tx_dev)); in vivid_remove()
2073 video_unregister_device(&dev->radio_tx_dev); in vivid_remove()
2075 if (dev->has_fb) { in vivid_remove()
2076 v4l2_info(&dev->v4l2_dev, "unregistering fb%d\n", in vivid_remove()
2077 dev->fb_info.node); in vivid_remove()
2078 unregister_framebuffer(&dev->fb_info); in vivid_remove()
2079 vivid_fb_release_buffers(dev); in vivid_remove()
2081 if (dev->has_meta_cap) { in vivid_remove()
2082 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2083 video_device_node_name(&dev->meta_cap_dev)); in vivid_remove()
2084 vb2_video_unregister_device(&dev->meta_cap_dev); in vivid_remove()
2086 if (dev->has_meta_out) { in vivid_remove()
2087 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2088 video_device_node_name(&dev->meta_out_dev)); in vivid_remove()
2089 vb2_video_unregister_device(&dev->meta_out_dev); in vivid_remove()
2091 if (dev->has_touch_cap) { in vivid_remove()
2092 v4l2_info(&dev->v4l2_dev, "unregistering %s\n", in vivid_remove()
2093 video_device_node_name(&dev->touch_cap_dev)); in vivid_remove()
2094 vb2_video_unregister_device(&dev->touch_cap_dev); in vivid_remove()
2096 cec_unregister_adapter(dev->cec_rx_adap); in vivid_remove()
2098 cec_unregister_adapter(dev->cec_tx_adap[j]); in vivid_remove()
2099 if (dev->kthread_cec) in vivid_remove()
2100 kthread_stop(dev->kthread_cec); in vivid_remove()
2101 v4l2_device_put(&dev->v4l2_dev); in vivid_remove()
2106 static void vivid_pdev_release(struct device *dev) in vivid_pdev_release() argument
2112 .dev.release = vivid_pdev_release,