/** @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_