Lines Matching refs:dev

13 static noinline_for_stack void vivid_thread_tch_cap_tick(struct vivid_dev *dev,
18 spin_lock(&dev->slock);
19 if (!list_empty(&dev->touch_cap_active)) {
20 tch_cap_buf = list_entry(dev->touch_cap_active.next,
25 spin_unlock(&dev->slock);
29 &dev->ctrl_hdl_touch_cap);
31 vivid_fillbuff_tch(dev, tch_cap_buf);
33 &dev->ctrl_hdl_touch_cap);
34 vb2_buffer_done(&tch_cap_buf->vb.vb2_buf, dev->dqbuf_error ?
36 dprintk(dev, 2, "touch_cap buffer %d done\n",
39 tch_cap_buf->vb.vb2_buf.timestamp = ktime_get_ns() + dev->time_wrap_offset;
41 dev->dqbuf_error = false;
46 struct vivid_dev *dev = data;
57 dprintk(dev, 1, "Touch Capture Thread Start\n");
62 dev->touch_cap_seq_offset = 0;
63 dev->touch_cap_seq_count = 0;
64 dev->touch_cap_seq_resync = false;
65 dev->jiffies_touch_cap = jiffies;
66 if (dev->time_wrap)
67 dev->time_wrap_offset = dev->time_wrap - ktime_get_ns();
69 dev->time_wrap_offset = 0;
76 if (!mutex_trylock(&dev->mutex)) {
81 if (dev->touch_cap_seq_resync) {
82 dev->jiffies_touch_cap = cur_jiffies;
83 dev->touch_cap_seq_offset = dev->touch_cap_seq_count + 1;
84 dev->touch_cap_seq_count = 0;
85 dev->cap_seq_resync = false;
87 denominator = dev->timeperframe_tch_cap.denominator;
88 numerator = dev->timeperframe_tch_cap.numerator;
91 jiffies_since_start = cur_jiffies - dev->jiffies_touch_cap;
104 dev->jiffies_touch_cap = cur_jiffies;
105 dev->cap_seq_offset = buffers_since_start;
108 dropped_bufs = buffers_since_start + dev->touch_cap_seq_offset - dev->touch_cap_seq_count;
109 dev->touch_cap_seq_count = buffers_since_start + dev->touch_cap_seq_offset;
110 dev->touch_cap_with_seq_wrap_count =
111 dev->touch_cap_seq_count - dev->touch_cap_seq_start;
113 vivid_thread_tch_cap_tick(dev, dropped_bufs);
122 jiffies_since_start = jiffies - dev->jiffies_touch_cap;
124 mutex_unlock(&dev->mutex);
142 dprintk(dev, 1, "Touch Capture Thread End\n");
146 int vivid_start_generating_touch_cap(struct vivid_dev *dev)
148 if (dev->kthread_touch_cap) {
149 dev->touch_cap_streaming = true;
153 dev->touch_cap_seq_start = dev->seq_wrap * 128;
154 dev->kthread_touch_cap = kthread_run(vivid_thread_touch_cap, dev,
155 "%s-tch-cap", dev->v4l2_dev.name);
157 if (IS_ERR(dev->kthread_touch_cap)) {
158 int err = PTR_ERR(dev->kthread_touch_cap);
160 dev->kthread_touch_cap = NULL;
161 v4l2_err(&dev->v4l2_dev, "kernel_thread() failed\n");
164 dev->touch_cap_streaming = true;
165 dprintk(dev, 1, "returning from %s\n", __func__);
169 void vivid_stop_generating_touch_cap(struct vivid_dev *dev)
171 if (!dev->kthread_touch_cap)
174 dev->touch_cap_streaming = false;
176 while (!list_empty(&dev->touch_cap_active)) {
179 buf = list_entry(dev->touch_cap_active.next,
183 &dev->ctrl_hdl_touch_cap);
185 dprintk(dev, 2, "touch_cap buffer %d done\n",
189 kthread_stop(dev->kthread_touch_cap);
190 dev->kthread_touch_cap = NULL;