brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · 1c91be8 Raw
82 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * AMD MP2 Sensors transport driver4 *5 * Copyright 2020-2021 Advanced Micro Devices, Inc.6 * Authors: Nehal Bakulchandra Shah <Nehal-bakulchandra.shah@amd.com>7 *	    Sandeep Singh <sandeep.singh@amd.com>8 *	    Basavaraj Natikar <Basavaraj.Natikar@amd.com>9 */10 11#ifndef AMDSFH_HID_H12#define AMDSFH_HID_H13 14#define MAX_HID_DEVICES		615#define AMD_SFH_HID_VENDOR	0x102216#define AMD_SFH_HID_PRODUCT	0x000117 18struct 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 27struct amd_input_data {28	u32 *sensor_virt_addr[MAX_HID_DEVICES];29	u8 *input_report[MAX_HID_DEVICES];30};31 32struct 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 data61 * @index:		Device index in the order of enumeration62 * @request_done:	Get Feature/Input report complete flag63 *			used during get/set request from hid core64 * @cli_data:		Link to the client instance65 * @hid_wait:		Completion waitq66 *67 * Used to tie hid->driver data to driver client instance68 */69struct 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 */76int amdtp_hid_probe(u32 cur_hid_dev, struct amdtp_cl_data *cli_data);77void amdtp_hid_remove(struct amdtp_cl_data *cli_data);78int amd_sfh_get_report(struct hid_device *hid, int report_id, int report_type);79void amd_sfh_set_report(struct hid_device *hid, int report_id, int report_type);80void amdtp_hid_wakeup(struct hid_device *hid);81#endif82