amd_sfh_hid_desc.h (2935B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * HID report descriptors, structures and routines 4 * Copyright 2020-2021 Advanced Micro Devices, Inc. 5 * Authors: Nehal Bakulchandra Shah <Nehal-bakulchandra.shah@amd.com> 6 * Sandeep Singh <Sandeep.singh@amd.com> 7 * Basavaraj Natikar <Basavaraj.Natikar@amd.com> 8 */ 9 10#ifndef AMD_SFH_HID_DESCRIPTOR_H 11#define AMD_SFH_HID_DESCRIPTOR_H 12 13enum desc_type { 14 /* Report descriptor name */ 15 descr_size = 1, 16 input_size, 17 feature_size, 18}; 19 20struct common_feature_property { 21 /* common properties */ 22 u8 report_id; 23 u8 connection_type; 24 u8 report_state; 25 u8 power_state; 26 u8 sensor_state; 27 u32 report_interval; 28} __packed; 29 30struct common_input_property { 31 /* common properties */ 32 u8 report_id; 33 u8 sensor_state; 34 u8 event_type; 35} __packed; 36 37struct accel3_feature_report { 38 struct common_feature_property common_property; 39 /* properties specific to this sensor */ 40 u16 accel_change_sesnitivity; 41 s16 accel_sensitivity_max; 42 s16 accel_sensitivity_min; 43} __packed; 44 45struct accel3_input_report { 46 struct common_input_property common_property; 47 /* values specific to this sensor */ 48 int in_accel_x_value; 49 int in_accel_y_value; 50 int in_accel_z_value; 51 /* include if required to support the "shake" event */ 52 u8 in_accel_shake_detection; 53} __packed; 54 55struct gyro_feature_report { 56 struct common_feature_property common_property; 57 /* properties specific to this sensor */ 58 u16 gyro_change_sesnitivity; 59 s16 gyro_sensitivity_max; 60 s16 gyro_sensitivity_min; 61} __packed; 62 63struct gyro_input_report { 64 struct common_input_property common_property; 65 /* values specific to this sensor */ 66 int in_angel_x_value; 67 int in_angel_y_value; 68 int in_angel_z_value; 69} __packed; 70 71struct magno_feature_report { 72 struct common_feature_property common_property; 73 /*properties specific to this sensor */ 74 u16 magno_headingchange_sensitivity; 75 s16 heading_min; 76 s16 heading_max; 77 u16 flux_change_sensitivity; 78 s16 flux_min; 79 s16 flux_max; 80} __packed; 81 82struct magno_input_report { 83 struct common_input_property common_property; 84 int in_magno_x; 85 int in_magno_y; 86 int in_magno_z; 87 int in_magno_accuracy; 88} __packed; 89 90struct als_feature_report { 91 struct common_feature_property common_property; 92 /* properties specific to this sensor */ 93 u16 als_change_sesnitivity; 94 s16 als_sensitivity_max; 95 s16 als_sensitivity_min; 96} __packed; 97 98struct als_input_report { 99 struct common_input_property common_property; 100 /* values specific to this sensor */ 101 int illuminance_value; 102} __packed; 103 104struct hpd_feature_report { 105 struct common_feature_property common_property; 106} __packed; 107 108struct hpd_input_report { 109 struct common_input_property common_property; 110 /* values specific to human presence sensor */ 111 u8 human_presence; 112} __packed; 113 114int get_report_descriptor(int sensor_idx, u8 rep_desc[]); 115u32 get_descr_sz(int sensor_idx, int descriptor_name); 116u8 get_feature_report(int sensor_idx, int report_id, u8 *feature_report); 117#endif