0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef AMDSFH_HID_H
0012 #define AMDSFH_HID_H
0013
0014 #define MAX_HID_DEVICES 5
0015 #define AMD_SFH_HID_VENDOR 0x1022
0016 #define AMD_SFH_HID_PRODUCT 0x0001
0017
0018 struct request_list {
0019 struct hid_device *hid;
0020 struct list_head list;
0021 u8 report_id;
0022 u8 sensor_idx;
0023 u8 report_type;
0024 u8 current_index;
0025 };
0026
0027 struct amd_input_data {
0028 u32 *sensor_virt_addr[MAX_HID_DEVICES];
0029 u8 *input_report[MAX_HID_DEVICES];
0030 };
0031
0032 struct amdtp_cl_data {
0033 u8 init_done;
0034 u32 cur_hid_dev;
0035 u32 hid_dev_count;
0036 u32 num_hid_devices;
0037 struct device_info *hid_devices;
0038 u8 *report_descr[MAX_HID_DEVICES];
0039 int report_descr_sz[MAX_HID_DEVICES];
0040 struct hid_device *hid_sensor_hubs[MAX_HID_DEVICES];
0041 u8 *hid_descr[MAX_HID_DEVICES];
0042 int hid_descr_size[MAX_HID_DEVICES];
0043 phys_addr_t phys_addr_base;
0044 dma_addr_t sensor_dma_addr[MAX_HID_DEVICES];
0045 u32 sensor_sts[MAX_HID_DEVICES];
0046 u32 sensor_requested_cnt[MAX_HID_DEVICES];
0047 u8 report_type[MAX_HID_DEVICES];
0048 u8 report_id[MAX_HID_DEVICES];
0049 u8 sensor_idx[MAX_HID_DEVICES];
0050 u8 *feature_report[MAX_HID_DEVICES];
0051 u8 request_done[MAX_HID_DEVICES];
0052 struct amd_input_data *in_data;
0053 struct delayed_work work;
0054 struct delayed_work work_buffer;
0055 struct request_list req_list;
0056 };
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 struct amdtp_hid_data {
0069 int index;
0070 struct amdtp_cl_data *cli_data;
0071 wait_queue_head_t hid_wait;
0072 };
0073
0074
0075 void hid_amdtp_set_feature(struct hid_device *hid, char *buf, u32 len, int report_id);
0076 void hid_amdtp_get_report(struct hid_device *hid, int report_id, int report_type);
0077 int amdtp_hid_probe(u32 cur_hid_dev, struct amdtp_cl_data *cli_data);
0078 void amdtp_hid_remove(struct amdtp_cl_data *cli_data);
0079 int amd_sfh_get_report(struct hid_device *hid, int report_id, int report_type);
0080 void amd_sfh_set_report(struct hid_device *hid, int report_id, int report_type);
0081 void amdtp_hid_wakeup(struct hid_device *hid);
0082 #endif