Lines Matching refs:dev

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