Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/drivers/hid/amd-sfh-hid/amd_sfh_hid.h
26282 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/*
3
* AMD MP2 Sensors transport driver
4
*
5
* Copyright 2020-2021 Advanced Micro Devices, Inc.
6
* Authors: Nehal Bakulchandra Shah <[email protected]>
7
* Sandeep Singh <[email protected]>
8
* Basavaraj Natikar <[email protected]>
9
*/
10
11
#ifndef AMDSFH_HID_H
12
#define AMDSFH_HID_H
13
14
#define MAX_HID_DEVICES 7
15
#define AMD_SFH_HID_VENDOR 0x1022
16
#define AMD_SFH_HID_PRODUCT 0x0001
17
18
struct request_list {
19
struct hid_device *hid;
20
struct list_head list;
21
u8 report_id;
22
u8 sensor_idx;
23
u8 report_type;
24
u8 current_index;
25
};
26
27
struct amd_input_data {
28
u32 *sensor_virt_addr[MAX_HID_DEVICES];
29
u8 *input_report[MAX_HID_DEVICES];
30
};
31
32
struct amdtp_cl_data {
33
u8 init_done;
34
u32 cur_hid_dev;
35
bool is_any_sensor_enabled;
36
u32 hid_dev_count;
37
u32 num_hid_devices;
38
struct device_info *hid_devices;
39
u8 *report_descr[MAX_HID_DEVICES];
40
int report_descr_sz[MAX_HID_DEVICES];
41
struct hid_device *hid_sensor_hubs[MAX_HID_DEVICES];
42
u8 *hid_descr[MAX_HID_DEVICES];
43
int hid_descr_size[MAX_HID_DEVICES];
44
phys_addr_t phys_addr_base;
45
dma_addr_t sensor_dma_addr[MAX_HID_DEVICES];
46
u32 sensor_sts[MAX_HID_DEVICES];
47
u32 sensor_requested_cnt[MAX_HID_DEVICES];
48
u8 report_type[MAX_HID_DEVICES];
49
u8 report_id[MAX_HID_DEVICES];
50
u8 sensor_idx[MAX_HID_DEVICES];
51
u8 *feature_report[MAX_HID_DEVICES];
52
u8 request_done[MAX_HID_DEVICES];
53
struct amd_input_data *in_data;
54
struct delayed_work work;
55
struct delayed_work work_buffer;
56
struct request_list req_list;
57
};
58
59
/**
60
* struct amdtp_hid_data - Per instance HID data
61
* @index: Device index in the order of enumeration
62
* @request_done: Get Feature/Input report complete flag
63
* used during get/set request from hid core
64
* @cli_data: Link to the client instance
65
* @hid_wait: Completion waitq
66
*
67
* Used to tie hid->driver data to driver client instance
68
*/
69
struct amdtp_hid_data {
70
int index;
71
struct amdtp_cl_data *cli_data;
72
wait_queue_head_t hid_wait;
73
};
74
75
/* Interface functions between HID LL driver and AMD SFH client */
76
int amdtp_hid_probe(u32 cur_hid_dev, struct amdtp_cl_data *cli_data);
77
void amdtp_hid_remove(struct amdtp_cl_data *cli_data);
78
int amd_sfh_get_report(struct hid_device *hid, int report_id, int report_type);
79
void amd_sfh_set_report(struct hid_device *hid, int report_id, int report_type);
80
void amdtp_hid_wakeup(struct hid_device *hid);
81
#endif
82
83