• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/media/IR/

Lines Matching defs:sz

146 static void streamzap_stop_timer(struct streamzap_ir *sz)
150 spin_lock_irqsave(&sz->timer_lock, flags);
151 if (sz->timer_running) {
152 sz->timer_running = false;
153 spin_unlock_irqrestore(&sz->timer_lock, flags);
154 del_timer_sync(&sz->delay_timer);
156 spin_unlock_irqrestore(&sz->timer_lock, flags);
162 struct streamzap_ir *sz = (struct streamzap_ir *)arg;
164 dev_info(sz->dev, "%s: callback firing\n", __func__);
167 sz->flush = false;
172 struct streamzap_ir *sz = (struct streamzap_ir *)arg;
182 spin_lock_irqsave(&sz->timer_lock, flags);
184 if (kfifo_len(&sz->fifo) > 0) {
185 ret = kfifo_out(&sz->fifo, &rawir, sizeof(rawir));
187 dev_err(sz->dev, "Problem w/kfifo_out...\n");
188 ir_raw_event_store(sz->idev, &rawir);
192 len = kfifo_len(&sz->fifo);
196 ret = kfifo_out(&sz->fifo, &rawir, sizeof(rawir));
198 dev_err(sz->dev, "Problem w/kfifo_out...\n");
199 ir_raw_event_store(sz->idev, &rawir);
201 len = kfifo_len(&sz->fifo);
203 if (sz->timer_running)
204 mod_timer(&sz->delay_timer, jiffies + delay);
207 sz->timer_running = false;
211 ir_raw_event_handle(sz->idev);
213 spin_unlock_irqrestore(&sz->timer_lock, flags);
216 static void streamzap_flush_delay_buffer(struct streamzap_ir *sz)
222 while (kfifo_len(&sz->fifo) > 0) {
223 ret = kfifo_out(&sz->fifo, &rawir, sizeof(rawir));
225 dev_err(sz->dev, "Problem w/kfifo_out...\n");
226 ir_raw_event_store(sz->idev, &rawir);
231 ir_raw_event_handle(sz->idev);
234 static void sz_push(struct streamzap_ir *sz)
240 spin_lock_irqsave(&sz->timer_lock, flags);
241 if (kfifo_len(&sz->fifo) >= sizeof(int) * SZ_BUF_LEN) {
242 ret = kfifo_out(&sz->fifo, &rawir, sizeof(rawir));
244 dev_err(sz->dev, "Problem w/kfifo_out...\n");
245 ir_raw_event_store(sz->idev, &rawir);
248 kfifo_in(&sz->fifo, &sz->rawir, sizeof(rawir));
250 if (!sz->timer_running) {
251 sz->delay_timer.expires = jiffies + (HZ / 10);
252 add_timer(&sz->delay_timer);
253 sz->timer_running = true;
256 spin_unlock_irqrestore(&sz->timer_lock, flags);
259 static void sz_push_full_pulse(struct streamzap_ir *sz,
262 if (sz->idle) {
265 sz->signal_last = sz->signal_start;
266 do_gettimeofday(&sz->signal_start);
268 deltv = sz->signal_start.tv_sec - sz->signal_last.tv_sec;
269 sz->rawir.pulse = false;
272 sz->rawir.duration = IR_MAX_DURATION;
274 sz->rawir.duration = (int)(deltv * 1000000 +
275 sz->signal_start.tv_usec -
276 sz->signal_last.tv_usec);
277 sz->rawir.duration -= sz->sum;
278 sz->rawir.duration *= 1000;
279 sz->rawir.duration &= IR_MAX_DURATION;
281 dev_dbg(sz->dev, "ls %u\n", sz->rawir.duration);
282 sz_push(sz);
284 sz->idle = 0;
285 sz->sum = 0;
288 sz->rawir.pulse = true;
289 sz->rawir.duration = ((int) value) * STREAMZAP_RESOLUTION;
290 sz->rawir.duration += STREAMZAP_RESOLUTION / 2;
291 sz->sum += sz->rawir.duration;
292 sz->rawir.duration *= 1000;
293 sz->rawir.duration &= IR_MAX_DURATION;
294 dev_dbg(sz->dev, "p %u\n", sz->rawir.duration);
295 sz_push(sz);
298 static void sz_push_half_pulse(struct streamzap_ir *sz,
301 sz_push_full_pulse(sz, (value & STREAMZAP_PULSE_MASK) >> 4);
304 static void sz_push_full_space(struct streamzap_ir *sz,
307 sz->rawir.pulse = false;
308 sz->rawir.duration = ((int) value) * STREAMZAP_RESOLUTION;
309 sz->rawir.duration += STREAMZAP_RESOLUTION / 2;
310 sz->sum += sz->rawir.duration;
311 sz->rawir.duration *= 1000;
312 dev_dbg(sz->dev, "s %u\n", sz->rawir.duration);
313 sz_push(sz);
316 static void sz_push_half_space(struct streamzap_ir *sz,
319 sz_push_full_space(sz, value & STREAMZAP_SPACE_MASK);
330 struct streamzap_ir *sz;
337 sz = urb->context;
346 * sz might already be invalid at this point
348 dev_err(sz->dev, "urb terminated, status: %d\n", urb->status);
354 dev_dbg(sz->dev, "%s: received urb, len %d\n", __func__, len);
355 if (!sz->flush) {
357 dev_dbg(sz->dev, "%d: %x\n", i,
358 (unsigned char)sz->buf_in[i]);
359 switch (sz->decoder_state) {
361 if ((sz->buf_in[i] & STREAMZAP_PULSE_MASK) ==
363 sz->decoder_state = FullPulse;
365 } else if ((sz->buf_in[i] & STREAMZAP_SPACE_MASK)
367 sz_push_half_pulse(sz, sz->buf_in[i]);
368 sz->decoder_state = FullSpace;
371 sz_push_half_pulse(sz, sz->buf_in[i]);
372 sz_push_half_space(sz, sz->buf_in[i]);
376 sz_push_full_pulse(sz, sz->buf_in[i]);
377 sz->decoder_state = IgnorePulse;
380 if (sz->buf_in[i] == STREAMZAP_TIMEOUT) {
381 sz->idle = 1;
382 streamzap_stop_timer(sz);
383 streamzap_flush_delay_buffer(sz);
385 sz_push_full_space(sz, sz->buf_in[i]);
386 sz->decoder_state = PulseSpace;
389 if ((sz->buf_in[i]&STREAMZAP_SPACE_MASK) ==
391 sz->decoder_state = FullSpace;
394 sz_push_half_space(sz, sz->buf_in[i]);
395 sz->decoder_state = PulseSpace;
406 static struct input_dev *streamzap_init_input_dev(struct streamzap_ir *sz)
410 struct device *dev = sz->dev;
425 snprintf(sz->name, sizeof(sz->name), "Streamzap PC Remote Infrared "
427 le16_to_cpu(sz->usbdev->descriptor.idVendor),
428 le16_to_cpu(sz->usbdev->descriptor.idProduct));
430 idev->name = sz->name;
431 usb_make_path(sz->usbdev, sz->phys, sizeof(sz->phys));
432 strlcat(sz->phys, "/input0", sizeof(sz->phys));
433 idev->phys = sz->phys;
435 props->priv = sz;
439 sz->props = props;
457 static int streamzap_delay_buf_init(struct streamzap_ir *sz)
461 ret = kfifo_alloc(&sz->fifo, sizeof(int) * SZ_BUF_LEN,
464 sz->fifo_initialized = 1;
469 static void streamzap_start_flush_timer(struct streamzap_ir *sz)
471 sz->flush_timer.expires = jiffies + HZ;
472 sz->flush = true;
473 add_timer(&sz->flush_timer);
475 sz->urb_in->dev = sz->usbdev;
476 if (usb_submit_urb(sz->urb_in, GFP_ATOMIC))
477 dev_err(sz->dev, "urb submit failed\n");
492 struct streamzap_ir *sz = NULL;
498 sz = kzalloc(sizeof(struct streamzap_ir), GFP_KERNEL);
499 if (!sz)
502 sz->usbdev = usbdev;
503 sz->interface = intf;
515 sz->endpoint = &(iface_host->endpoint[0].desc);
516 if ((sz->endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK)
519 "02%02x\n", __func__, sz->endpoint->bEndpointAddress);
524 if ((sz->endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
527 "02%02x\n", __func__, sz->endpoint->bmAttributes);
532 pipe = usb_rcvintpipe(usbdev, sz->endpoint->bEndpointAddress);
543 sz->buf_in = usb_alloc_coherent(usbdev, maxp, GFP_ATOMIC, &sz->dma_in);
544 if (!sz->buf_in)
547 sz->urb_in = usb_alloc_urb(0, GFP_KERNEL);
548 if (!sz->urb_in)
551 sz->dev = &intf->dev;
552 sz->buf_in_len = maxp;
565 retval = streamzap_delay_buf_init(sz);
571 sz->idev = streamzap_init_input_dev(sz);
572 if (!sz->idev)
575 sz->idle = true;
576 sz->decoder_state = PulseSpace;
578 init_timer(&sz->delay_timer);
579 sz->delay_timer.function = streamzap_delay_timeout;
580 sz->delay_timer.data = (unsigned long)sz;
581 spin_lock_init(&sz->timer_lock);
583 init_timer(&sz->flush_timer);
584 sz->flush_timer.function = streamzap_flush_timeout;
585 sz->flush_timer.data = (unsigned long)sz;
587 do_gettimeofday(&sz->signal_start);
590 usb_fill_int_urb(sz->urb_in, usbdev, pipe, sz->buf_in,
592 sz, sz->endpoint->bInterval);
593 sz->urb_in->transfer_dma = sz->dma_in;
594 sz->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
596 usb_set_intfdata(intf, sz);
598 streamzap_start_flush_timer(sz);
600 dev_info(sz->dev, "Registered %s on usb%d:%d\n", name,
606 kfifo_free(&sz->fifo);
608 usb_free_urb(sz->urb_in);
610 usb_free_coherent(usbdev, maxp, sz->buf_in, sz->dma_in);
612 kfree(sz);
629 struct streamzap_ir *sz = usb_get_intfdata(interface);
634 if (!sz)
637 if (sz->flush) {
638 sz->flush = false;
639 del_timer_sync(&sz->flush_timer);
642 streamzap_stop_timer(sz);
644 sz->usbdev = NULL;
645 ir_input_unregister(sz->idev);
646 usb_kill_urb(sz->urb_in);
647 usb_free_urb(sz->urb_in);
648 usb_free_coherent(usbdev, sz->buf_in_len, sz->buf_in, sz->dma_in);
650 kfree(sz);
655 struct streamzap_ir *sz = usb_get_intfdata(intf);
657 if (sz->flush) {
658 sz->flush = false;
659 del_timer_sync(&sz->flush_timer);
662 streamzap_stop_timer(sz);
664 usb_kill_urb(sz->urb_in);
671 struct streamzap_ir *sz = usb_get_intfdata(intf);
673 if (sz->fifo_initialized)
674 kfifo_reset(&sz->fifo);
676 sz->flush_timer.expires = jiffies + HZ;
677 sz->flush = true;
678 add_timer(&sz->flush_timer);
680 if (usb_submit_urb(sz->urb_in, GFP_ATOMIC)) {
681 dev_err(sz->dev, "Error sumbiting urb\n");