Lines Matching +full:pulse +full:- +full:code

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2010-2012 by Bruno Prémont <bonbons@linux-vserver.org> *
11 #include <linux/hid-debug.h>
13 #include "hid-ids.h"
28 #include <media/rc-core.h>
30 #include "hid-picolcd.h"
41 spin_lock_irqsave(&data->lock, flags); in picolcd_raw_cir()
42 if (!data->rc_dev || (data->status & PICOLCD_CIR_SHUN)) { in picolcd_raw_cir()
43 spin_unlock_irqrestore(&data->lock, flags); in picolcd_raw_cir()
46 spin_unlock_irqrestore(&data->lock, flags); in picolcd_raw_cir()
48 /* PicoLCD USB packets contain 16-bit intervals in network order, in picolcd_raw_cir()
49 * with value negated for pulse. Intervals are in microseconds. in picolcd_raw_cir()
51 * Note: some userspace LIRC code for PicoLCD says negated values in picolcd_raw_cir()
52 * for space - is it a matter of IR chip? (pulse for my TSOP2236) in picolcd_raw_cir()
55 * interval for non-first report of IR data - thus the quirk below in picolcd_raw_cir()
58 sz = size > 0 ? min((int)raw_data[0], size-1) : 0; in picolcd_raw_cir()
61 rawir.pulse = !!(w & 0x8000); in picolcd_raw_cir()
62 rawir.duration = rawir.pulse ? (65536 - w) : w; in picolcd_raw_cir()
63 /* Quirk!! - see above */ in picolcd_raw_cir()
65 rawir.duration -= 15000; in picolcd_raw_cir()
66 ir_raw_event_store(data->rc_dev, &rawir); in picolcd_raw_cir()
68 ir_raw_event_handle(data->rc_dev); in picolcd_raw_cir()
75 struct picolcd_data *data = dev->priv; in picolcd_cir_open()
78 spin_lock_irqsave(&data->lock, flags); in picolcd_cir_open()
79 data->status &= ~PICOLCD_CIR_SHUN; in picolcd_cir_open()
80 spin_unlock_irqrestore(&data->lock, flags); in picolcd_cir_open()
86 struct picolcd_data *data = dev->priv; in picolcd_cir_close()
89 spin_lock_irqsave(&data->lock, flags); in picolcd_cir_close()
90 data->status |= PICOLCD_CIR_SHUN; in picolcd_cir_close()
91 spin_unlock_irqrestore(&data->lock, flags); in picolcd_cir_close()
102 return -ENOMEM; in picolcd_init_cir()
104 rdev->priv = data; in picolcd_init_cir()
105 rdev->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER; in picolcd_init_cir()
106 rdev->open = picolcd_cir_open; in picolcd_init_cir()
107 rdev->close = picolcd_cir_close; in picolcd_init_cir()
108 rdev->device_name = data->hdev->name; in picolcd_init_cir()
109 rdev->input_phys = data->hdev->phys; in picolcd_init_cir()
110 rdev->input_id.bustype = data->hdev->bus; in picolcd_init_cir()
111 rdev->input_id.vendor = data->hdev->vendor; in picolcd_init_cir()
112 rdev->input_id.product = data->hdev->product; in picolcd_init_cir()
113 rdev->input_id.version = data->hdev->version; in picolcd_init_cir()
114 rdev->dev.parent = &data->hdev->dev; in picolcd_init_cir()
115 rdev->driver_name = PICOLCD_NAME; in picolcd_init_cir()
116 rdev->map_name = RC_MAP_RC6_MCE; in picolcd_init_cir()
117 rdev->timeout = MS_TO_US(100); in picolcd_init_cir()
118 rdev->rx_resolution = 1; in picolcd_init_cir()
123 data->rc_dev = rdev; in picolcd_init_cir()
133 struct rc_dev *rdev = data->rc_dev; in picolcd_exit_cir()
135 data->rc_dev = NULL; in picolcd_exit_cir()