@@ -61,6 +61,7 @@ static int prox_read_raw(struct iio_dev *indio_dev,
61
61
long mask )
62
62
{
63
63
struct prox_state * prox_state = iio_priv (indio_dev );
64
+ struct hid_sensor_hub_device * hsdev ;
64
65
int report_id = -1 ;
65
66
u32 address ;
66
67
int ret_type ;
@@ -75,6 +76,7 @@ static int prox_read_raw(struct iio_dev *indio_dev,
75
76
report_id = prox_state -> prox_attr .report_id ;
76
77
min = prox_state -> prox_attr .logical_minimum ;
77
78
address = HID_USAGE_SENSOR_HUMAN_PRESENCE ;
79
+ hsdev = prox_state -> common_attributes .hsdev ;
78
80
break ;
79
81
default :
80
82
report_id = -1 ;
@@ -84,11 +86,8 @@ static int prox_read_raw(struct iio_dev *indio_dev,
84
86
hid_sensor_power_state (& prox_state -> common_attributes ,
85
87
true);
86
88
* val = sensor_hub_input_attr_get_raw_value (
87
- prox_state -> common_attributes .hsdev ,
88
- HID_USAGE_SENSOR_PROX , address ,
89
- report_id ,
90
- SENSOR_HUB_SYNC ,
91
- min < 0 );
89
+ hsdev , hsdev -> usage , address , report_id ,
90
+ SENSOR_HUB_SYNC , min < 0 );
92
91
hid_sensor_power_state (& prox_state -> common_attributes ,
93
92
false);
94
93
} else {
@@ -191,10 +190,16 @@ static int prox_capture_sample(struct hid_sensor_hub_device *hsdev,
191
190
192
191
switch (usage_id ) {
193
192
case HID_USAGE_SENSOR_HUMAN_PRESENCE :
194
- prox_state -> human_presence = * (u32 * )raw_data ;
195
- ret = 0 ;
196
- break ;
197
- default :
193
+ switch (raw_len ) {
194
+ case 1 :
195
+ prox_state -> human_presence = * (u8 * )raw_data ;
196
+ return 0 ;
197
+ case 4 :
198
+ prox_state -> human_presence = * (u32 * )raw_data ;
199
+ return 0 ;
200
+ default :
201
+ break ;
202
+ }
198
203
break ;
199
204
}
200
205
@@ -244,7 +249,7 @@ static int hid_prox_probe(struct platform_device *pdev)
244
249
prox_state -> common_attributes .hsdev = hsdev ;
245
250
prox_state -> common_attributes .pdev = pdev ;
246
251
247
- ret = hid_sensor_parse_common_attributes (hsdev , HID_USAGE_SENSOR_PROX ,
252
+ ret = hid_sensor_parse_common_attributes (hsdev , hsdev -> usage ,
248
253
& prox_state -> common_attributes ,
249
254
prox_sensitivity_addresses ,
250
255
ARRAY_SIZE (prox_sensitivity_addresses ));
@@ -262,7 +267,7 @@ static int hid_prox_probe(struct platform_device *pdev)
262
267
263
268
ret = prox_parse_report (pdev , hsdev ,
264
269
(struct iio_chan_spec * )indio_dev -> channels ,
265
- HID_USAGE_SENSOR_PROX , prox_state );
270
+ hsdev -> usage , prox_state );
266
271
if (ret ) {
267
272
dev_err (& pdev -> dev , "failed to setup attributes\n" );
268
273
return ret ;
@@ -291,8 +296,8 @@ static int hid_prox_probe(struct platform_device *pdev)
291
296
prox_state -> callbacks .send_event = prox_proc_event ;
292
297
prox_state -> callbacks .capture_sample = prox_capture_sample ;
293
298
prox_state -> callbacks .pdev = pdev ;
294
- ret = sensor_hub_register_callback (hsdev , HID_USAGE_SENSOR_PROX ,
295
- & prox_state -> callbacks );
299
+ ret = sensor_hub_register_callback (hsdev , hsdev -> usage ,
300
+ & prox_state -> callbacks );
296
301
if (ret < 0 ) {
297
302
dev_err (& pdev -> dev , "callback reg failed\n" );
298
303
goto error_iio_unreg ;
@@ -314,7 +319,7 @@ static int hid_prox_remove(struct platform_device *pdev)
314
319
struct iio_dev * indio_dev = platform_get_drvdata (pdev );
315
320
struct prox_state * prox_state = iio_priv (indio_dev );
316
321
317
- sensor_hub_remove_callback (hsdev , HID_USAGE_SENSOR_PROX );
322
+ sensor_hub_remove_callback (hsdev , hsdev -> usage );
318
323
iio_device_unregister (indio_dev );
319
324
hid_sensor_remove_trigger (indio_dev , & prox_state -> common_attributes );
320
325
@@ -326,6 +331,10 @@ static const struct platform_device_id hid_prox_ids[] = {
326
331
/* Format: HID-SENSOR-usage_id_in_hex_lowercase */
327
332
.name = "HID-SENSOR-200011" ,
328
333
},
334
+ {
335
+ /* Format: HID-SENSOR-tag-usage_id_in_hex_lowercase */
336
+ .name = "HID-SENSOR-LISS-0226" ,
337
+ },
329
338
{ /* sentinel */ }
330
339
};
331
340
MODULE_DEVICE_TABLE (platform , hid_prox_ids );
0 commit comments