alder_lake_bios/Intel/AlderLake/ClientOneSiliconPkg/IpBlock/Thc/ThcDriver/ThcHid.h

144 lines
5.3 KiB
C

/** @file
Touch Host Controller Human Interface Device API
@copyright
INTEL CONFIDENTIAL
Copyright 2019 - 2021 Intel Corporation.
The source code contained or described herein and all documents related to the
source code ("Material") are owned by Intel Corporation or its suppliers or
licensors. Title to the Material remains with Intel Corporation or its suppliers
and licensors. The Material may contain trade secrets and proprietary and
confidential information of Intel Corporation and its suppliers and licensors,
and is protected by worldwide copyright and trade secret laws and treaty
provisions. No part of the Material may be used, copied, reproduced, modified,
published, uploaded, posted, transmitted, distributed, or disclosed in any way
without Intel's prior express written permission.
No license under any patent, copyright, trade secret or other intellectual
property right is granted to or conferred upon you by disclosure or delivery
of the Materials, either expressly, by implication, inducement, estoppel or
otherwise. Any license under such intellectual property rights must be
express and approved by Intel in writing.
Unless otherwise agreed by Intel in writing, you may not remove or alter
this notice or any other notice embedded in Materials by Intel or
Intel's suppliers or licensors in any way.
This file contains an 'Intel Peripheral Driver' and is uniquely identified as
"Intel Reference Module" and is licensed for Intel CPUs and chipsets under
the terms of your license agreement with Intel or your vendor. This file may
be modified by the user, subject to additional terms of the license agreement.
@par Specification Reference:
**/
#ifndef _THC_HID_H_
#define _THC_HID_H_
#include "ThcPrivate.h"
/**
Performs SetFeature function as described in Human Interface Device specification.
@param[in] This Pointer to instance of protocol.
@param[in] Length Size of buffer.
@param[in] Buffer On input, contains ReportId in 1st byte. On output, filled with Feature data from external device.
@param[in] Timeout 0 - No timeout, do not wait for response
1 or higher - will wait for that amount of time and copy response results to the same buffer.
@retval EFI_NOT_READY THC is not ready
@retval EFI_ALREADY_STARTED HID transaction is still active
@retval EFI_NOT_AVAILABLE_YET THC read transaction is ongoing
@retval EFI_TIMEOUT a) Response did not come in time OR
b) DMA transaction did not finish in time
@retval EFI_BUFFER_TOO_SMALL THC DMA buffer is unable to fit that much data
@retval EFI_SUCCESS Set feature completed
**/
EFI_STATUS
EFIAPI
HidSetFeature (
IN THC_PROTOCOL *This,
IN UINT32 Length,
IN OUT UINT8 *Buffer,
IN UINTN Timeout
);
/**
Performs GetFeature function as described in Human Interface Device specification.
@param[in] This Pointer to instance of protocol.
@param[in] Length Size of buffer.
@param[in] Buffer On input, contains ReportId in 1st byte. On output, filled with Feature data from external device.
@param[in] Timeout 0 - No timeout, do not wait for response
1 or higher - will wait for that amount of time and copy response results to the same buffer.
@retval EFI_NOT_READY THC is not ready
@retval EFI_ALREADY_STARTED HID transaction is still active
@retval EFI_NOT_AVAILABLE_YET THC read transaction is ongoing
@retval EFI_TIMEOUT a) Response did not come in time OR
b) DMA transaction did not finish in time
@retval EFI_BUFFER_TOO_SMALL THC DMA buffer is unable to fit that much data
@retval EFI_SUCCESS Get feature completed
**/
EFI_STATUS
EFIAPI
HidGetFeature (
IN THC_PROTOCOL *This,
IN UINT32 Length,
IN OUT UINT8 *Buffer,
IN UINTN Timeout
);
/**
Enables end point device.
- Reads all Touch Panels devices registers
- Sets TouchEnable
@param[in] This Pointer to instance of protocol.
@retval EFI_SUCCESS Enabling completed
@retval EFI_DEVICE_ERROR TSSDONE not set or ERR set
@retval EFI_TIMEOUT Timeout
**/
EFI_STATUS
EFIAPI
HidEnableAfterReset (
IN THC_PROTOCOL *This
);
/**
Parses HID Descriptor and creates Report Tables
@param[in] ThcDev Context of Thc device
@param[in] Descriptor Pointer to the descriptor
@param[in] DescriptorLength Size of the descriptor to parse
**/
VOID
HidParseDescriptor (
IN THC_DEV *ThcDev,
IN UINT8 *Descriptor,
IN UINT32 DescriptorLength
);
/*
This function uses dictionaries to parse incoming InputReport and convert it into X/Y coordinates plus Button info.
@param[in] ReportTable Report Table with all supported HID reports
@param[in] InputStream Pointer to the HID report
@param[in] Output Result X/Y/B data
@param[in] MinMax X/Y Min and Max data
@retval EFI_SUCCESS Parsing completed
@retval EFI_NOT_FOUND Corresponding Report ID was not found in the Report Table.
*/
EFI_STATUS
HidParseInput (
IN HID_INPUT_REPORT_TABLE ReportTable,
IN UINT8 *InputStream,
IN HID_TOUCH_OUTPUT *Output,
IN HID_XY_BOUNDARY *MinMax
);
#endif // _THC_HID_H_