diff options
author | Jiri Kosina <jkosina@suse.cz> | 2014-02-17 08:15:48 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2014-02-17 08:15:48 -0500 |
commit | 4a76d370f0c0508b5d6580d15eae3d40b47d837c (patch) | |
tree | ae833ae8048e3fdaaf7b67563bdad308dc605ae3 | |
parent | 6fad42d5fb42ffcf665634591ad4d9531536eb44 (diff) |
HID: uhid: remove uhid_hid_get_raw()
This function is now unused since cafebc058bf8 ("HID: remove
hid_get_raw_report in struct hid_device").
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/uhid.c | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c index 12439e1eeae2..89de2fef46b2 100644 --- a/drivers/hid/uhid.c +++ b/drivers/hid/uhid.c | |||
@@ -123,89 +123,6 @@ static int uhid_hid_parse(struct hid_device *hid) | |||
123 | return hid_parse_report(hid, uhid->rd_data, uhid->rd_size); | 123 | return hid_parse_report(hid, uhid->rd_data, uhid->rd_size); |
124 | } | 124 | } |
125 | 125 | ||
126 | static int uhid_hid_get_raw(struct hid_device *hid, unsigned char rnum, | ||
127 | __u8 *buf, size_t count, unsigned char rtype) | ||
128 | { | ||
129 | struct uhid_device *uhid = hid->driver_data; | ||
130 | __u8 report_type; | ||
131 | struct uhid_event *ev; | ||
132 | unsigned long flags; | ||
133 | int ret; | ||
134 | size_t uninitialized_var(len); | ||
135 | struct uhid_feature_answer_req *req; | ||
136 | |||
137 | if (!uhid->running) | ||
138 | return -EIO; | ||
139 | |||
140 | switch (rtype) { | ||
141 | case HID_FEATURE_REPORT: | ||
142 | report_type = UHID_FEATURE_REPORT; | ||
143 | break; | ||
144 | case HID_OUTPUT_REPORT: | ||
145 | report_type = UHID_OUTPUT_REPORT; | ||
146 | break; | ||
147 | case HID_INPUT_REPORT: | ||
148 | report_type = UHID_INPUT_REPORT; | ||
149 | break; | ||
150 | default: | ||
151 | return -EINVAL; | ||
152 | } | ||
153 | |||
154 | ret = mutex_lock_interruptible(&uhid->report_lock); | ||
155 | if (ret) | ||
156 | return ret; | ||
157 | |||
158 | ev = kzalloc(sizeof(*ev), GFP_KERNEL); | ||
159 | if (!ev) { | ||
160 | ret = -ENOMEM; | ||
161 | goto unlock; | ||
162 | } | ||
163 | |||
164 | spin_lock_irqsave(&uhid->qlock, flags); | ||
165 | ev->type = UHID_FEATURE; | ||
166 | ev->u.feature.id = atomic_inc_return(&uhid->report_id); | ||
167 | ev->u.feature.rnum = rnum; | ||
168 | ev->u.feature.rtype = report_type; | ||
169 | |||
170 | atomic_set(&uhid->report_done, 0); | ||
171 | uhid_queue(uhid, ev); | ||
172 | spin_unlock_irqrestore(&uhid->qlock, flags); | ||
173 | |||
174 | ret = wait_event_interruptible_timeout(uhid->report_wait, | ||
175 | atomic_read(&uhid->report_done), 5 * HZ); | ||
176 | |||
177 | /* | ||
178 | * Make sure "uhid->running" is cleared on shutdown before | ||
179 | * "uhid->report_done" is set. | ||
180 | */ | ||
181 | smp_rmb(); | ||
182 | if (!ret || !uhid->running) { | ||
183 | ret = -EIO; | ||
184 | } else if (ret < 0) { | ||
185 | ret = -ERESTARTSYS; | ||
186 | } else { | ||
187 | spin_lock_irqsave(&uhid->qlock, flags); | ||
188 | req = &uhid->report_buf.u.feature_answer; | ||
189 | |||
190 | if (req->err) { | ||
191 | ret = -EIO; | ||
192 | } else { | ||
193 | ret = 0; | ||
194 | len = min(count, | ||
195 | min_t(size_t, req->size, UHID_DATA_MAX)); | ||
196 | memcpy(buf, req->data, len); | ||
197 | } | ||
198 | |||
199 | spin_unlock_irqrestore(&uhid->qlock, flags); | ||
200 | } | ||
201 | |||
202 | atomic_set(&uhid->report_done, 1); | ||
203 | |||
204 | unlock: | ||
205 | mutex_unlock(&uhid->report_lock); | ||
206 | return ret ? ret : len; | ||
207 | } | ||
208 | |||
209 | static int uhid_hid_output_raw(struct hid_device *hid, __u8 *buf, size_t count, | 126 | static int uhid_hid_output_raw(struct hid_device *hid, __u8 *buf, size_t count, |
210 | unsigned char report_type) | 127 | unsigned char report_type) |
211 | { | 128 | { |